Thursday, April 23, 2020

Godot : 2D & 3D Game Engine



MIT ലൈസൻസിന് കീഴിൽ പുറത്തിറക്കിയ ഒരു ഓപ്പൺസോഴ്‍സ് ഗയിം എഞ്ചിനാണ് Godot. ഇതിൽ ദ്വിമാനവും ത്രിമാനവുമായ ( 2D & 3D ) ഗയിമുകൾ നിർമ്മിക്കാൻ സാധിക്കും. Linux, Mac OS, Windows തുടങ്ങിയ ഓപ്പറേറ്റിംഗ് സിസ്‍റ്റങ്ങളിൽ ഉപയോഗിക്കാവുന്ന Godot സോഫ്റ്റ്‍വെയറുകൾ ലഭ്യമാണ്.

godotengine.org എന്ന സൈറ്റിൽ നിന്നും സോഫ്‍റ്റ്‍വെയർ ഡൗൺലോഡ് ചെയ്ത് ഉപയോഗിക്കാം. ഡൗൺലോഡ് ചെയ്യുമ്പോൾ ലഭിക്കുന്ന Godot_v3.2.1-stable_x11.64.zip ഫയൽ Extract ചെയ്യുക. Extract ചെയ്യുമ്പോൾ ലഭിക്കുന്ന ഫയലിൽ (Godot_v3.2.1-stable_x11.64) ഡബിൾ ക്ലിക്ക് ചെയ്യുന്നതോടെ സോഫ്‍റ്റ്‍വയർ പ്രവർത്തനസജ്ജമാകും. തുറന്നുവന്നിരിക്കുന്ന ജാലകം വീക്ഷിക്കുക.

Wednesday, June 22, 2016

Maths Quiz in Python


ഉപയോക്താവിനോട് പേര്  നല്‍കാന്‍ ആവശ്യപ്പെടുകയും  ( Enter your name ), പേര് കിട്ടിക്കഴിഞ്ഞാല്‍ ആ പേരുവച്ച് ഹായ് പറയുകയും ഗണിത ശാസ്‌ത്ര ക്വിസ്സിലേക്ക് സ്വാഗതം ചെയ്യുകയും ചെയ്‌ത ശേഷം  (Welcome To  Mathematics Quiz)  ചതുഷ്‌ക്രിയകള്‍ ഉള്‍പ്പെടുന്ന പ്രശ്‌നങ്ങള്‍ ഒന്നിനു പുറകെ ഒന്നായി വരുന്ന ഒരു പ്രോഗ്രാം പൈത്തണ്‍ ഫ്രോഗ്രാമിഗ് ഭാഷ ഉപയോഗിച്ചുകൊണ്ട് എങ്ങനെ തയ്യാറാക്കാം എന്നു പരിശീലിക്കാം.

random എന്ന module  ഉപയോഗപ്പെടുത്തിക്കോണ്ടാണ് ഈ പ്രോഗ്രാം തയ്യാറാക്കുന്നത്.

താഴെ നല്‍കിയിരിക്കുന്ന പൈത്തണ്‍ നിര്‍ദ്ദേശങ്ങള്‍  IDLE 3 തുറന്ന് എഡിറ്റര്‍ ജാലകത്തില്‍ ടൈപ്പ് ചെയ‌ത്  സേവ് ചെയ്തതിനുശേഷം പ്രവര്‍ത്തിപ്പിച്ചു നോക്കൂ.



    %d will format a number for display.
%s will insert the presentation string representation of the object

തുക(+)യ്ക്കു  പകരം ഗുണനം(*), വ്യത്യാസം(-), ഹരണം(/) തുടങ്ങിയ ക്രിയകള്‍ പരിശീലിക്കുന്നതിനുള്ള പ്രോഗ്രാമുകളും തയ്യാറാക്കി നോക്കൂ.

താഴെ നല്‍കിയിരിക്കുന്ന പൈത്തണ്‍ നിര്‍ദ്ദേശങ്ങള്‍  IDLE 3 തുറന്ന് എഡിറ്റര്‍ ജാലകത്തില്‍ ടൈപ്പ് ചെയ‌ത്  സേവ് ചെയ്തതിനുശേഷം പ്രവര്‍ത്തിപ്പിച്ചു നോക്കൂ. ചതുഷ് ക്രിയകള്‍ ഉള്‍ക്കെള്ളുന്ന ഒരു പ്രോഗ്രാം ലഭിക്കുന്നില്ലേ ?
(IDLE 3  ഉപയോഗിക്കിന്നതിനു പകരമായി  gedit  ടെക്‌സ്‌റ്റ് എഡിറ്റര്‍ സോഫ്‌റ്റ്‌വെയറില്‍ ടൈപ്പ് ചെയ‌ത്  സേവ് ചെയ്തതിനുശേഷം  ടെര്‍മിനലില്‍ “ python3  ഫയല്‍ "നാമം നല്‍കി Enter കി പ്രസ്സ് ചെയ്‌തും പ്രോഗ്രാം പ്രവര്‍ത്തിപ്പിക്കാവുന്നതാണ്. )



Monday, April 27, 2015

Lesson 16 : Making a Game using Scratch






presentation mode ലേക്ക് മാറി (full screen ആക്കിയതിനുശേഷം) green ബട്ടണില്‍ click ചെയ്യുന്നതോടെ ഗെയിം ആരംഭിക്കും. Red കളറില്‍ കാണുന്ന Bricks കളില്‍ Ball (Green കളറില്‍ കാണുന്ന വൃത്തം) വന്നു തട്ടുമ്പോള്‍ അവ അപ്രത്യക്ഷമാകും.   Ball താഴേക്ക് വരുമ്പോള്‍ Yellow  കളറില്‍ കാണുന്ന പ്രതലത്തില്‍ (Ground) തട്ടുന്നതിനു മുമ്പ് Blue  കളറില്‍ കാണുന്ന ബാറ്റുകൊണ്ട്  കീ ബോര്‍ഡിലെ ആരോ കീ കളുപയോഗിച്ച്  Ball നെ തടയണം.   Ball Yellow  കളറില്‍ കാണുന്ന പ്രതലത്തില്‍ തട്ടിയാല്‍ നിങ്ങള്‍ കളിയില്‍ പരാജയപ്പെട്ടു.    Red കളറില്‍ കാണുന്ന എല്ലാ Bricks കളേയും അപ്രത്യക്ഷമാക്കിയാല്‍ നിങ്ങള്‍ കളിയില്‍ ജയിച്ചു.

    ഈ ഗെയിം Scratch സോഫ്‌റ്റ്‌വെയര്‍ ഉപയോഗിച്ച്  തയ്യാറാക്കുന്ന തെങ്ങനെയെന്ന് നോക്കാം.

Section 1:




Step1. Scratch സോഫ്റ്റ്‌വെയര്‍ തുറന്ന് Stage ല്‍ കാണുന്ന Sprite1 നെ delete ചെയ്യാം.(Right click on Sprite1 --> delete)


Step2.  Paint new sprite സെലക്‌ട് ചെയ്താല്‍ ചിത്രങ്ങള്‍ വരയ്ക്കുന്നതിനുള്ള Paint Editor ജാലകം തുറന്നുവരും. 


Rectangle ടൂള്‍ സെലക്‌ട് ചെയ്ത് ഒരു ചതുരം വരച്ച് OK ബട്ടണില്‍ ക്ലിക്ക് ചെയ്താല്‍ sprite1 എന്ന പേരോടുകൂടിയ ചതുരം സ്റ്റേജില്‍ വന്നിട്ടുണ്ടാകും.    ഇതുപോലെ നമുക്കാവശ്യമായ ഒബ്‌ജക്‌ടുകള്‍ സ്‌റ്റേജില്‍ ഒരുക്കി വയ്ക്കാം.  ഇവയ്ക്ക് അനുയോജ്യമായ പേരുകളും നല്‍കാം.

sprite 1 :  Yellow colour rectangle : Ground
sprite 2 :  Blue colour rectangle     : Bat
sprite 3 :  Green colour circle         : Ball
sprite 4 :  Red colour rectangle       : Brick 1




Step 3.  Block Palette --> Variables -->  Make a variable --> Variable name (speed) --> OK


Key Board ലെ ആരോ കീ കള്‍ (Left and Right arrow keys)  Press ചെയ്യുമ്പോള്‍ Bat (sprite 2 : Blue colour rectangle ) എന്ന ചതുരമാണ് ഇടത്തോട്ടും വലത്തോട്ടും നീങ്ങേണ്ടത്.  അതിനുള്ള പ്രോഗ്രമാണ് തയ്യാറാക്കേണ്ടത്.


Step 4.  sprite 2 സെലക്‌ട് ചെയ്തതിനു ശേഷം Block Palette ലെ Control ബ്ലോക്ക് സെലക്ട് ചെയ്‌ത് when clicked ബ്ലോക്കിനെ Script Editor ജാലകത്തിലേക്ക് വലിച്ചിടുക. (ഏത് sprite നേയാണ് സെലക്‌ട് ചെയ്തിരിക്കുന്നതെന്ന് സ്റ്റോജിനു താഴെയുള്ള ജാലകത്തില്‍ നിന്നും വ്യക്തമാകും)
Variables ബ്ലോക്ക് സെലക്ട് ചെയ്‌ത്  set speed to 0 ബ്ലോക്കിനേയും താഴെ കാണിച്ചിരിക്കുന്ന രീതിയില്‍ ക്രമീകരിക്കുക.


Step 5. control ബ്ലോക്കില്‍  നിന്നും forever, if else, if എന്നീ ബ്ലോക്കുകള്‍ script വിന്‍ഡോയിലേക്ക് drag ചെയ്ത് , forever ബ്ലോക്കിനുള്ളില്‍‌ if else ബ്ലോക്കും, if else ലെ  else നുള്ളിലായി  if ബ്ലോക്കും ക്രമീകരിക്കുക.


Step 6.  Sensing ബ്ലോക്കില്‍  നിന്നും key space pressed നെ drag ചെയ്ത് if else ലെ if നു നേരെയുള്ള ബോക്സില്‍ വെച്ചതിനുശേഷം space എന്നതിനു പകരം right  arrow സെലക്‌ട് ചെയ്യുക.

Step7.  Variables ബ്ലോക്കില്‍  നിന്നും change speed by 1 നെ drag ചെയ്ത് ചിത്രത്തില്‍ കാണുന്ന രീതിയില്‍ ക്രമീകരിക്കുക.

Step 8.  Operators ബ്ലോക്കില്‍  നിന്നും > (greater than) ബ്ലോക്ക് സെലക്‌ട് ചെയ്‌ത്  അതില്‍ speed > 0 എന്ന് നല്‍കിയ ശേഷം രണ്ടാമത്തെ if നു നേരെയുള്ള ബോക്സില്‍ വെക്കുക (speed എന്നതിനെ Variables ബ്ലോക്കില്‍ നിന്നും drag ചെയ്തെടുക്കണം).  താഴെ change speed by -1 നല്‍കുക.
Step 9.  Control ബ്ലോക്കില്‍ നിന്നും wait 2 secs നേയും ഉള്‍പ്പെടുത്തുക.



Step 10.  Control ബ്ലോക്കില്‍ നിന്നും when clicked, forever എന്നിവ ഒരു തവണ കൂടി ഉള്‍പ്പെടുത്തി, forever എന്നതില്‍ Motion ബ്ലോക്കില്‍ നിന്നും change x by 10 ഉള്‍പ്പെടുത്തി , 10 നു പകരം Variables ലെ speed നെ ഉള്‍പ്പെടുത്തുക.


Step 11.  Stage നു മുകളിലുള്ള  green flag ല്‍ ക്ലിക്കു ചെയ്തതിനുശേഷം കീ ബോര്‍ഡിലെ Right arrow key പ്രസ്സ് ചെയ്തു നോക്കൂ.  Sprite1       (ചതുരം) വലത്തുട്ടു നീങ്ങുന്നില്ലേ. Left arrow key പ്രസ്സ് ചെയ്യുമ്പോള്‍ Sprite1(ചതുരം) ഇടത്തോട്ടു നീങ്ങാന്‍ ആദ്യം തയ്യാറാക്കിയ scripts കളുടെ duplicate എടുത്ത് അതിലെ വിലകള്‍ മാറ്റിയാല്‍ മതി.




Section 2:

Step 1.   Sprite 3 (Green colour circle: Ball) നെ സെലക്‌ട് ചെയ്‌തതിനുശേഷം,  Control ബ്ലോക്കില്‍ നിന്നും when clicked; Motion  ബ്ലോക്കില്‍ നിന്നും point in direction,  go to x:   y: എന്നിവ ഉള്‍പ്പെടുത്തുക.

Step 2.  Operators ബ്ലോക്കില്‍ നിന്നും pick random 1 to 10  drag ചെയ്‌ത് മുകളിലെ  x വിലയ്ക്കു നല്‍കുക.  ഇതില്‍ 1 to 10 എന്നതിനു പകരം -150 to 150 ഉം y വില15ഉം നല്‍കുക.

Step 3.  Control ബ്ലോക്കില്‍ നിന്നും wait 1 secs, forever എന്നിവ ഉള്‍പ്പെടുത്തി, forever എന്നതില്‍ Motion  ബ്ലോക്കില്‍ നിന്നും move 10 steps, if on edge bounce എന്നിവ കൂടി ഉള്‍പ്പെടുത്തിയതിനു ശേഷം Stage നു മുകളിലുള്ള  green flag ല്‍ ക്ലിക്കു ചെയ്തുനോക്കൂ.



ഇപ്പോള്‍ വൃത്തം (Sprite3 : Ball) എല്ലാ അരികിലും വന്ന് bounce ചെയ്‌തു പോകുന്നതായി കാണാം. എന്നാല്‍ നമ്മള്‍ ആദ്യം തയ്യാറാക്കിയ ചതുരത്തെ സ്പര്‍ശിക്കുന്നതായി കാണുന്നില്ല.

Step 4.  Control ബ്ലോക്കില്‍ നിന്നും when clicked, forever, if ഉള്‍പ്പെടുത്തുക.  Sensing ബ്ലോക്കില്‍ നിന്നും touching ഡ്രാഗ് ചെയ്‌ത് if  നു നേരെയുള്ള ബോക്സില്‍ ഉള്‍പ്പെടുത്തി അതില്‍ Bat (sprite2) നെ ഉള്‍പ്പെടുത്തുക.  Motion ബ്ലോക്കില്‍ നിന്നും point in direction ഡ്രാഗ് ചെയ്‌ത് if  നു താഴെ വയ്ക്കുക.  Operators ബ്ലോക്കില്‍ നിന്നും *, + (Multiplication, Addition) എന്നിവ ഡ്രാഗ് ചെയ്‌ത് അതില്‍ direction * -1 + 180 എന്ന് ഉള്‍പ്പടുത്തിയതിനു ശേഷം  point in direction ന്റെ വിലയായി നല്‍കുക.(ഇവിടെ direction എന്നത് Motion ബ്ലോക്കില്‍ നിന്നും സെലക്‌ട് ചെയ്യണം.).  


green flag ല്‍ ക്ലിക്കു ചെയ്‌ചതുനോക്കൂ.

Section 3:

Step 1.  Variables -->  Make a variable --> Variable name (score) --> OK

Step 2.  Sprite 4 (Red colour rectangle : Brick 1) നെ സെലക്‌ട് ചെയ്‌തതിനുശേഷം,  Control ബ്ലോക്കില്‍ നിന്നും when clicked; Looks ബ്ലോക്കില്‍ നിന്നും show എന്നിവ ഉള്‍പ്പെടുത്തുക. 

Step 3.  Control ബ്ലോക്കില്‍ നിന്നും forever, if എന്നിവ ഉള്‍പ്പെടുത്തിയതിനുശേഷം, Sensing ബ്ലോക്കില്‍ നിന്നും touching ഡ്രാഗ് ചെയ്‌ത് if  നു നേരെയുള്ള ബോക്സില്‍ ഉള്‍പ്പെടുത്തി അതില്‍ Ball നെ ഉള്‍പ്പെടുത്തുക. 

Step 4.  തുടര്‍ന്ന് Looks ബ്ലോക്കില്‍ നിന്ന് hide ഉം Variables ബ്ലോക്കില്‍ നിന്ന് chabge score by 1 ഉം ക്രമീകരിക്കുക.


Step 5.   Sprite 4 (Red colour rectangle : Brick 1) ന്റെ ധാരാളം ഡ്യൂപ്ലിക്കേറ്റുകള്‍ എടുക്കാം. ( Right click on Sprite 4 --> duplicate).  ഇവിടെ 9 ഡ്യൂപ്ലിക്കേറ്റുകള്‍ എടുത്തിട്ടുണ്ട്. ആകെ 10 കട്ടകള്‍ (Bricks)

Step 6. Sprite 2 (Bat) സെലക്‌ട് ചെയ്തതിനുശേഷം  താഴെ കൊടുത്ത സ്‌ക്രിപ്‌റ്റുുകള്‍ കൂടി നല്‍കുക.




Step 7.  Ground (sprite 1 :  Yellow colour rectangle) സെലക്‌ട് ചെയ്‌തതിനുശേഷം താഴെ കൊടുത്ത സ്‌ക്രിപ്‌റ്റുകള്‍ കൂടി നല്‍കുക.



Step 8.   Paint new sprite --> Text tool --> Type the text (You wins !!!!!  ) --> OK  (Sprite10)

Step 9.   Paint new sprite --> Text tool --> Type the text (You Failed.  Try Again....  ) --> OK   (Sprite11)

ഇപ്പോള്‍ സ്‌റ്റേജില്‍ പുതിയ രണ്ട് sprite കള്‍ (Sprite10, sprite11 : Text ) വന്നിട്ടുണ്ടാകും.


Step 10.  Select Sprite11 (You Wins  Text)  സെലക്‌ട് ചെയ്തതിനുശേഷം  താഴെ കൊടുത്ത സ്‌ക്രിപ്‌റ്റുകള്‍ കൂടി നല്‍കുക.


Step 11.  Select Sprite12 (You Failed  Text)  സെലക്‌ട് ചെയ്തതിനുശേഷം  താഴെ കൊടുത്ത സ്‌ക്രിപ്‌റ്റുകള്‍ കൂടി നല്‍കുക.

ഇതോടെ നമ്മുടെ  scratch ഗെയിം നിര്‍മ്മാണം പൂര്‍ത്തിയായി. presentation mode ലേക്ക് മാറി green ബട്ടണില്‍ click ചെയ്ത് ഗയിം പ്രവര്‍ത്തിപ്പിച്ചു നോക്കൂ.

Friday, April 27, 2012

Lesson 15_Pyton




താഴെ കൊടുത്തവ ഓരോന്നും gedit ലോ IDLE സോഫ്‌റ്റ്‌വെയറിലോ തയ്യാറാക്കി  save  ചെയ്‌ത ശേഷം പ്രവര്‍ത്തിപ്പിച്ചു നോക്കൂ. 

Program 1.



Program 2.





Program 3.




Program 4.



Program 5.



Program 6. 


 

Sunday, April 22, 2012

Lesson 14_Python

 കാല്‍ക്കുലേറ്റര്‍ നിര്‍മ്മാണം Python / wxGlade ഉപയോഗിച്ച്

 

1.  Applications → Programming → wxGlade Add a Frame
2.  Add a GridSizer (കഴിഞ്ഞ അധ്യായത്തില്‍ വിശദീകരിച്ചിട്ടുണ്ട്.) 
3.  ആവശ്യമായ ടോക്‌സ്റ്റ് ബോക്‌സുകളും ബട്ടണുകളും ഉള്‍പ്പെടുത്തുക.
    ( ഒരു ടക്‌സ്‌റ്റ് ബോക്‌സും 18 ബട്ടണുകളുമാണ്  ഉള്‍പ്പെടുത്തിയിരിക്കുന്നത്.)
4.  ടെക്‌സ്റ്റ് ബോക്‌സ് സെലക്‌ട് ചെയ്‌ത് Properties ജാലകത്തിലെ Common ടാബിലെtext_ctrl_1 എന്നതിനു പകരം മറ്റൊരു പേര്  x  എന്നു നല്‍കാം. 
5.  ഓരോ ബട്ടണും സെലക്‌ട് ചെയ്ത് Properties ജാലകത്തിലെ Widget ടാബിലെ Button_1, Button_2,..... തുടങ്ങിയവയ്ക്കു പകരം 1,2,........Add(+),Sub(-),....മുതയായവ നല്കുക. തുടര്‍ന്ന് Events ടാബ് സെലക്‌ട് ചെയ്‌ത് Handler എന്ന ഭാഗത്ത് ബട്ടണില്‍ ക്ലിക്കു ചെയ്യുമ്പോള്‍ പ്രവര്‍ത്തിക്കേണ്ട ഫങ്‌ഷന്റെ പേര് ചേര്‍ക്കണം.( click 1, click 2,.....,click9,click0,sum, minus, div.....എന്നിങ്ങനെയാണ് ഇവിടെ കൊടുത്തിരിക്കുന്നത്.)
6.  പൈത്തണ്‍ കോഡ് നിര്‍മ്മാണം :
wxGlade ജാലകത്തിലെ Applications ക്ലിക്കു ചെയ്യുക. അതിനു ശേഷം Properties ജാലകത്തില്‍ Language എന്നതില്‍ python സെലക്‌ട് ചെയ്‌ത് Output path ഓപ്‌ഷനു നേരെയുള്ള ബട്ടണില്‍ ക്ലിക്കു ചെയ‌ത് ആവശ്യമായ ഫോള്‍ഡര്‍ തെരഞ്ഞെടുത്ത് ഫയല്‍ നാമം നല്‍കി (calculator.py) Save വട്ടണില്‍ ക്ലിക്കു ചെയ്യുക. .py എന്ന എക്‌സ്‌റ്റന്‍ഷന്‍ നിര്‍ബന്ധമായും നല്‍കണം. തുടര്‍ന്ന് Generate Code ബട്ടണില്‍ ക്ലിക്കു ചെയ്യുക. Code generation completed successfully എന്ന ഒരു Information കാണാം. OK ബട്ടണില്‍ ക്ലിക്കു ചെയ്യുക. .wxg എന്ന എക്‌സ്‌റ്റന്‍ഷനോടുകൂടി ഈ പ്രോജക്ട് സേവ് ചെയ്യാം. (File--> Save) സേവ് ചെയ്‌തിരിക്കുന്ന പൈത്തണ്‍ ഫയല്‍ (calculator.py) gedit text editor ല്‍ തുറന്ന് താഴെ കൊടുത്തിരിക്കുന്ന മാറ്റങ്ങള്‍ വരുത്തുക.

click 1 ഫങ്‌ഷന്റെ കോഡു വരുന്ന ഭാഗത്ത് print "Event handler `click1' not implemented!" എന്നതിനു പകരം 
 
v = '1'
t = self.x.GetValue()
t = t + v
self.x.SetValue(t)
എന്നാണ് gedit text editor ല്‍ മാറ്റേണ്ടത്. ഇതുപോലെ മറ്റ് ബട്ടണുകളുമായി ബന്ധപ്പെട്ട (Numbers) അനുബന്ധ ടെക്‌സ്റ്റുകളും മാറ്റേണ്ടതാണ്. (v = '1' എന്നതിനു പകരം v = '2' എന്ന മാറ്റം മാത്രം വരുത്തിയാല്‍ മതിയാകും click 2 ഫങ്‌ഷന്റെ കോഡു വരുന്നതില്‍). ഇവിടെ x എന്നത്  ടെക്‌സ്റ്റ് ബോക്‌സിന്റെ പേരാണ്. v,t എന്നിവയ്ക്കു പകരം ഏതു പേരും നല്കാം.(v = '1' എന്നതിനു പകരം v = '+' എന്ന മാറ്റം മാത്രം വരുത്തിയാല്‍ മതിയാകും sum ഫങ്‌ഷന്റെ കോഡു വരുന്നതില്‍)

equals ഫങ്‌ഷന്റെ കോഡു വരുന്ന ഭാഗത്ത് print "Event handler `equals' not implemented!" എന്നതിനു പകരം താഴെ കൊടുത്തിരിക്കുന്ന രീതിയില്‍ മാറ്റം വരുത്തുക.
clear ഫങ്‌ഷന്റെ കോഡു വരുന്ന ഭാഗത്ത് print "Event handler `clear' not implemented!" എന്നതിനു പകരം താഴെ കൊടുത്തിരിക്കുന്ന രീതിയിലും മാറ്റം വരുത്തുക.


ഫയല്‍ സേവ് ചെയ്‌തതിനുശേഷം പ്രോഗ്രാം പ്രവര്‍ത്തിപ്പിച്ചു നോക്കൂ.

മറ്റൊരു വിധത്തില്‍


  1. Applications → Programming → wxGlade
  2. Add a Frame
  3. Add a GridSizer (കഴിഞ്ഞ അധ്യായത്തില്‍ വിശദീകരിച്ചിട്ടുണ്ട്.)
  4. ആവശ്യമായ ടോക്‌സ്റ്റ് ബോക്‌സുകളും ബട്ടണുകളും ഉള്‍പ്പെടുത്തുക.
  5. ഓരോ ടെക്‌സ്റ്റ് ബോക്‌സും സെലക്‌ട് ചെയ്‌ത് Properties ജാലകത്തിലെ Common ടാബിലെ text_ctrl_1, text_ctrl_2,text_ctrl_3 ,text_ctrl_4 എന്നിവയ്ക്കു പകരം മറ്റു പേരുകള്‍ x,y,z,a വേണമെങ്കില്‍ നല്‍കാം.
  6. ഓരോ ബട്ടണും സെലക്‌ട് ചെയ്ത് Properties ജാലകത്തിലെ Widget ടാബിലെ Button_1, Button_2,..... തുടങ്ങിയവയ്ക്കു പകരം 1,2,........+,-,/,....മുതയായവ നല്കുക. തുടര്‍ന്ന് Events ടാബ് സെലക്‌ട് ചെയ്‌ത് Handler എന്ന ഭാഗത്ത് ബട്ടണില്‍ ക്ലിക്കു ചെയ്യുമ്പോള്‍ പ്രവര്‍ത്തിക്കേണ്ട ഫങ്‌ഷന്റെ പേര് ചേര്‍ക്കണം.( click 1, click 2,.....,click9,click0,sum, minus, div.....എന്നിങ്ങനെയാണ് ഇവിടെ കൊടുത്തിരിക്കുന്നത്.)
  7. പൈത്തണ്‍ കോഡ് നിര്‍മ്മാണം :
    wxGlade
    ജാലകത്തിലെ Applications ക്ലിക്കു ചെയ്യുക. അതിനു ശേഷം Properties ജാലകത്തില്‍ Language എന്നതില്‍ python സെലക്‌ട് ചെയ്‌ത് Output path ഓപ്‌ഷനു നേരെയുള്ള ബട്ടണില്‍ ക്ലിക്കു ചെയ‌ത് ആവശ്യമായ ഫോള്‍ഡര്‍ തെരഞ്ഞെടുത്ത് ഫയല്‍ നാമം നല്‍കി (calculator.py) Save വട്ടണില്‍ ക്ലിക്കു ചെയ്യുക. .py എന്ന എക്‌സ്‌റ്റന്‍ഷന്‍ നിര്‍ബന്ധമായും നല്‍കണം. തുടര്‍ന്ന് Generate Code ബട്ടണില്‍ ക്ലിക്കു ചെയ്യുക. Code generation completed successfully എന്ന ഒരു Information കാണാം. OK ബട്ടണില്‍ ക്ലിക്കു ചെയ്യുക. .wxg എന്ന എക്‌സ്‌റ്റന്‍ഷനോടുകൂടി ഈ പ്രോജക്ട് സേവ് ചെയ്യാം. (File--> Save)
    6.
    സേവ് ചെയ്‌തിരിക്കുന്ന പൈത്തണ്‍ ഫയല്‍ (calculator.py) gedit text editor ല്‍ തുറന്ന് താഴെ കൊടുത്തിരിക്കുന്ന മാറ്റങ്ങള്‍ വരുത്തുക. 
    click 1 ഫങ്‌ഷന്റെ കോ‍ഡു വരുന്ന ഭാഗത്ത് print "Event handler `click1' not implemented!" എന്നതിനു പകരം
v = '1'
t = self.x.GetValue()
t = t + v
self.x.SetValue(t)
എന്നാണ് gedit text editor ല്‍ മാറ്റേണ്ടത്. ഇതുപോലെ മറ്റ് ബട്ടണുകളിലെ (Numbers) അനുബന്ധ ടെക്‌സ്റ്റുകളും മാറ്റേണ്ടതാണ്. (v = '1' എന്നതിനു പകരം v = '2' എന്ന മാറ്റം മാത്രം വരുത്തിയാല്‍ മതിയാകും click 2 ഫങ്‌ഷന്റെ കോ‍ഡു വരുന്നതില്‍). ഇവിടെ x എന്നത് മൂന്നാമത്തെ ടെക്‌സ്റ്റ് ബോക്‌സിന്റെ പേരാണ്. v,t എന്നിവയ്ക്കു പകരം ഏതു പേരും നല്കാം.
plus ഫങ്‌ഷന്റെ കോ‍ഡു വരുന്ന ഭാഗത്ത് print "Event handler `plus' not implemented!" എന്നതിനു പകരം
c = float(self.x.GetValue())
self.z.SetValue(str(c))
self.y.SetValue('+')
self.x.SetValue('')
ഇവിടെ x എന്നത് മൂന്നാമത്തെ ടെക്‌സ്റ്റ് ബോക്‌സിന്റെ പേരും, y എന്നത് രണ്ടാമത്തെ ടെക്‌സ്റ്റ് ബോക്‌സിന്റെ പേരും, z എന്നത് ഒന്നാമത്തെ ടെക്‌സ്റ്റ് ബോക്‌സിന്റെ പേരുമാണ്. ഇതുപോലെ മറ്റ് ബട്ടണുകളിലെ (minus, multi, div) അനുബന്ധ ടെക്‌സ്റ്റുകളും മാറ്റേണ്ടതാണ്. മൂന്നാമത്തെ വരിയിലെ '+' എന്നതിനു പകരം ആവശ്യമായ മാറ്റങ്ങള്‍ മാത്രം വരുത്തിയാല്‍ മതി.
equals ഫങ്‌ഷന്റെ കോഡു വരുന്ന ഭാഗത്ത് print "Event handler `equals' not implemented!" എന്നതിനു പകരം
c = float(self.x.GetValue())
d = float(self.z.GetValue())
e = self.y.GetValue()
if(e == '+' ):
ans=c+d
elif(e == 'x' ):
ans=c*d
elif(e == '-' ):
ans=d-c
else:
ans=d/c
self.a.SetValue(str(ans))
എന്നാണ് gedit text editor ല്‍ മാറ്റേണ്ടത്. ഇവിടെ a എന്നത് നാലാമത്തെ ടോക്‌സ്റ്റ് ബോക്‌സിന്റെ പേരാണ്. c, d, e, ans തുടങ്ങിയവയ്ക്കു പകരം ഏതു പേരും നല്കാം.
clear ഫങ്‌ഷന്റെ കോഡു വരുന്ന ഭാഗത്ത് print "Event handler `clear' not implemented!" എന്നതിനു പകരം
self.x.SetValue(' ')
self.y.SetValue(' ')
self.z.SetValue(' ')
self.a.SetValue(' ')
എന്നാണ് gedit text editor ല്‍ മാറ്റേണ്ടത്. ഇത്രയും മാറ്റങ്ങള്‍ വരുത്തി ഫയല്‍ സേവ് ചെയ്‌തതിനുശേഷം പ്രോഗ്രാം പ്രവര്‍ത്തിപ്പിച്ചു നോക്കൂ.
Click here

Code 

Lesson 13_Python

.




മുകളില്‍ കൊടുത്തിരിക്കുന്ന രീതിയിലുള്ള ഒരു ഫ്രെയിം wxGlade ഉപയോഗിച്ച് തയ്യാറാക്കി അതില്‍ ഒരു സര്‍ക്കാര്‍ ജീവനക്കാരന്റെ പേരും വയസ്സു നല്കുമ്പോള്‍ അദ്ദേഹം സര്‍വ്വീസില്‍ നിന്നും വിരിക്കുന്ന വര്‍ഷം കാണിക്കുന്നതിനുള്ള  ഒരു പ്രോഗ്രാം തയ്യാറാക്കുക.
Click here

Saturday, April 14, 2012

Lesson 12_Python

wxGlade - Code Generator


വിഷ്വല്‍ പ്രോഗ്രാമുകള്‍ ഉപയോഗിക്കുമ്പോള്‍ പ്രോഗ്രാമിംഗ് എളുപ്പമാകുന്നു.  ഇത് കമ്പ്യൂട്ടര്‍ പ്രോഗ്രാമുകള്‍ തയ്യാറാക്കുന്നതിനുള്ള WYSIWIG ( What You See Is What You Get) മാതൃകകളാണ്.  സാധാരണ പ്രോഗ്രാമിംഗ് ഭാഷകളില്‍ ഒരു ചതുരം വരയ്ക്കുന്നതിന് ബന്ധപ്പെട്ട കോഡുകളടങ്ങിയ നിര്‍ദ്ദേശങ്ങള്‍ ടൈപ്പു ചെയ്യണം.  എന്നാല്‍ വിഷ്വല്‍ പ്രോഗ്രാമുകളില്‍ ഒരു ചതുരം വരയ്ക്കുന്നതിന് Open Office Writer ലേയും മറ്റും പോലെ ഡ്രാഗ് ആന്റ് ഡ്രോപ് മതിയാകും.  പ്രോഗ്രാമിംഗ് ഭാഷയുടെ കോഡുകളും പദവിന്യാസവും അറിയാതെ തന്നെ പ്രോഗ്രാമുകള്‍ തയ്യാറാക്കുന്നതിന് Code Generator സഹായിക്കുന്നു.  പൈത്തണ്‍, C++, Perl, XRC, Lisp എന്നീ പ്രോഗ്രാമിംഗ് ഭാഷകളില്‍ ഉപയോഗിക്കുന്ന ഒരു കോഡ് ജനറേറ്ററാണ്  wxGlade   .

മുകളില്‍ കൊടുത്തിരിക്കുന്ന രീതിയിലുള്ള ഒരു ഫ്രെയിം wxGlade ഉപയോഗിച്ച് തയ്യാറാക്കി അതില്‍ രണ്ടു സംഖ്യകളുടെ തുകയും വ്യത്യാസവും കാണുന്നതിനുള്ള പ്രോഗ്രാം പൂര്‍ത്തിയാക്കുന്നതെങ്ങനെയെന്നു നോക്കാം.
 1.  Applications മെനുവിലെ Programming എന്ന സബ് മെനുവില്‍ നിന്നും wxGlade തൂറക്കുക.മൂന്നു ജാലകങ്ങള്‍ തുറന്നു വരും.
a. wxGlade പ്രധാന ജാലകം (മെനുകളും, ടൂള്‍ ബട്ടണുകള്‍ കാണാം)
b. wxGlade:Tree ജാലകം
c.  Properties ജാലകം.



2.  പ്രധാന ജാലകത്തിലെ Add a Frame (ആദ്യത്തെ ബട്ടണ്‍) ബട്ടണില്‍ ക്ലിക്കു ചെയ്താല്‍ ലഭിക്കുന്ന Select frame class ഡയലോഗ് ബോക്സില്‍ നിന്നും wxFrame ഓപ്‌ഷന്‍ സെലക്‌ട് ചെയ്‌ത് OK ബട്ടണില്‍ ക്ലിക്കു ചെയ്യുക.  പുതിയൊരു ഫ്രെയിം ലഭിക്കും(<design>ജാലകം).  wxGlade:Tree ജാലകത്തില്‍ വരുന്ന മാറ്റം ശ്രദ്ധിക്കുക. Properties ജാലകത്തിലെ widget ടാബ് സെലക്‌ട് ചെയ്‌ത്  Title ബോക്‌സില്‍ ആവശ്യമായ ടൈറ്റില്‍ നല്‌കുക. ഫ്രെയിമിന്റെ Title bar ല്‍ പുതിയ പേര് വന്നിട്ടുണ്ടാകും. ഫ്രെയിമിന്റെ (<design>ജാലകം)  size, background color, foreground color, font ഇവയില്‍ ആവശ്യമായ മാറ്റങ്ങള്‍ നല്‍കുന്നതിനുള്ള ഓപ്‌ഷനുകള്‍ Common ടാബില്‍ ലഭ്യമാണ്.


3.  പ്രധാന ജാലകത്തിലെ Add a GridSizer (അവസാനത്തെ ബട്ടണ്‍) ബട്ടണ്‍ സെലക്‌ട് ചെയ്‌തതിനുശേഷം പുതുതായി ലഭിച്ച ഫ്രെയമിന്റെ (<design>ജാലകം) ഉള്ളില്‍ ക്ലിക്കുചെയ്യുക. അപ്പോള്‍ തുറന്നു വരുന്ന Select sizer attributes ഡയലോഗ് ബോക്‌സില്‍ ആവശ്യമായ വിലകള്‍ (Rows, Columns,....)നല്‍കി OK ബട്ടണില്‍ ക്ലിക്കുചെയ്യുക.  അതോടെ ഫ്രെയിമില്‍ ആവശ്യമായ രീതിയില്‍ വരികളും നിരകളും വന്നിട്ടുണ്ടാകും.


 


4.  ഫ്രെയിമില്‍ അടുത്തതായി നമുക്ക് ലേബലുകളും ടെക്‌സ്‌റ്റ് ബോക്‌സുകളും ബട്ടണുകളും ഉള്‍പ്പെടുത്തണം.
a. ലേബല്‍ നിര്‍മ്മാണം :
പ്രധാന ജാലകത്തിലെ Add a Static Text ബട്ടണ്‍ സെലക്‌ട് ചെയ്‌ത്  <design>ജാലകത്തിന്റെ ആദ്യത്തെ കളത്തില്‍ ക്ലിക്കുചെയ്യുക.  <design>ജാലകത്തിലും  wxGlade:Tree ജാലകത്തിലും ലേബലിന്റെ പേര് തെളിഞ്ഞുവരും. 
Properties ജാലകത്തിലെ Widget ടാബ് സെലക്‌ട്  ചെയ്‌ത് Label 1 എന്നത് മാറ്റി പകരം ആവശ്യമായ ടെക്‌സ്‌റ്റുകള്‍ ചേര്‍ക്കാം (Number 1).
Layout ടാബ് സെലക്‌ട്  ചെയ്‌ത്  ടെക്‌സ്‌റ്റിന്റെ allignment കൃത്യമാക്കാം.  ഇതേ രീതിയില്‍ <design>ജാലകത്തിലെ രണ്ടാമത്തെ Row യിലെ ആദ്യത്തെ കളത്തിലും (Number 2), മൂന്നാമത്തെ Row യിലെ ആദ്യത്തെ കളത്തിലും (Answer)  ആവശ്യമായ ടെക്‌സ്‌റ്റുകള്‍ ചേര്‍ക്കാം.
b. ടെക്‌സ്‌റ്റ് ബോക്‌സ് ഉള്‍പ്പെടുത്തല്‍ 
പ്രധാന ജാലകത്തിലെ Add a TextCtrl ബട്ടണ്‍  സെലക്‌ട് ചെയ്‌ത്  <design>ജാലകത്തിന്റെ രണ്ടാമത്തെ Column - ത്തിലെ ആദ്യത്തെ കളത്തില്‍ ക്ലിക്കു ചെയ്താല്‍ ടെക്‌സ്‌റ്റു ബോക്‌സ് ലഭ്യമാകും.  Properties ജാലകത്തിലെ Layout ടാബ് സെലക്‌ട്  ചെയ്‌ത്  ടെക്‌സ്‌റ്റ്  ബോക്‌സിന്റെ  allignment കൃത്യമാക്കാം. കൂടാതെ Common  ടാബ് സെലക്‌ട്  ചെയ്‌ത് Name ബോക്‌സിലെ text_ctrl_1 എന്നതിനു പകരം മറ്റൊരു പേര് (x) വേണമെങ്കില്‍ നല്‍കാം. ഇതുപോലെ രണ്ടാമത്തെ Column - ത്തിലെ രണ്ടാമത്തെ കളത്തിലും ടെക്‌സ്‌റ്റു ബോക്‌സ് ലഭ്യമാക്കാം. ഇവിടെയും Common  ടാബ് സെലക്‌ട്  ചെയ്‌ത് Name ബോക്‌സിലെ text_ctrl_2 എന്നതിനു പകരം മറ്റൊരു പേര് (y) വേണമെങ്കില്‍ നല്‍കാം.
 c.ബട്ടണുകള്‍ ചേര്‍ക്കല്‍
 പ്രധാന ജാലകത്തിലെ Add a Button ടൂള്‍ സെലക‌്ട് ചെയ്‌ത്  ആദ്യത്തെ Row യിലെ അവസാനത്തെ കളത്തില്‍ ക്ലിക്കുചെയ്യുമ്പോള്‍ അവിടെ ഒരു ബട്ടണ്‍ പ്രത്യക്ഷമാകും  Properties ജാലകത്തിലെ Widget ടാബ് സെലക്‌ട്  ചെയ്‌ത്  Button_ 1 എന്നത് മാറ്റി പകരം ആവശ്യമായ ടെക്‌സ്‌റ്റുകള്‍ ചേര്‍ക്കാം (Add  or +).  അതിനു ശേഷം  Properties ജാലകത്തിലെ Events  ടാബ് സെലക്‌ട്  ചെയ്‌ത്  Handler എന്ന ഭാഗത്ത് ബട്ടണില്‍ ക്ലിക്കു ചെയ്യുമ്പോള്‍ പ്രവര്‍ത്തിക്കേണ്ട ഫങ്‌ഷന്റെ പേര്  (sum) ചേര്‍ക്കണം. ഇതുപോലെ തൊട്ടുതാഴെയുള്ള കളത്തിലും ഒരു ബട്ടണ്‍ഉള്‍പ്പെടുത്തുക (subtract 0r -).  Properties ജാലകത്തിലെ Events  ടാബ് സെലക്‌ട്  ചെയ്‌ത്  Handler എന്ന ഭാഗത്ത് ബട്ടണില്‍ ക്ലിക്കു ചെയ്യുമ്പോള്‍ പ്രവര്‍ത്തിക്കേണ്ട ഫങ്‌ഷന്റെ പേര്  (diff) ചേര്‍ക്കണം.
ഉത്തരം പ്രത്യക്ഷപ്പെടേണ്ട കളത്തില്‍ മറ്റൊരു ബട്ടണ്‍ ഉള്‍പ്പെടുത്തുക.   Properties ജാലകത്തിലെ Widget ടാബ് സെലക്‌ട്  ചെയ്‌ത്  Button_ 3 എന്നത് ഒഴിവാക്കണം.  കൂടാതെ Common  ടാബ് സെലക്‌ട്  ചെയ്‌ത് Name ബോക്‌സിലെ text_ctrl_1 എന്നതിനു പകരം മറ്റൊരു പേര് (z) വേണമെങ്കില്‍ നല്‍കാം. ഇതോടെ ഫ്രെയിം നിര്‍മ്മാണം പൂര്‍ത്തിയായി.  <design>ജാലകത്തില്‍ Right Click ചെയ്യുമ്പോള്‍ ലഭിക്കുന്ന drop down  ലിസ്‌റ്റില്‍ നിന്നും  Preview ക്ലിക്കു ചെയ്‌താല്‍ ഫ്രെയിം കാണാം.




5.  പൈത്തണ്‍ കോഡ് നിര്‍മ്മാണം :
<design>ജാലകത്തിലെ ക്രമീകരണത്തിനു സമാനമായ പൈത്തണ്‍ കോഡ് നിര്‍മ്മിക്കണം.  wxGlade ജാലകത്തിലെ Applications ക്ലിക്കു ചെയ്യുക.  അതിനു ശേഷം Properties ജാലകത്തില്‍ Language എന്നതില്‍ python സെലക്‌ട് ചെയ്‌ത്  Output path ഓപ്‌ഷനു നേരെയുള്ള ബട്ടണില്‍ ക്ലിക്കു ചെയ‌ത് ആവശ്യമായ ഫോള്‍ഡര്‍ തെരഞ്ഞെടുത്ത്  ഫയല്‍ നാമം നല്‍കി (calc.py)  Save വട്ടണില്‍ ക്ലിക്കു ചെയ്യുക. .py എന്ന എക്‌സ്‌റ്റന്‍ഷന്‍ നിര്‍ബന്ധമായും നല്‍കണം. തുടര്‍ന്ന് Generate Code ബട്ടണില്‍ ക്ലിക്കു ചെയ്യുക. Code generation completed successfully എന്ന ഒരു Information കാണാം. OK ബട്ടണില്‍ ക്ലിക്കു ചെയ്യുക.  .wxg എന്ന എക്‌സ്‌റ്റന്‍ഷനോടുകൂടി ഈ പ്രോജക്ട് സേവ് ചെയ്യാം. (File--> Save)
6.  സേവ് ചെയ്‌തിരിക്കുന്ന പൈത്തണ്‍ ഫയല്‍  (calc.py) gedit text editor ല്‍ തുറക്കുക.



sum ഫങ്ഷന്റെ കോഡ് വരുന്ന ഭാഗത്തും diff  ഫങ്ഷന്റെ കോഡ് വരുന്ന ഭാഗത്തും താഴെ കൊടുത്ത രീതിയല്‍ മാറ്റങ്ങള്‍ വരുത്തി സേവ് ചെയ്‌തതിനു ശേഷം പ്രോഗ്രാം പ്രവര്‍ത്തിപ്പിച്ചു നോക്കൂ.



print "Event handler `Sum' not implemented!"  
എന്നതിനു പകരം  
c=int(self.x.Value)+int(self.y.Value)
self.z.SetLabel(str(c))
എന്നും
print "Event handler `diff' not implemented!"
എന്നതിനു പകരം  
c=int(self.x.Value)-int(self.y.Value)
self.z.SetLabel(str(c))
എന്നുമാണ്  gedit text editor ല്‍ മാറ്റേണ്ടത്.


Click here