Sei sulla pagina 1di 11

Code C For Win

Snake game Build bng Visual Studio 2008, Win32 Project !include "#indo#s $% !include "cmat$% !include "ctime% !de&ine S'()*+,(+,*+, 30 !de&ine S'()*+,(-'C 30 !de&ine ./*0(P)*0 1 !de&ine P)*0(./*0 2 !de&ine ./2+(-3'0 3 !de&ine -3'0(./2+ 4 t56ede& struct ((tagSnake 7 c$ar 89 :; toa do 8 ;: c$ar 59 :; toa do 5 ;: struct ((tagSnake ;Pre<9 :; k$uc nga5 truoc ;: struct ((tagSnake ;+e8t9 :; ku$c nga5 sau ;: = S+*>29 t56ede& struct ((tag?5Poit 7 c$ar 89 c$ar 59 = ?@P'0+.9 :; .oa do t$uc an 9AA ;: S+*>2 ;-auSnake, ;-uoiSnake9 ?@P'0+. .$uc*n9 :; .$uc an cua ran ;: &loat Widt$PerBine, )eig$tPerBine9 :; ?ot dongC daiC bao n$ieu ;: c$ar )uong-iCuaSnake9 :; )uong di c$u5en cua ran ;: bool 0s.imer>illed D &alse9 <oid VeBuoiE)W+- $Wnd, )-C $-C, /2C. rcA :; Ve luoi duong di cua ran ;: 7 int 8(6oint, 5(6oint9

&or Eint i D 19 i " S'()*+,(+,*+,9 FFiA 7 8(6oint D i;Widt$PerBine9 ?o<e.o28E$-C, 8(6oint, 0, +3BBA9 Bine.oE$-C, 8(6oint, rc bottom G rc to6A9 = &or Eint i D 19 i " S'()*+,(-'C9 FFiA 7 5(6oint D i;)eig$tPerBine9 ?o<e.o28E$-C, 0, 5(6oint, +3BBA9 Bine.oE$-C, rc rig$t G rc le&t, 5(6ointA9 = = <oid ,enerate.$uc*nEA :; >$oi tao toa do cua t$uc an ;: 7 S+*>2 ;CurSnake, ;Snake.m69 bool 0sSuccess D &alse9 CurSnake D -uoiSnake9 #$ile EH0sSuccessA 7 .$uc*n 8 D Ec$arAErandEA I ES'()*+,(+,*+, G 1AA9 :; -ua ra gia tri ngau n$ien ;: .$uc*n 5 D Ec$arAErandEA I ES'()*+,(-'C G 1AA9 :; -ua ra gia tri ngau n$ien ;: do 7 Snake.m6 D CurSnakeG%+e8t9 i& EE.$uc*n 8 DD CurSnakeG%8AJJE.$uc*n 5 DD CurSnakeG%5AA :; .oa do trung <oi t$an ranK ;: break9 i& ECurSnake DD -auSnakeA :; -a du5et 8ong, 'k ;: 0sSuccess D true9 = #$ile ECurSnake D Snake.m6A9 = =

<oid VeSnakeE)W+- $Wnd, )-C $-C, /2C. rcA 7 S+*>2 ;CurSnake, ;Snake.m69 /2C. Snake/c9 CurSnake D -uoiSnake9 :; Ve t$uc an ;: Snake/c to6 D )eig$tPerBine;.$uc*n 59 Snake/c bottom D )eig$tPerBine;E.$uc*n 5 F 1A9 Snake/c le&t D Widt$PerBine;.$uc*n 89 Snake/c rig$t D Widt$PerBine;E.$uc*n 8 F 1A9 Fill/ectE$-C, JSnake/c, E)B/3S)A ,etStock'bjectE->,/*@(B/3S)AA9 :; Ve tung k$uc cua t$an ran ;: do 7 Snake.m6 D CurSnakeG%+e8t9 memsetEJSnake/c, 0, siLeo&E/2C.AA9 Snake/c to6 D )eig$tPerBine;CurSnakeG%59 Snake/c bottom D )eig$tPerBine;ECurSnakeG%5 F 1A9 Snake/c le&t D Widt$PerBine;CurSnakeG%89 Snake/c rig$t D Widt$PerBine;ECurSnakeG%8 F 1A9 Fill/ectE$-C, JSnake/c, E)B/3S)A ,etStock'bjectEB.,/*@(B/3S)AA9 = #$ile ECurSnake D Snake.m6A9 = <oid -eleteSnakeEA :; ,iai 6$ong bo n$o ;: 7 S+*>2 ;CurSnake, ;Snake.m69 CurSnake D -uoiSnake9 do 7 Snake.m6 D CurSnakeG%+e8t9 delete CurSnake9 = #$ile ECurSnake D Snake.m6A9 = <oid /enderE)W+- $Wnd, )-C $-CA

7 )B0.?*P $Bitma6, $'ldBitma69 )-C $?em-C9 static int Widt$, )eig$t9 static bool 0s0nitaliLed D &alse9 static /2C. rc9 i& EH0s0nitaliLedA :; >$oi tao mot so bien ;: 7 S+*>2 ;Snake9 S+*>2 ;Snake.em69 ,etClient/ectE$Wnd, JrcA9 Widt$PerBine D E&loatA Erc rig$t G rc le&tA : S'()*+,(+,*+,9 )eig$tPerBine D E&loatA Erc bottom G rc to6A : S'()*+,(-'C9 Widt$ D rc rig$t G rc le&t9 )eig$t D rc bottom G rc to69 Snake D ne# S+*>29 :; +ode 1 ;: Snake.em6 D Snake9 :; +ode 1 ;: -uoiSnake D Snake9 :; +ode 1 ;: Snake D ne# S+*>29 :; +ode 2 ;: Snake.em6G%8 D 09 :; +ode 1 ;: Snake.em6G%5 D 09 :; +ode 1 ;: Snake.em6G%Pre< D +3BB9 :; +ode 1 ;: Snake.em6G%+e8t D Snake9 :; +ode 1 ;: SnakeG%Pre< D Snake.em69 :; +ode 2 ;: Snake.em6 D Snake9 :; +ode 2 ;: Snake D ne# S+*>29 :; +ode 3 ;: Snake.em6G%8 D 19 :; +ode 2 ;: Snake.em6G%5 D 09 :; +ode 2 ;: Snake.em6G%+e8t D Snake9 :; +ode 2 ;: SnakeG%8 D 29 :; +ode 3 ;: SnakeG%5 D 09 :; +ode 3 ;: SnakeG%Pre< D Snake.em69 :; +ode 3 ;: SnakeG%+e8t D +3BB9 :; +ode 3 ;: -auSnake D Snake9

,enerate.$uc*nEA9 :: )uong-iCuaSnake D ./*0(P)*09 )uongCuaBuoc.ie6.$eo D ./*0(P)*09 0s0nitaliLed D true9 = $?em-C D CreateCom6atible-CE$-CA9 $Bitma6 D CreateCom6atibleBitma6E$-C, Widt$, )eig$tA9 $'ldBitma6 D E)B0.?*PASelect'bjectE$?em-C, $Bitma6A9 Fill/ectE$?em-C, Jrc, E)B/3S)A ,etBkColorE$?em-CAA9 VeSnakeE$Wnd, $?em-C, rcA9 VeBuoiE$Wnd, $?em-C, rcA9 BitBltE$-C, 0, 0, Widt$, )eig$t, $?em-C, 0, 0, S/CC'P@A9 -elete'bjectE$Bitma6A9 -elete-CE$?em-CA9 = <oid Snake*n?oiES+*>2 >$uc-uoiA :; .$em 1 k$uc moiK ;: 7 S+*>2 ;Snake?oi.ao/a9 Snake?oi.ao/a D ne# S+*>29 Snake?oi.ao/aG%+e8t D -uoiSnake9 Snake?oi.ao/aG%Pre< D +3BB9 Snake?oi.ao/aG%8 D >$uc-uoi 89 Snake?oi.ao/aG%5 D >$uc-uoi 59 -uoiSnake D Snake?oi.ao/a9 = bool C$eck0&Snake-ieEA :; Co c$et $a5 k ;: 7 S+*>2 ;CurSnake, ;Snake.m69 bool 0s-ie D &alse9 CurSnake D -uoiSnake9 do 7 Snake.m6 D CurSnakeG%+e8t9 s#itc$E)uong-iCuaSnakeA 7

case ./*0(P)*0M i& EE-auSnakeG%8 DD CurSnakeG%8 G 1AJJE-auSnakeG%5 DD CurSnakeG%5AA 0s-ie D true9 break9 case P)*0(./*0M i& EE-auSnakeG%8 DD CurSnakeG%8 F 1AJJE-auSnakeG%5 DD CurSnakeG%5AA 0s-ie D true9 break9 case ./2+(-3'0M i& EE-auSnakeG%5 DD CurSnakeG%5 G 1AJJE-auSnakeG%8 DD CurSnakeG%8AA 0s-ie D true9 break9 case -3'0(./2+M i& EE-auSnakeG%5 DD CurSnakeG%5 F 1AJJE-auSnakeG%8 DD CurSnakeG%8AA 0s-ie D true9 = = #$ile EEH0s-ieAJJESnake.m6 HD -auSnakeAJJECurSnake D Snake.m6AA9 return 0s-ie9 = <oid ((stdcall ?o<eSnakeE)W+- $Wnd, 30+. u?sg, 30+. id2<ent, -W'/d#.imeA :; .in$ toan toa do cua ran ;: 7 S+*>2 ;CurSnake, ;Snake.m6, Sa<e-uoiSnake9 bool 0s*n?oi D &alse9 CurSnake D -uoiSnake9 i& EC$eck0&Snake-ieEAA 7 >ill.imerE$Wnd, 222A9 0s.imer>illed D true9 ?essageBo8E$Wnd, BN-iedN, BN0n&oN, ?B('>O ?B(0C'+0+F'/?*.0'+A9 Send?essageE$Wnd, W?(CB'S2, 0, 0A9 = s#itc$ E)uong-iCuaSnakeA :; +eu an moiC t$i luu lai k$uc cuoiK cungC ;: 7

case ./*0(P)*0M i& EE-auSnakeG%8 DD .$uc*n 8 G1AJJE-auSnakeG%5 DD .$uc*n 5AA 7 memc65EJSa<e-uoiSnake, -uoiSnake, siLeo&ES+*>2AA9 0s*n?oi D true9 = break9 case P)*0(./*0M i& EE-auSnakeG%8 DD .$uc*n 8 F1AJJE-auSnakeG%5 DD .$uc*n 5AA 7 memc65EJSa<e-uoiSnake, -uoiSnake, siLeo&ES+*>2AA9 0s*n?oi D true9 = break9 case ./2+(-3'0M i& EE-auSnakeG%5 DD .$uc*n 5G1AJJE-auSnakeG%8 DD .$uc*n 8AA 7 memc65EJSa<e-uoiSnake, -uoiSnake, siLeo&ES+*>2AA9 0s*n?oi D true9 = break9 case -3'0(./2+M i& EE-auSnakeG%5 DD .$uc*n 5F1AJJE-auSnakeG%8 DD .$uc*n 8AA 7 memc65EJSa<e-uoiSnake, -uoiSnake, siLeo&ES+*>2AA9 0s*n?oi D true9 = = do :; .in$K toanK toa do ma5K k$uc giua ;: 7 Snake.m6 D CurSnakeG%+e8t9

i& ECurSnake HD -auSnakeA 7 CurSnakeG%8 D Snake.m6G%89 CurSnakeG%5 D Snake.m6G%59 = else 7

s#itc$ E)uong-iCuaSnakeA 7 case ./*0(P)*0M i& E-auSnakeG%8 " ES'()*+,(+,*+, G 1AA -auSnakeG%8 FD 19 else -auSnakeG%8 D 09 break9 case P)*0(./*0M i& E-auSnakeG%8 % 0A -auSnakeG%8 GD 19 else -auSnakeG%8 D S'()*+,(+,*+, G 19 break9 case ./2+(-3'0M i& E-auSnakeG%5 " ES'()*+,(-'C G 1AA -auSnakeG%5 FD 19 else -auSnakeG%5 D 09 break9 case -3'0(./2+M i& E-auSnakeG%5 % 0A -auSnakeG%5 GD 19 else -auSnakeG%5 D S'()*+,(-'C G 19 = = = #$ile ECurSnake D Snake.m6A9 i& E0s*n?oiA :; +euK coK an moiC t$iC ;: 7 Snake*n?oiESa<e-uoiSnakeA9 ,enerate.$uc*nEA9 = /edra#Windo#E$Wnd, 0, 0, /-W(0+V*B0-*.2A9 :; Ve lai ran ;: = <oid 'n>e5-o#nE)W+- $Wnd, WP*/*? #Param, BP*/*? lParamA :; >iem tra banC 6$imK ;:

7 int nVirt>e59 nVirt>e5 D EintA #Param9 s#itc$ EnVirt>e5A 7 case V>(-'W+M i& EE)uong-iCuaSnake HD -3'0(./2+AA )uong-iCuaSnake D ./2+(-3'09 break9 case V>(3PM i& E)uong-iCuaSnake HD ./2+(-3'0A )uong-iCuaSnake D -3'0(./2+9 break9 case V>(B2F.M i& E)uong-iCuaSnake HD ./*0(P)*0A )uong-iCuaSnake D P)*0(./*09 break9 case V>(/0,).M i& E)uong-iCuaSnake HD P)*0(./*0A )uong-iCuaSnake D ./*0(P)*09 = = long ((stdcall WndProcE)W+- $Wnd, 30+. u?sg, WP*/*? #Param, BP*/*? lParamA 7 )-C $-C9 P*0+.S./3C. 6s9 s#itc$ Eu?sgA 7 case W?(C/2*.2M srandEtimeE+3BBAA9 Set.imerE$Wnd, 222, 100, ?o<eSnakeA9 break9 case W?(P*0+.M $-C D BeginPaintE$Wnd, J6sA9 /enderE$Wnd, $-CA9 2ndPaintE$Wnd, J6sA9 break9

case W?(>2@-'W+M 'n>e5-o#nE$Wnd, #Param, lParamA9 break9 case W?(CB'S2M i& EH0s.imer>illedA >ill.imerE$Wnd, 222A9 -eleteSnakeEA9 -estro5Windo#E$WndA9 break9 case W?(-2S./'@M PostPuit?essageE0A9 break9 de&aultM return -e&Windo#ProcE$Wnd, u?sg, #Param, lParamA9 = return 09 = int *P02+./@ Win?ainE)0+S.*+C2 $0nst, )0+S.*+C2 $Pre<0nst, BPS./ l6CmdBine, int nCmdS$o#A 7 W+-CB*SS2Q #ce89 )W+- $Wnd9 ?S, msg9 #c$ar(t ;sLClass+ame D BNSnakeN9 #ce8 cbSiLe D siLeo&EW+-CB*SS2QA9 #ce8 cbCls28tra D +3BB9 #ce8 cbWnd28tra D +3BB9 #ce8 l6&nWndProc D WndProc9 #ce8 $0con D Boad0conE+3BB, 0-0(*PPB0C*.0'+A9 #ce8 $0conSm D Boad0conE+3BB, 0-0(*PPB0C*.0'+A9 #ce8 $Cursor D BoadCursorE+3BB, 0-C(*//'WA9 #ce8 l6sLClass+ame D sLClass+ame9 #ce8 l6sL?enu+ame D +3BB9 #ce8 st5le D CS(-BBCB>S9 #ce8 $0nstance D $0nst9 #ce8 $brBackground D E)B/3S)A EC'B'/(3-F*C2 F 1A9 /egisterClass28EJ#ce8A9

$Wnd D CreateWindo#28E+3BB, sLClass+ame, BNSnake game ECA ngu5enbin$0RN, S WS(S@S?2+3OWS(?0+0?0T2B'Q, CW(3S2-2F*3B., CW(3S2-2F*3B., S U00, U00, )W+-(-2S>.'P, +3BB, $0nst, +3BBA9 S$o#Windo#E$Wnd, nCmdS$o#A9 36dateWindo#E$WndA9 #$ile E,et?essageEJmsg, +3BB, +3BB, +3BBAA 7 .ranslate?essageEJmsgA9 -is6atc$?essageEJmsgA9 = return msg #Param9 =

Potrebbero piacerti anche