You are on page 1of 40

Chng ta s tip tc 20 LC WS bt u t nhng cn bn ca Python , iu chng ta cha lm dc vi C Cun ByteOfPython ca Swaroop ny rt chnh quy , s trang b cho chng ta nhiu

iu kin thc tip tc lp trnh game Mnh thay i tn bin , hm minh ha sinh ng gn gi vi gamedev hn , v b sung mt s on ngoi sch Bn hy ln trang ch ca Python l www.python.org down bn ci Python 2.5

#---------------------------------------------------S trong Python c 4 loi integer (s nguyn) nh 2 , 99 ,1000 , (chng ta s tp trung ly s nguyn (int) lm v d) longinteger (ln hn s nguyn) , floating point (s thc) nh 2.32 ; 52,3E-4 , ngha l 52.3*10 m tr 4 complex number (s o) nh -5 + 4j ... #----------------------------------------------------Xu trong Python c 3 dng Dng ( ' ) v ( " ) u gi nguyn cc k t cha trong cp du ' gamedev ' v "gamedev" l nh nhau Nu s dng ba ln du nhy ( ''' ) hoc ( """ ) s tnh c xung dng '''gamedev.vn Mt din n ln v gamedev ''' """ gamedev.vn Mt din n ln v gamedev """ Nu bn cn s dng du nhy trong xu , bn s phi nh thm du x \' ' what\'s ' s thnh : what's Bn mun cch dng nh khi nhn tab th hy dng \t ' ' xung dng nh khi nhn Enter th hy dng \n Bn thn du x mun hin th cn dng \\ Raw string dc dng khi bn mun b qua hiu lc ca \ trong xu , bn hy dng tin t r hay R trc xu bnh thng chuyn sang Raw string r'ko dung dau \\' th Python(P) s hin th : ko dung dau \\

Raw string thng dc dng khi nhp d liu Nu bn mun dng Unicode th thm tin t u hoc U Xu dc to ra s ko th b thay i , chng ta s nghin cu sau Xu c th dc ni vo nhau 'gamedev' '.vn' s hin th gamdev.vn #--------------------------------------------------------------

Quy tc t tn bin
-k t u tin phi l ch ci (hoa hoc thng) hoc du _ -phn cn li c th l ch ci (hoa hoc thng) , s , du _ -phn bit ch hoa v ch thng

Bt IDLE ln

Hin ln mt ca s v ct bt u code #P ch thch bng du # i =5 # gn i bng 5 print i # in i , print c ngha l in i=i+1 # gn i bng i cng 1 print i # in i s = ' gamedev.vn ' # gn xu gamdev.vn lu tr vo trong bin s print s # in s Nhn F5 dch , trong Python Shell s hin th

Chng ta ko cn phi khai bo bin t u nh C V cng ko cn du ' ; ' kt thc cu lnh d c chng ta nn vit mi dng mt cu lnh Nu mun vit nhiu cu lnh trn mt dng th dng du ; nh C i =5 ; print i ; thm ch i =5 ; print i Nhng ko nn lm vy , HY VIT MI DNG MT CU LNH Bn c th ni cu lnh bng du \ Nh bn vit S = " Day la mot xau . \ Va day la mot xau dc noi tiep . " print S

# hy du nhy kp

Output (kt qu hin th , xut ra) : Day la mot xau . Va day la mot xau dc noi tiep . Tng t print \ i cng tng ng vi print i

Bi v ko du ; nh du khi lnh nn P phi dng indetation (vt kha) cc cu lnh lin tip c cng di khong trng tnh t l tri (k t space , du tab ) s cng nm trong mt khi lnh By gi bn vit i=5 print " gia tri i la " , i

Output : gia tri i la 5 Nhng nu bn vit i=5 print " gia tri i la " , i

# c thm du cch

th s b li c php ngay #-----------------------------------------------------------------------------

Ton t :
+ : cng - : tr * : nhn ** : m ( 3 **4 bng 81) / : chia (lu : s nguyn chia cho s nguyn s ra s nguyn : 4/3=1 Nu trong php chia c th t nht c mt s l s thp phn mi cho ra kt qu l s thp phn

4.0/3 hay 4/3.0 cho 1.33333333333333 ) // : chia ly phn nguyn : 4 // 3.0 = 1.0 v (3*1)+1=4 v 4 chia 3 bng 1(phn nguyn) d 1 %: chia ly phn d : 8%3 =2 v 8 chia 3 bng 2 d 2 & : v | : hoc != : khc Sau y l th t u tin ca cc ton t

Chng ta s ch tm thi tham kho bng trn

Nu bn hc Ton chc chn phi bit trong biu thc 2 + 3*5 th chc chn php tnh nhn phi c thc hin trc php cng , cc ton t cng tng t vy , n cng c nhng th t dc quy nh , theo bng ny , ton t di thp hn s dc u tin Bn nn s dng cp du ngoc () nhm cc biu thc ring r vi nhau nh (2 + (3*5))

#----------------------------------------------------------------------------------Cc cu lnh iu khin

Cu lnh if (cu lnh r nhnh)


Mi bn code cc dng lnh di

number = 23 guess = int(raw_input("Nhap mot so nguyen:")) # 'guess' ngha l on if guess == number: # ch du hai chm print 'Chuc mung ban da doan dung.' # mt khi lnh mi bt u khi nhn tab print "(nhung ban se chang dc tang mot gia thuong nao ca )" # kt thc khi lnh khi # xung dng v li v u dng elif guess<number: print 'Khong, lon hon mot chut' # mt khi lnh khc else: print 'Khong, nho hon mot chut' print 'OK!' # cu lnh ny thuc khi lnh khc

y l mt chng trnh on s c s dng vng if lng nhau Chng ta(..ct) cn thao tc vi d liu m ngi dng nhp vo nn chng ta dng hm raw_input( ) . Trong du () l li mi ca chng ta i vi ngi dng h nhp s liu , sau tt c nhng g ngi dng nhp vo s dc lu vo b nh x l , kt thc vic nhp liu bng cch ngi dng nhn Enter (ct s nghin cu thm sau)

D liu m ngi dng s c thao tc p kiu sang dng s nguyn (int) tin so snh, nn chng ta dng tin t int() Cc bn rng bt u vng if lng nhau vn l if , cc trng hp tip theo l elif , kt thc l else kt thc vng lp phi xung dng li vo l tri nh c
#---------------------------------------------------------------------------------------

Vng lp while
Mi bn code on m sau number = 23 running=True while running: # gn running l ng # khi no gi tr running vn ng th vng lp vn chy

guess=int(raw_input('Moi nhap so nguyen :')) if guess==number: print' Ban da doan dung' # khin vng lp ngng li , running sai running=False elif guess<number: print'Khong , lon hon mot chut.' # chc chn l s ny phi ln hn 23 v else: chng ta # loi i hai trng hp trn print'Khong , nho hon mot chut.' else: # Else ny ca vng lp while ch ko phi ca if , khi kt thc vng While # s t ng thc hin dng lnh ny print 'Vong lap ket thuc.' print'OK!' Chng ta bn nhiu v vng lp While trong 20 WS LC nn chc chn s ko c kh khn g cho bn

dy Phibnaxi
a, b = 0, 1 # y l php gn ng thi lin tip multiple assignment # theo chiu t tri qua phi , tng ng vi a=0, b=1 while b < 10: # khi no b vn cn nh hn 10 print b a, b = b, a+b # y cng l php multiple assignment , nhng phc tp # hn KQ:

1 1 2 3 5 8 # dy ny c tnh cht l mt s bt k no cng l tng ca hai s trc n # v d 8=3+5 # n bt ngun t bi ton sinh si ca mt n th trn mt hn o # trong thit k m thut , t dy s ny chng ta c th tm ra t s vng # bng cch ly s trc chia cho s sau , dc khong 1,62 , y cng # thng l t l hp l ca nhng vt hnh ch nht nh ca s u tin , a =0 , b =1 Bc vo vng lp , b < 10 ng nn tip tc in b =1 In b xong , gn a = b = 1 , ri b=a+b = 0+1 #cc bn lu y l php gn ng thi, nn trong b=a+b a vn cha mang #gi tr a=b=1, m vn mang ga tr ban u 0, sau khi kt thc lnh gn #lin tip ng thi ny th a mi mi bt u mang gi tr a =b= 1 ) Kt thc vng lp u tin a=1 , b =1 Sang vng lp th hai Kim tra thy b vn nh hn 10 , tip tc in b =1 Gn a=b=1 , v b = a +b =1+1+2 Kt thc vng lp hai ,a=1 , b=2 Sang vng lp 3 Gn a=b=2 , b = a+b=1+2=3 # lu y l php gn ng thi , vic gn a=b # v a=a+b l xy ra cng mt lc , ko dc nhm l b=a+b=2+2 C th cho n khi b<10 sai th kt thc vng lp
#----------------------------------------------------------------------------------

Vng lp for
Trc ht chng ta cn bit hm range(1,5) s cho ta mt dy s [1,2,3,4] # range c ngha l phm vi Nu thm tham s th ba , n s ng vai tr bc nhy trong hm range range(1,9,2) s l [1, 3, 5, 7] y hm range c vai tr tnh ton ra mt dy gi tr cho vng lp for da vo hot ng Mi bn code

for i in range(2,5): # 2 , 3, 4 print i else: print'Vong lap for ket thuc' Output:

2 3 4 Vong lap for ket thuc y , trong vng lp u tin , theo th t ca dy gi tr, i s dc gn bng 2 , sau n lnh in i ra , kt thc vng lp u tin Tip tc sang vng lp th hai ,theo th t ca dy gi tr ,i dc gn bng 3 v in , kt thc vng lp hai Sang vng lp ba , gn v in i =4 n dng else ca vng lp for .
#------------------------------------------------------------------------------

Cu lnh break
# break c ngha l b gy , y n s mang ngha bng l b gy vng lp #khi xut hin break , vng lp s chm dt , hay b qua nhng cu lnh k tip ca khi lnh Mi bn code while True: # vng lp v hn s = raw_input('Nhap chuoi ki tu') v s

# chng ta ko dng tin t int p kiu

# nguyn v n gin l ko cn thit if s== 'quit': # kim tra nu ngi dng mun thot , h s nh ch quit break # chm dt vng lp v hn ti y, ko o di xu na, lu l print"Do dai cua xau ki tu s la ", len(s) # o di ca xu s , ri ghi kt qu ngay sau xu k t 'do dai '

print"OK"

y l mt chng trnh o d di xu k t bn va nhp vo , len(tn xu k t cn o) s tr v s k t ca xu # len l vit tt ca length di

#---------------------------------------------------------------------------

Cu lnh continue (tip tc)


# Continue ch b qua cc cu lnh tip theo ca khi lnh tnh t v tr t continue , ch ko thot hn khi vng lp Mi bn code while True: s=raw_input('Nhap xau ki tu co do dai lon hon 3 :') if s== 'quit': break if len(s)<=3: continue # b qua ko m k t na , quay v u khi lnh else: print"Do dai cua xau ki tu s la ",len(s) # lu du ' , ' Mi bn t kim tra kt qu
#------------------------------------------------------------------

Hm
Hm l mt on m c th dc s dng i s dng li nhiu ln Chng ta nh ngha hm bng t kha def # define nh ngha def noiHello() : # bt u khai bo hm noiHello print' HelloWorld! ' #y l cu lnh s dc thc thi khi gi hm # kt thc khai bo hm khi xung dng v li vo l print" Ham can loi goi ham de thuc thi " # hm cn mt li gi hm thc thi noiHello() # y l li gi hm

out put : Ham can loi goi ham de thuc thi HelloWorld! Cp ngoc n l ni cha tham s ca hm Hm n gin trn ko cn truyn tham s Mi bn code def in_gia_tri_max(a,b): # xut hin thm hai tham s a v b

# nu a ln hn s in ra a print a,'la so lon hon' else: # nu b ln hn s in b print b,'la so lon hon' # kt thc phn khai bo hm in_gia_tri_max(3,4) # gi hm ng thi truyn tham s cho hm theo th t nh khi ta khai # bo hm , tc l a tng ng 3 , b tng ng vi b #tip tc mt v d khc, chng ta s gn gi tr cho hai bin x, y x=5 y=7 in_gia_tri_max(x,y) # chng ta cng va gi hm ln th hai ng thi truyn tham s cho hm # x tng ng vi a , y tng ng vi b

if a>b:

OutPut 4 la so lon hon 7 la so lon hon y ngi ta gi a , b l tham s - parameter Cc gi tr x,y v 3,4 c gi l i s - argument Gi tr i s s dc gn cho tham s , cc tham s s dc thao tc trong hm v tr v kt qu tnh ton cho chng ta

Bin cc b ( local variable)


Nhng bin ny ch c hiu lc trong phm vi ca hm , Trong mt hm , bn t tn mt bin l a Trong hm khc (hoc v tr no trong file), bn cng li t thm mt bin cng tn l a , cng ko sao , chng nh hng g c , v chng hon ton ko h lin quan ti nhau def in_gia_tri(x) : # khai bo hm in gi tr x print 'x la',x # x by gi l bin cc b , ch c hiu lc trong hm in_gia_tri x=2 # i x thnh 2 print 'bien cuc bo x trong ham in_gia_tri da dc thay bang' , x # kt thc khai bo hm x =50 # khai bo bin x ngoi hm in_gia_tri in_gia_tri(x)

print 'x o ngoai van giu nguyen gia tri nhu truoc khi dc truyen vao ham' , x # x ngoi vn gi nguyn gi tr nh trc khi gi hm , n ko b i thnh 2 OutPut x la 50 bien cuc bo x trong ham in_gia_tri da dc thay bang 2 x o ngoai van giu nguyen gia tri nhu truoc khi dc truyen vao ham 50

Global Statement (khai bo ton cc)


Nu chng ta mun bin ca ct c hiu lc bt k mi ni (nh trong bt k hm no) Ct s cn dng khai bo global trc tn bin Mi bn code def in_gia_tri() : # hm nay ko cn truyn tham s global x # khai bo bin ton cc x print 'x la' , x x=2 # thay x bng 2 print 'Bien toan cuc x da bi thay bang ',x # kt thc khai bo hm x=raw_input('Moi ban nhap x :') # nhp x , lu x ny ko nm trong hm in_gia_tri() # gi hm print 'Gia tri x bay gio la' , x Output Moi ban nhap x :3 x la 3 Bien toan cuc x da bi thay bang 2 Gia tri x bay gio la 2

Default Argument Value (i s mc nh)


i khi bn mun tham s ca bn mang sn mt gi tr hng s , phng ngi dng qun ko nhp vo , hy s dng du bng nh sau def in_xau_ki_tu (xau_ki_tu , so_lan=1): # tham s c th l mt xu k t print xau_ki_tu*so_lan in_xau_ki_tu ('VietNam') # bn ko nhp i s cho tham s so_lan ,so_lan t ng =1 in_xau_ki_tu ('Gamedev.vn',5)

OutPut VietNam Gamedev.vnGamedev.vnGamedev.vnGamedev.vnGamedev.vn Cc bn cn nh l tham s u tin ko dc mang gi tr i s mc nh

Keyword Argument
Bn bit cch truyn i s cho tham s theo trt t v tr tng ng , nhng c mt cch gip bn c th truyn i s cho tham s m ko cn theo trt t tham s nh khi khai bo hm def in_gia_tri(a,b) : print 'so dau tien l a =', a , "so thu hai la b =", b in_gia_tri(b=20,a=10) # lu du bng v th t OutPut so dau tien l a = 10 so thu hai la b = 20

Return Statement
Cu lnh return s gip bn tr v mt gi tr tnh ton sau khi gi hm def so_sanh(a,b): if a>b : return a # tr v gi tr l tham s a nu a ln hn b else: return b # tr v gi tr l tham s b nu a ko ln hn b print so_sanh(10,20) # lnh print s in gi tr tr v ca hm so_sanh Nu bn gn x= so_sanh(10,20) th x s mang gi tr 20 ngay lp tc Hm ko ch c th tr v gi tr bnh thng m cn c th tr v gi tr ca mt biu thc def tong (a,b): return a+b x= tong(1,2) print x None ngha l ko c g (tng t nh null trong C) Nu khi vit hm m chng ta qun ko dng lnh return th P mc nh hm c dng return None def mot_ham_rong () : # khai bo mt hm rng pass # trong P , pass dng ch mt khi lnh rng

# trong trng hp ny pass c tc dng cho php # chng ta b qua ko cn thc thi mt lnh no # tip tc thc hin cc cu lnh tip theo # pass ch nhm mc ch ko gy ra li c php ,hm cn t nht c mt cu lnh print mot_ham_rong() OutPut None

DocString (documentation ti liu)


N s gip bn ch thch cch s dng hm def so_sanh_so_nguyen(x,y) : ''' in ra gia tri lon nhat sau khi so sanh hai doi so. Neu doi so ko phai la so nguyen , tu dong chuyen ve so nguyen''' x=int(x) # p kiu v s nguyn , nu l k t hoc s thc y=int(y) if x>y : print x,'la so lon hon' else : print y,'la so lon hon' return x,y # tr v gi tr x,y kim tra print so_sanh_so_nguyen(5.4,9.9) # hai i s ko phi l s nguyn print so_sanh_so_nguyen.__doc__ # tn hm.__doc__ OutPut: 9 la so lon hon (5, 9) in ra gia tri lon nhat sau khi so sanh hai doi so. Neu doi so ko phai la so nguyen , tu dong chuyen ve so nguyen Bn c th xem doc qua cu lnh help(tn_hm) # thot bng cch nhn q Tip: hy t ng li l khi xung dng

#-------------------------------------------------------------------------

Module
Bn c th ti s dng mt on m trong mt file bng cch s dng hm , nhng nu bn cn mun s dng li chng trong nhiu file khc Gii php chnh l module N n gin ch l mt file c ui l .py v cha trong n cc hm v bin m bn cn ti s dng nhiu ln

Chng ta bt u bng vic to mt module Mi bn code ri save thnh file bat_dau.py vo th mc ci t Python def loi_chao(): print 'Xin chao, module bat_dau xin gui loi chao den ban' version='0.1' # y l bin cha xu k t ch phin bn

Bn to mt module Code tip mt file khc t tn l su_dung_module.py import bat_dau # bo cho P truy tm module bat_dau ci t bat_dau.loi_chao() # s dng hm loi_chao trong module bat_au print 'Day la phien ban ', bat_dau.version # s dng bin version trong module bat_dau Nu bn ko mun phi nh c ch bat_dau. th hy s dng from (tn module) import (tn hm hoc bin) Mi bn code from bat_dau import loi_chao,version loi_chao() print 'Day la phien ban ', version # bn c th s dng trc tip cc hm v bin trong module

Nu bn mun kim tra xem trong module c ni dung g hy code dir(tn hm) dir(bat_dau) OutPut ['__builtins__', '__doc__', '__file__', '__name__', 'loi_chao', 'version'] #__name__ cha tn ca module print bat_dau.__name__ OutPut 'bat_dau'

Nu bn mun bit c th t module u P c th tm thy , hy code import sys # system h thng

print sys.path

# path l ng dn

#-----------------------------------------------------------------------------

DataStructure (cu trc d liu) (dts)


List (danh sch)
Mi bn code : # y l danh sch cc c trn ngi ca ti do_dac= ['mu','giap','khien','giay'] # khai bo _c l mt list - danh sch, lu du [ ] print 'Toi dang co', len(do_dac), 'mon do tren nguoi.' print 'Chung la' for mon_do in do_dac : # vng lp for s tun t tin theo th t cc gi tr ca list mon_do print mon_do, # lu du phy print '\nToi vua cam them mot thanh kiem'# '\n' xung dng do_dac.append('kiem') # append l ni thm print 'Cac mon do tren nguoi toi bay gio la',do_dac print 'Toi se sap xep lai no' do_dac.sort() # sort l sp xp print 'Sau khi sap xep , cac mon do tren nguoi toi bay gio la',do_dac print 'Mon do thu nhat la', do_dac[0] # P bt u m t 0 print 'Mon do thu nam la',do_dac[4] mon_do_bi_vut=do_dac[0] del do_dac[0] # delete xa do_dac[0] ra khi list print 'Toi da vut mon do ', mon_do_bi_vut print 'Cac mon do tren nguoi toi gio la', do_dac OutPut: Toi dang co 4 mon do tren nguoi. Chung la mu giap khien giay Toi vua cam them mot thanh kiem Cac mon do tren nguoi toi bay gio la ['mu', 'giap', 'khien', 'giay', 'kiem'] Toi se sap xep lai no Sau khi sap xep , cac mon do tren nguoi toi bay gio la ['giap', 'giay', 'khien', 'kiem', 'mu']

Mon do dau tien la giap Mon do cuoi cung la mu Toi da vut mon do giap Cac mon do tren nguoi toi gio la ['giay', 'khien', 'kiem', 'mu'] Nh bn thy list c kh nng mutable (c th bin i) V bn cng thy list c ba dot method l sort , append ,del cho php bn chnh sa li list Chng ta vn tm gi nhng th tc ny l dot method t 20 WS LC

Tuple
N cng tng t nh List , nhng n ko th b chnh sa # cc bn lu du ngoc n () do_dac= ('mu','giap','khien') print 'Toi dang co so mon do la', len(do_dac) do_dac_sau_khi_mua_them = ('kiem', 'giay', do_dac) print 'So do dac cua toi bay gio la ', len (do_dac_sau_khi_mua_them ) print 'Chung bao gom' , do_dac_sau_khi_mua_them print 'So do dac cua toi truoc day la' , do_dac_sau_khi_mua_them [2] print 'Mon do cuoi cung trong so mon do cu cua toi la', do_dac_sau_khi_mua_them [2][2] OutPut Toi dang co so mon do la 3 So do dac cua toi bay gio la 3 Chung bao gom ('kiem', 'giay', ('mu', 'giap', 'khien')) So do dac cua toi truoc day la ('mu', 'giap', 'khien') Mon do cuoi cung trong so mon do cu cua toi la khien do_dac l mt v d v tuple Hm len() cng c th o dc di ca tuple , chng t tuple cng l mt chui cc phn t c trt t nht nh nh list Chng ta chuyn cc mn t tuple do_dac sang tuple do_dac_sau_khi_mua_them Nhng ko ging list , tuple c dc chuyn sang tuple mi vn gi nguyn cu trc ca n V th chng ta cn phi truy nhp vo cc phn t ca tuple do_dac (by gi nm trong lng tuple do_dac_sau_khi_mua_them, n ng vai tr l phn t th ba ca tuple ny) bng ton t [ ] ( gi l ton t index index ngha l danh sch)

Trong v d ca chng ta , do_dac_sau_khi_mua_them[2][2] chnh l cch truy cp vo phn t th ba ca tuple do_dac_sau_khi_mua_them (chnh l tuple do_dac) , sau tip tc truy cp vo phn t th ba ca tuple do_dac chnh l khien

(ND: xin li , mnh v thiu ch c trong ch c sau khi mua thm Ging nh C , P cng bt u m t s 0 ) Nu bn mun khai bo mt tuple rng Empty_tuple=() Nhng khi khai bo mt tuple ch cha mt phn t bn li cn thm mt du , sau phn t duy nht Single_tuple=(gamedev , )

Tuple v cu lnh print


# bn hy ch du % trong on code sau Tuoi = 18 Ten = 'eddyfosman' print ' %s hien nay dang %d tuoi ' % (Ten,Tuoi) print 'Tai sao %s lai nghien cuu Python ?' % Ten OutPut eddyfosman hien nay dang 18 tuoi Tai sao eddyfosman lai nghien cuu Python ? Du % dng nh dng cho output , nh %s l nh dng cho string , %d cho integer

Chng ta tng dng du , thc hin iu tng t nh on code trn lm , nhng i khi n s tr nn ko hiu qu Cc bn thy chng ta s dng tuple (Ten,Tuoi) trn dng print u tin Tun theo trt t t tri sang phi , %s s dc thay bng phn t u tin ca tuple l Ten (ri t ng p kiu v xu) , %d s dc thay bng phn t th hai ca tuple l Tuoi (ng thi cng t ng chuyn v kiu nguyn) Vic nh dng ny s gip cho chng trnh ca chng ta trnh dc nhiu li ng tic nh ko khp kiu d liu Cu lnh print th hai ko s dng tuple , n gin ch l nh dng cho xu k t

Dictionary (t in)
N chnh xc ging nh mt quyn t in chng ta s tra tn ca t v tm thy ngha ca chng Bn s kt hp hai gi tr key (name-tn) v value (detail-c im chi tit) Bn ch c th dng nhng i tng bt bin (immutable object) ko th chnh sa dc nh xu k t cho key , cn value th c th nhn c i tng chnh sa dc.. Bn s khai bo dictionary bng mu: Dictionary= { key1:value1 , key2:value2 } Bn s ko th tm thy thng tin chnh xc nu c hai key c tn trng nhau # lu du {} v du : do_dac = { 'mu' : ' tang 10 % tri luc' ,

# xu 'mu' ng vai tr key , #'tang 10' ng vai tr value 'giap' : 'tang 10 % phong thu' , # bn nn xung dng d quan st 'khien' : ' ki nang block don tan cong cua doi phuong', 'kiem' : 'tang sat thuong vat li 20 %' , 'giay': "tang do nhanh nhen 15 %" } # kt thc khai bo dictionary

print 'cac mon do cua toi la %s' %[do_dac] # by gi ct thm thm mt mn na do_dac ['nhan'] = 'tang khang phep 25 %' # xa mt mn del do_dac['khien'] print '\nTren nguoi toi co %d mon do ' %len(do_dac) for mon_do,cong_dung in do_dac.items(): # chng ta s bn v nhng dng code di sau

print 'Mon do %s co cong dung %s' % (mon_do,cong_dung) if 'nhan' in do_dac: # hoc dng dng th tc do_dac.has_key('nhan') print "\nNhan co cong dung %s" % do_dac['nhan'] OutPut cac mon do cua toi la [{'mu': ' tang 10 % tri luc', 'khien': ' ki nang block don tan cong cua doi phuong', 'giap': 'tang 10 % phong thu', 'giay': 'tang do nhanh nhen 15 %', 'kiem': 'tang sat thuong vat li 20 %'}] Tren nguoi toi co 5 mon do Mon do giay co cong dung tang do nhanh nhen 15 % Mon do giap co cong dung tang 10 % phong thu Mon do mu co cong dung tang 10 % tri luc Mon do kiem co cong dung tang sat thuong vat li 20 % Mon do nhan co cong dung tang khang phep 25 % Nhan co cong dung tang khang phep 25 % Chng ta va to mt dictionary(dict) tn l do_dac Ging nh tuple v list , chng ta c th truy nhp vo cc phn t ca dict bng ton t index hoc chnh sa dict bng cc ton t nh del Chng ta c th cng mt lc truy cp mt cp gi tr key value bng cch s dng th tc items ca dict (trong v d ca chng ta l do_dac.items ). Th tc ny tr v mt list cc tuple , mi tuple li l mt cp gi tr key- value (theo trt t ca dict). Trong vng lp for , chng ta s dng php gn ng thi gn key cho bin mon_do , value cho bin cong_dung , ri tip tc in tuple (mon_do,cong_dung) trong mi vng lp Chng ta c th kim tra xem c tn ti mt key trong dict ko bng ton t in , theo mu tn key in tn dict # (in-trong)

Sequence (chui trnh t) (..seq)


List , tuple , string l nhng v d ca seq Hai c im ni bt ca seq l + c th truy nhp vo tng phn t ca seq bng ton t index [] + c th dng ton t slice [tham s 1: tham s 2] tch seq (slice- ct thnh tng lt..) Tham s 1 xc nh v tr bt u slice , tham s 2 xc nh v tr kt thc slice (nhng P s dng slice li trc khi n dc v tr kt thc ny)

mon_do=['mu', 'khien','giap'] print 'mon do thu 0 la ' ,mon_do[0]

print 'mon do thu 1 la ' ,mon_do[1] print 'mon do thu 2 la ' ,mon_do[2] print 'mon do thu -1 la ' ,mon_do[-1] # cc bn lu du m cng dc [] chp nhn print 'mon do thu -2 la ' ,mon_do[-2] # dng ton t slice [ : ] vi list print 'cac mon do tu 0 den 2 la ' ,mon_do[0:2] # hy n li ch thch dc in v du : print 'cac mon do tu 1 den cuoi cung ' ,mon_do[1:] print 'cac mon do tu 1 den -1 la ' ,mon_do[1:-1] print 'cac mon do tu dau den cuoi la' , mon_do[:] # slice ton b cc phn t # dng ton t slice [ : ] vi xu dien_dan = 'gamedev.vn' print 'ki tu 1 den 4 la ' , dien_dan[1:4] print 'ki tu 2 den het la ' , dien_dan[2:] print 'ki tu 1 den -1 la ' , dien_dan[1:-1] print 'ki tu dau den het la ' , dien_dan[:] OutPut mon do thu 0 la mu mon do thu 1 la khien mon do thu 2 la giap mon do thu -1 la giap mon do thu -2 la khien cac mon do tu 0 den 2 la ['mu', 'khien'] cac mon do tu 1 den cuoi cung ['khien', 'giap'] cac mon do tu 1 den -1 la ['khien'] cac mon do tu dau den cuoi la ['mu', 'khien', 'giap'] ki tu 1 den 4 la ame ki tu 2 den het la medev.vn ki tu 1 den -1 la amedev.v ki tu dau den het la gamedev.vn Chng ta d dng nhn thy trt t v tr ca list mon_do mu khien giap 0 1 2 -3 -2 -1 Vi ton t slice , cc con s c th ko cn nhp vo , nhng bt buc phi c du : Vi xu k t , ta cng d pht hin ra g a m e de v . v n 01234567 8 9 -10 9 8 7 6 5 4 3 2 1 Tip tc th nghim nu bn mun , tng t vi tuple

Reference (tham chiu)

Khi bn to mt i tng nh list , tuple , ri gn n cho mt bin no (chng ta vn lm nh vy trong cc phn trc) , bin ch "ch dn" (refer) n i tng ch ko h i din (-represent) cho bn thn i tng. Bin '' tn '' ca i tng ny ch dn n mt vng b nh trong my tnh ni m i tng dc lu tr (di dng s nh phn ). Ngi ta gi l " binding of the name to the object " Chng ta nghin cu on code sau hom_do =['mu','khien','giap'] # cc bn nn quen dn rng hom_do ch l mt ci tn # ch dn n i tng # list ca chng ta hom_do_khac = hom_do # hom_do_khac cng ch l mt ci tn cng ch n i tng list # m bin hom_do cng ch n del hom_do[0] # chng ta s kim tra hai hm print 'hom do gom' , hom_do print 'hom do khac gom ' , hom_do_khac # bn s thy , chng cng ch n mt list # by gi chng ta mi thc s to mt list mi t list c , bng cch # dng slice copy ton b list c # vo list mi hom_do_khac = hom_do [:] # by gi chng ta s kim tra li del hom_do_khac[0] print 'hom do bay gio gom' , hom_do print 'hom do khac bay gio gom' , hom_do_khac # thc s chng ta c hai list khc nhau , mt ci dc ch dn bi mt bin ring OutPut hom do gom ['khien', 'giap'] hom do khac gom ['khien', 'giap'] hom do bay gio gom ['khien', 'giap'] hom do khac bay gio gom ['giap'] T by gi mong bn cn cn thn khi thao tc vi tn ca cc i tng

Hng i tng (Object-Oriented-Programming)


Phng thc lp trnh vi hm v cc khi lnh gi l hng th tc Cn lp trnh hng i tng l g ?

on di mnh da theo blog ca mt ngi bn

Hng i tng l mt loi phng php dc s dng xy dng mt ng dng phn mm xoay quanh khi nim i tng. Phn mm s dc chia nh thnh nhiu i tng ,v chng tng tc vi nhau Mt i tng (object-obj) n gin l mt loi vt cht m ta c th cm nhn bng xc gic th gic ni chung n l nhng s vt hin tng xung quanh chng ta. Mt i tng c nhng c im sau: -trng thi ca i tng (mt tnh) : bao gm thuc tnh v gi tr ca thuc tnh VD : thuc tnh ca mt i tng 'nhn vt' l sinh lc nhn gi tr t 0 n 100 -hnh vi ca i tng (mt ng) : c quy nh bi nhng phng thc , mt i tng s c nhng phng thc hnh x khc nhau VD : nhn vt c th c nhng hnh ng nh chy , tn cng -m s nh dng duy nht ca mi i tng , ko c hai i tng ging nhau VD: tn ca nhn , s khung xe Lp (class) l g ? mt lp dc nh ngha nh l mt khai bo, mt mu hay mt bn thit k dc s dng to ra cc i tng. VD: Lp "nhn vt kim s " s to ra cc i tng " kim s " # lp c th l bn thit k mt chic t, n s to ra nhiu i tng t c #chung thuc tnh hnh dng i tng l ci dc nh hnh c th , cn lp ch l nhng khi nim chung chung. Lp th c nhng thuc tnh , cn i tng th c nhng gi tr thuc tnh i tng cn dc gi l instance of class Thng ip v cc phng thc : -Hnh vi l cch m mt i tng ng x hay phn ng li di dng cc trng thi (thuc tnh) ca n s thay i v cc thng ip (message) ca n s dc truyn i. -Thng ip s dc chuyn tip gia cc i tng c th ni hnh vi dc hnh thnh trong qu trnh nhn thng ip v tr li thng ip -Phng thc l tp hp cc hnh ng thc hin bi mt i tng. Vd: " Kim s " tn cng " Rng " bng cch gi cho " Rng " mt thng ip 'ta nh mi'

"Rng " phn ng li bng phng thc : gim thuc tnh sinh lc ca mnh xung , a ra hnh ng b trn hoc nh tr c trng ca hng i tng : - M hnh ha mt cch thc t - Gn kt cc thuc tnh v hnh vi li vi nhau - Ti s dng (VD: sau khi xy dng mt lp 'rng' , sau ny khi mun pht trin thm , ta ko phi lm li t u m da vo lp "rng" to thm cc i tng nh "rng la", "rng t" ) - D dng thay i - Tn ti di nhiu hnh thc khc nhau (VD: i tng key blade ca Sora trong KingdomHeart c th dng tn cng qui vt (dng v kh) hoc m kha trong cc mn chi (dng item)) Cc hng lp trnh hng i tng -OOA : Object Oriented Analysis : Phn tch hng i tng vi mc ch m t v mt vn , m t phi nht qun , hon thin , c dc di mi hnh thc khc nhau v n cui cng n phi dc kim tra tnh kh thi trong thc t - theo Mellor "" Design : thit k hng i tng -OOD: "" -OOP: "" "" Programming : Lp trnh hng i tng Chng ta thng kt hp hng i tng v hng th tc Quay v vi Python (mt s t kha trn s ko cn thch hp na , l OOP ca C++ , nhng bn ng qu lo lng , v bn hiu dc bn cht ca hng i tng ri )

Sau y l mt s thut ng quan trng , bn cn nm r phn bit trnh nhm ln Obj c th lu tr d liu ca mnh bng nhng bin thng thng -Nhng bin phc v cho obj v class gi l field (-trng) -Bin ca obj gi l instance variable (iv) -"" "" class gi l class variable (cv) -Nhng hm (function) thuc v class m obj c th s dng gi l method (-phng thc , trc y mnh dch method l th tc v ngh rng lc ni l phng thc s khin bn kh hiu , nay xin sa li ) -Tt c field v method gi chung l attribute (thuc tnh) ca class

Chng ta khai bo mt class bng t kha class class nhan_vat : # khai bo lp nhn_vt def gioi_thieu(self) : # khai bo mt hm trong class , n tr thnh mt method # v cn c s xut hin tham s self print 'Xin chao , toi la mot nhan vat trong game'

# kt thc khai bo mt lp eddy = nhan_vat() eddy.gioi_thieu() # i tng eddy s dng method gioi_thieu ca class nhan_vat # bn lu thy chng ta ko cn truyn tham s y OutPut: Xin chao , toi la mot nhan vat trong game Method gioi_thieu khi dc gi ko cn truyn tham s no ,nhng khi khai bo bt k mt method no chng ta vn cn khai bo thm mt tham s mc nh l self (-bn thn) Self y c tc dng ch dn n i tng ang thc thi method , n gip cho class bit dc i tng no ang yu cu s dng method N cng c nt tng ng vi con tr my,me trong LC V th eddy.gioi_thieu() cng tng ng vi : nhan_vat.gioi_thieu(eddy) (c th tm hiu self dc thay bng eddy) Chng ta s bn thm sau Trong nhng chng trc , chng ta thy mt s method c bit c dng __tn method__ , l nhng method mc nh ca P , by gi chng ta s lm quen vi method __init__ (init l vit tt ca ch initialzation cc bn c th tham kho thm # to mt i tng thuc class nhan_vat

) Mi bn code class nhan_vat : def __init__(self, ten_nhan_vat, suc_manh): # dng (1) c thm hai tham s ngoi self self.ten = ten_nhan_vat self.atk = suc_manh # atk vit tt ca ch attack def gioi_thieu (self) : # bt k method no khi khai bo cng u cn c tham s self print 'ten toi la ',self.ten , 'voi chi so suc manh la ',self.atk eddy = nhan_vat('eddyfosman',1500) # xu 'eddyfosman' l i s ca tham s ten_nhan_vat

eddy.gioi_thieu() OutPut ten toi la eddyfosman voi chi so suc manh la 1500 dng (1) , khi khai bo hai tham s ten_nhan_vat v suc_manh th ng thi chng ta cng to thm hai field mi Nu tinh bn s thy , ct truyn i s khi khi to i tng eddy , nn chng ta buc phi dng method __init__ , cng l mt c im ca __init__ Cn self.ten v self.atk cng l field , trong i tng eddy , chng chuyn thnh iv : eddy.ten v eddy.atk, ct vn thao tc php gn trn cc field nh bnh thng Chng ta bit c hai loi field - cv c th dc truy cp bi bt k mi obj ca class - iv th ko th mi obj khc nhau , n li l mt bin khc , ko lin quan g ti nhau , mc d chng trng tn Mi bn code class nhan_vat : ''' day la lop cac nhan vat trong game ''' so_nhan_vat=0 # bin ny l cv , c tc dng m cc nhn vt trong game , # c th dc truy cp t # cc obj ca class

def __init__(self , ten) : ''' Khoi tao du lieu cho nhan vat ''' # doc string self.ten=ten # cc bn lu rng chng l hai bin khc nhau , mt bin ca obj , mt bin # ca class , nhng bn nn vit tn khc i , trnh nhm ln print '(ten toi la %s)' %self.ten nhan_vat.so_nhan_vat +=1 # tng cv so_nhan_vat ln 1 sau khi to thm mt i tng

def __del__(self): # y cng lm mt method mc nh gip bn xa i tng ''' nhan vat se roi khoi game ''' print '%s phai rut lui khoi chien truong.' % self.ten nhan_vat.so_nhan_vat -=1 # kim tra li s nhn vt if (0== nhan_vat.so_nhan_vat) : print 'Toi la nguoi cuoi cung , chung ta da thua ?' else: print 'Van con lai %d nhan vat.' % nhan_vat.so_nhan_vat

# thao tc vi cc i tng eddy = nhan_vat('eddyfosman') rikky = nhan_vat('rikkyfloren') kairy = nhan_vat('kairylucifer') kairy.__del__() rikky.__del__() eddy.__del__() OutPut (ten toi la eddyfosman) (ten toi la rikkyfloren) (ten toi la kairylucifer) kairylucifer phai rut lui khoi chien truong. Van con lai 2 nhan vat. rikkyfloren phai rut lui khoi chien truong. Van con lai 1 nhan vat. eddyfosman phai rut lui khoi chien truong. Toi la nguoi cuoi cung , chung ta da thua ? Code ko h qu phc tp , bn c th d dng hiu dc nh nhng dng ch thch

Inheritance (Tha k)
Nu bn mun vit mt chng trnh qun l cc nhn vt trong game . Cc nhn vt u c nhng c im chung nh tn , im sinh lc Nhng chng cng c nhng im khc bit , V d : kim s c im attack , rng c im defend Bn c th to hai class ring cho kim s v rng , nhng nu bn mun chn thm mt thuc tnh chung mi , th bn s phi code sa li c hai class , v nu c nhiu hn hai class th bn s phi lp i lp li nhiu ln mt on code Mt cch tt hn l chng ta s to mt class chung gi l nhan_vat , hai class kiem_si v rong s cng tha k class nhan_vat ny V khi bn chn thm mt thuc tnh cho class nhan_vat , th ng thi hai class kia cng dc chn thm thuc tnh Nhng nhng thay i class kiem_si s ko nh hng n class rong Chng ta c th coi cc i tng ca class kiem_si v rong l i tng ca class nhan_vat , t cc obj ca hai class ny c th s dng cc method ca class nhan_vat ( gi l tnh polymorphism-tnh a hnh) Class nhan_vat dc gi l superclass , hay baseclass Class rong, class kiem_si dc gi subclass , derivedclass

class nhan_vat: # khai bo mt base class nh bnh thng ''' Mieu ta nhung dac diem chung cua tat ca cac nhan vat , do la ten

va diem sinh luc''' def __init__(self,ten,sinh_luc): self.t_nhan_vat = ten # bn nn khai bo cc field c tn khc nhau self.sl_nhan_vat = sinh_luc def gioi_thieu(self): print 'Toi la ' , self.t_nhan_vat, 'co' , self.sl_nhan_vat , 'diem sinh luc' class kiem_si(nhan_vat): # khai bo tn ca base class trong du () ''' Mieu ta nhan vat kiem si , thua ke thuoc tinh ten va sinh luc cua Class nhan_vat , thuoc tinh rieng la atk''' def __init__(self, ten , sinh_luc , atk): # chng ta c th cc truy cp cc field , method ca base class bng mu : # tn base class . tn method (self, tham s ) nhan_vat.__init__(self,ten, sinh_luc) # bn cn truyn i s t base class vo subclass nh trn # by gi c th coi nh class kiem_si cng c hai dng lnh ca class nhan_vat # self.t_nhan_vat = ten # self.sl_nhan_vat = sinh_luc self.atk_nhan_vat=atk # y l thuc tnh ring ca class kiem_si def gioi_thieu(self): nhan_vat.gioi_thieu(self) print 'Luc tan cong %d' % self.atk_nhan_vat class rong(nhan_vat): '''Mieu ta nhan vat rong''' def __init__(self,ten,sinh_luc,defend): nhan_vat.__init__(self,ten,sinh_luc) self.df_nhan_vat=defend def gioi_thieu(self): nhan_vat.gioi_thieu(self) print 'Luc phong thu %d' %self.df_nhan_vat eddy=kiem_si('eddyfosman',2000,1500) dragon=rong('rong_vang',3000,2000) # hai dng code sau ko lin quan n tnh tha k print eddy # hai dng ny gip chng ta chng minh dc , eddy v dragon ch l nhng ci tn print dragon # n ch dn n v tr lu tr thng tin ca hai i tng ny trong b nh # vic self ch dn n tn ca i tng , # m tn ca i tng cng ch dn n i tng , trong

# C gi l con tr ca con tr cac_nhan_vat=[eddy,dragon] # to mt list for i in cac_nhan_vat : # bin i cng ng vai tr nh mt reference ch dn n obj cn thao tc i.gioi_thieu() OutPut <__main__.kiem_si instance at 0x00D33260> <__main__.rong instance at 0x00D332D8> # c th dch l i tng ca chng ta ang thc s nm v tr 0x00D33260 trong b nh, thuc class kiem_si trong module __main__ Toi la eddyfosman co 2000 diem sinh luc Luc tan cong 1500 Toi la rong_vang co 3000 diem sinh luc Luc phong thu 2000

Vy l bn d tr thnh mt lp trnh c t nhiu kinh nghim vi Python , nhng bn vn cn tham kho them manual ca Python Nu bn mun tip tc pht trin game , mnh xin nu hai con ng m mnh cho l ph hp : - Blender : Logic Block ca B tht mnh m , bn c th lm mt game mini bn nhau theo phong cch CounterStrike m ko cn ng n mt dng code , rt hp vi nhng ngi ko phi l coder - Panda : y l game engine ca hng hot hnh WaltDisney dng lm mt s game thng mi nh ToonTownOnline, PirateOnline (Cp bin vng Caribe ), nhng mini game trn trang game ca WaltDisney Panda tr thnh OpenSource khong 2 nm (nhng WaltDissney vn ang dng n lm game), n nh ,d hc v dng Python, l la chn tt nu bn mun lm mt game cc ln (nhng n ko c kh nng v nh B nn bn vn cn dng B) Trang ch ca Panda l www.panda3d.org , bn hy down Panda.exe 55MB v manual reference 10 MB Trong th mc ci t c th mc Sample , bn hy th nghim chng Khi test cc demo ca Panda ,bn hy m

kim tra xem ti u ha CPU ca Panda , bn s rt ngc nhin khi thy CPU thng ko chy qu 50 phn trm

ch tr trong demo feature ny

l Panda khin CPU i lc chy ln 100 phn trm , ri sau li gim xung c th do terrain rng qu

V trong demo game AirBlade , khi chi CPU cng ko chy qu 60 phn trm , nhng khi bn nhn nt continue sau khi game over ln th hai th CPU t ngt tng ln 100 % , lc no cng nh vy

iu ng ni y (v cng l mt trong nhng l do mnh chn Panda) khi mnh test cc engine khc nh Blender , IrrLitch , 3DGS th chng u chy n 100 phn trm CPU d ch l mt demo rt n gin y l cu hnh my ca mnh , share 16 MB RAM cho VGA

3DGS:

Kt qu ca test ny chng c ngha g c , mnh ko mun ni rng Panda n nh hn 3DGS v mi engine li c mt c ch ti u ha khc nhau (nh tc update cc thng s , thit t max fps), m mnh mun chng minh cho bn thy s nghim tc ca nhng ngi pht trin Panda ng thi Pnd dc mi ngi nh gi rt cao bi n d hc v s dng

Nu c iu kin bn hy n thm forum ca Panda ti panda3d.org Bn c th t th nghim so snh Panda vi cc game engine khc EddyFosman FOS l vit tt ca ch Free Open Source

M'sBLOG ion2.1 GameDevelope

You might also like