From ce16b58108ed1a40d291da8f52fa65f2026bd4fb Mon Sep 17 00:00:00 2001 From: pnjiwsfv3 <3147226574@qq.com> Date: Sun, 2 Jun 2024 14:10:51 +0800 Subject: [PATCH] ADD file via upload --- Images/Bird/Bird1.png | Bin 0 -> 15178 bytes Images/Bird/Bird2.png | Bin 0 -> 15175 bytes Images/Cactus/LargeCactus1.png | Bin 0 -> 1211 bytes Images/Cactus/LargeCactus2.png | Bin 0 -> 1380 bytes Images/Cactus/LargeCactus3.png | Bin 0 -> 1444 bytes Images/Cactus/SmallCactus1.png | Bin 0 -> 1141 bytes Images/Cactus/SmallCactus2.png | Bin 0 -> 1304 bytes Images/Cactus/SmallCactus3.png | Bin 0 -> 1388 bytes Images/Dino/DinoDead.png | Bin 0 -> 1282 bytes Images/Dino/DinoDuck1.png | Bin 0 -> 15240 bytes Images/Dino/DinoDuck2.png | Bin 0 -> 15243 bytes Images/Dino/DinoJump.png | Bin 0 -> 15401 bytes Images/Dino/DinoRun1.png | Bin 0 -> 15285 bytes Images/Dino/DinoRun2.png | Bin 0 -> 15340 bytes Images/Dino/DinoStart.png | Bin 0 -> 1425 bytes Images/Other/BackGround.png | Bin 0 -> 1657 bytes Images/Other/Bullet.png | Bin 0 -> 69 bytes Images/Other/Cloud.png | Bin 0 -> 1235 bytes Images/Other/GameOver.png | Bin 0 -> 1291 bytes Images/Other/ProjectileSnowPea.png | Bin 0 -> 1779 bytes Images/Other/Reset.png | Bin 0 -> 1268 bytes Images/Other/fireball.png | Bin 0 -> 575 bytes bullet.py | 6 +- cloud.py | 14 ++-- dinosaur.py | 31 ++++---- main.py | 122 +++++++++++++++-------------- settings.py | 5 +- 27 files changed, 93 insertions(+), 85 deletions(-) create mode 100644 Images/Bird/Bird1.png create mode 100644 Images/Bird/Bird2.png create mode 100644 Images/Cactus/LargeCactus1.png create mode 100644 Images/Cactus/LargeCactus2.png create mode 100644 Images/Cactus/LargeCactus3.png create mode 100644 Images/Cactus/SmallCactus1.png create mode 100644 Images/Cactus/SmallCactus2.png create mode 100644 Images/Cactus/SmallCactus3.png create mode 100644 Images/Dino/DinoDead.png create mode 100644 Images/Dino/DinoDuck1.png create mode 100644 Images/Dino/DinoDuck2.png create mode 100644 Images/Dino/DinoJump.png create mode 100644 Images/Dino/DinoRun1.png create mode 100644 Images/Dino/DinoRun2.png create mode 100644 Images/Dino/DinoStart.png create mode 100644 Images/Other/BackGround.png create mode 100644 Images/Other/Bullet.png create mode 100644 Images/Other/Cloud.png create mode 100644 Images/Other/GameOver.png create mode 100644 Images/Other/ProjectileSnowPea.png create mode 100644 Images/Other/Reset.png create mode 100644 Images/Other/fireball.png diff --git a/Images/Bird/Bird1.png b/Images/Bird/Bird1.png new file mode 100644 index 0000000000000000000000000000000000000000..eb53e059b3df9bc413fe516cc51ba41464532ae2 GIT binary patch literal 15178 zcmeI3Uu;uV9LFzXG3&@8-~$RwFJ&$gZSSA{x$8|^*xHRQ(6Nje3L50@-m~szZEwBz zj&?K3L}TEa3B1Z;5*!K5B%H{f1(wB+0v2C21PBn z&w9_JCJ)_DQNF`!f6RLM1cubem<~3M_4LbQ!?I7YuMRf)vm!J|0#l;1$wbN!vjKa~SA?;vVQRUOdiA58?i&syFLb>v!AK9d)6fI+{@-vkw<-#eufv{wPAkXrwgKcy0-hR#}db}d< zd6eZvmPJhR$_kIDrl^CXh=C&}iZjYxW-2m3s z3D}E!r*tS33L&@oM0NI53)kbWeLb^M%hvbpYXoF@((m{J1 z?ufaZM0wYlX|?U;At@CHN{}g%D>hW7_!(>I66(yA%eT&4&|(qJE&#tGi-Ve;l+2)- zl;VI%r{aF5+*lsdU-~Z)Ls~-9;fV%I*qUl^^T8OgH#s`4;4!rLRTDRt6TNL{BGOSv%$EXkBbBR^d@H<7gLjBb=@xNj z5ta7lT@K1Ky359>9T^0rfsF|+EFx4uaG^A?F~NmJgbD~Qlm<2?xUh&&0l|gRz{Ug@ z77;2SxKJ9{nBc-9LIngDN&_1cTv$Y?fZ#%DU}J&{iwG4ETqq4}OmJZlp#p*nrGbqJ zE-WHcKyaZnura}fMT80nE|dl~Cb+POPyxY((!j<97ZwpJAh=K(*qGqLB0>cO7fJ&g z6I@tCsDR)?X<%c53yTO95L_q?Y)o)r5upNt3#EaL2`(%mR6uZ{G_Wzjg++u42riTc zHYT{Rh)@B+h0?&rcf{3Le&`aU;FFda_(hEvC$1!O+(if$uv4<&Y`~`~o>o)xU znW9Emiuz?6MTrL~YKgY@sZYBoYF=x1xV=An`TEts)H!w`B`rI4vr~U}IrGk~&L>}b z@aB>|XP54{aBGOa-0XPyz=hA>n|?oj;y|Ci^w7FG8@;0b!lkCzYv7yjCN4JYTT>VL z^FZtMB(=WImZgtOfAIAdVdCgpt;@e1zw*aKR*0=_p^xo9K6?1%XA3{Ho%v|~)@L8O zxoXj*+^p6`8aj4Ok83BVe%-L_t1Va7?;NRLJf@zz6dpdGTzUTZ{=HGF<*4`Cl~e27 zAB%Oi$s5e87oXX5_3y+NEwQ!qiiUk_Z#-~f^7kHBF4uiz!>&^c3gJZabD!)IY}1P( zU%q&->8ERg*7|(??l)~ede64(rWQviTg!NTX6NbLFLA{`!RBi_et5lp@tTf>QxNCv b+w-Y^-`?6<_r{TX;ZLf&vnM>&v2EvnNui27 literal 0 HcmV?d00001 diff --git a/Images/Bird/Bird2.png b/Images/Bird/Bird2.png new file mode 100644 index 0000000000000000000000000000000000000000..1135bb121dc90890d09572c72282ed076bbb8911 GIT binary patch literal 15175 zcmeI3eQXnD9LEodMn-0QA;CZ}wFHr9doSI!>)DoU?Z&2b%x%c_$B^6I)Ad+;SMP3X zH&BQ~6Hpc-28kgW!_a5~CThUQ781c=VuJFL5Q*#`qGY^?7(_(LeD3=8tZR8@!k#s+(UD0eR71!Fowlz4W2>2V zI&6vA7j)KH13EgRt&Xs!0|)Q+x+KQybNKvjmiPH;d`~+#hUIC-Lwgt(=Miccp@wth zUd~Vzi~_nG6WSt;x#8e{L1)}FQvyw=(`k3wac0i+JFa_u~U}*ii1fYCzxhWWC!vI`T4$%yZ8U}!BmbH?lf={YnPuQSk zi3SOfgeeB3z?NN0Dz2HD5!WgJEOb}IXezM^EUcc2X&|FiNV9sfX?9Izw>kg|SqSSu zG&Q|L(-NU0M{j%ZT9RY*B& z8Cv`JFyr&p*EjgWJj*uJ)z$bswPA)~BMmi;KHi_VMN+5R0$mvZa-*&#?K7Sdbpu#O zC+N(dox-J%D+K%S3Ci@P=H^pdc|Oxpi}Qizfo!*2aixBoGm=_#E?_7wwWO{g`c=9D zuXQnju(EdW|6nd-flLCr!C{&d1D>BjWPEGg*5%p`UYgpP??@;!+?c}lz$;AtA4TL-ax?D4oWqk`+^$k&pc2TeadRkklzSBDWiGEw} z;~4m&S?g~u740rf?YeU++FhDj%v`N1W{As;R?>`QSzlFI813-!41~Nq@8JV(~t ztC9hU&WHjpRKq$Zen`>IDeWkm*i}sQ!YLLLk&awqwiJ*DDZ5g#t?)4oJ|WVDN5rW` zR5+V=IVi5^E*qnEWDt}FHYT{Rh)@B+h0?&r1Q!+&Dj>K}8rYcN!XiQi1Q$vJ8xveu zM5ut^LTO-Qf(wfX6%bq~4QxzsVG*GMf(xaAjR`I+B2++dp){~D!G%SH3J5Ng1~w+R zu!v9r!G+Sm#sn7@5h@_KP#V~n;KCw81q2sL0~-@uSVX9R;6iC&V}c8d2o(@qC=F~( zaA6Ul0)h*rfsF|+EFx4uaG^A?F~NmJgbD~Qlm<2?xUh&&0l|gRz{Ug@77;2SxKJ9{ znBc-9LIngDN&_3;5m#05N0&f_zqCxlpHy!8WY@#+=a>$usVz!TLrW-X^A?KwdlG(5 zP*gudQ5V-yl(37U=4)@i_-!La&05?Xsq4s`y?nOrfh~@C)QOYkhw1B?@e_Nyd8O-} z2k&u?`ZqtZN79Wq4;~vH|NZo)1AC7ip1phQySWqbpRS*MbKt;^e~x$VT(Zj?e0(Zg4t;uU-?G~`p0_5} i@oP0jO-|0HzPk0s*2(QJe`EdBwYi}svcG=atN#ISB&PoW literal 0 HcmV?d00001 diff --git a/Images/Cactus/LargeCactus1.png b/Images/Cactus/LargeCactus1.png new file mode 100644 index 0000000000000000000000000000000000000000..566b88f060fc98c81b2e8e317534c6ea320bb516 GIT binary patch literal 1211 zcmeAS@N?(olHy`uVBq!ia0vp^20$Fo!3HGPEpXugQj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS=07?{;ELn2Bde0{8v^K*7iAWdWaj57fJ{tG z$}cUkRRX#c;)UD-xUqS~&|m@vn0`fKfxe-h0mw@*g}%P{mFDKcRTq~8r6Sym)!^cg z%7Rq=pw#00(xPNw#HA^NtSYc_E=o--$uA1Y&(DE{Vn9ZINq%ugeu09sGdR=~G{Q6U zQu51-HNkp(eXTt6ic1pnl2bihY?Xkf=w)W6SQ)sPyBatfySZALSsEI;IyxFSIy+hz zn>ZVpI~lo}IK%Y1+;fBN&c))#g?`@#36Y(eQ++q0Z~Ldbey?B%N} zt=67BcK55@@6NTkw|!XMQ!jN(&x$vb0~K2@GjfQ)(k6{w0C5dAjZ%i9y7{3KmyQM@(rceXRQR3zz?OpF$N>933u9P;}5iCTSjAa~mS9)RByIrsL zz%0(uO$;SQSz=)hJ{Ug`A`9Y7WXrJK5}m2wCUgrKOO`GEVQeg7RDv4cGRpiQUUK(5 z@0;iMdw$QK+&c~Rb@@A<-vL2TzSraO0n32*uvP=Ue|C40!044)ztSiMlqfB8kdqbL zIM^%D?VOLJ+0LU^xoQZ?+s!xm6+d-=U_`-0XJbsNAOSQ4Rqt0Nn(5#axQ%P)Lk`38 zg((BfvkpVEl|m_rYJFZ4#v(J_V0tMRRRzQoI=B@a3mBaREJ@mmjHhD z8Zp4@AxekC@K}_eYJf>m=3uL-(#W8dHrQr2nXNXP#a01hsM(63ID(@_3@0ooVZq>y z#{ja)Y=H2&+#9*T$zcd8ibNntG#WKUag!*wBWAnZj-VKVVMY*P40nbUS~Z5kF`_sOK5@I%?*^+XB6!rh1g0LAKR(#wO zz5huZZt9dc#K(ojh|GY&1R)f`A$Q;%s zG7*6bDLE|r1Y5HuHoFdj1TwognSY&Q-Lfda>tz%C)>^8zwrZ^W`4V-TV+erK|cMpqd!wUJX64UVnpK3_2*Irn%K3P;qe=t?&ZY5TW_S*$l22K zOhEI{Tz-C~<#xLkk8Pv1d8sd7eR@})I9S-K!LRoPId`k@N9HKrt^cvlbGEPt%Ph@J zL~f;9-D}LZqjzs&XY}cwmoq=%u#SGEICUHaB%jUh+1{-$a7*7}8vN4b_{69) z8J|r1e^@y;)~&(kOYq{9uH+D9j_Iowvwomtyz<`I^sSa6d=X;=&(HYeZ2!#kt~$Q_ z+|s*x>tNwY-;AZ=SR`>_$~ZBQjIYK0pZCremChw~fz!4&kvhDS^eqC_e-E3#_=|d& zPA;5k`Q-B8zQAcKJXkh#aymY#-dI|BHj#|0Ok-?qZ(1A6$^|up-jwOIWO2bM6yCJ- zPWIBCg%mOMA(1HTsjE+|+@G^5Bg2hrZ(bc5>DF5Z#y@y;XzJp@GtKioQT@=tuP!bO aLwQieYedCp;V;JQf6rT6?;5LVJ@F6nP4gT8 literal 0 HcmV?d00001 diff --git a/Images/Cactus/LargeCactus3.png b/Images/Cactus/LargeCactus3.png new file mode 100644 index 0000000000000000000000000000000000000000..628a8e65089b1f1183576842c97ac20de31ed933 GIT binary patch literal 1444 zcmeAS@N?(olHy`uVBq!ia0vp^X+Rv$!3HFyR&8PjQj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS=07?{;ELn2Bde0{8v^K*7iAWdWaj57fJ{tG z$}cUkRRX#c;)UD-xUqS~&|m@vn0`fKfxe-h0mw@*g}%P{mFDKcRTq~8r6Sym)!^cg z%7Rq=pw#00(xPNw#HA^NtSYc_E=o--$uA1Y&(DE{Vn9ZINq%ugeu09sGdR=~G{Q6U zQu51-HNkp(eXTt6ic1pnl2bihY?Xkf=w)W6SQ)rE89N)8xVl=JSsEI;IyxFSIy+hz zn>ZVpI~lo}IK%Y13VC)-se6XhRG?Z|Ce6!Tq8Q4)qyAJ+vK7z z!6t&6-HxpBIMduQC(H9>YUle&!j{=CXHFTqo#!>|=v=`*^ZmYuOok$pXWT3GtlB^E zq$5vK-|83M-=!zY98p-dZ_)eO{Zr-$S}}Dv`pmIf?vk*6>cX(h>360732bhQO1`}M zuf`FDwk!|FGdxEs?A{bFQBboooLz1FCf-FUDPOjAMqttzAM1MM5(xog@36Kx7EWh8 zN_{f_GkF3H^ey}NuFh4n?dqh6UF)vf%PY3s>aesr|9|L5om|@k*Y3t2W10HdkbUx|+IN-n w8Iu+XZQi*f%Dw#k&;MadzvoLnk7s0KXp+d%3R`_V9#n36y85}Sb4q9e07zaHWB>pF literal 0 HcmV?d00001 diff --git a/Images/Cactus/SmallCactus1.png b/Images/Cactus/SmallCactus1.png new file mode 100644 index 0000000000000000000000000000000000000000..df1999110d98d6cf5cb62f6f863ebbca0a107688 GIT binary patch literal 1141 zcmeAS@N?(olHy`uVBq!ia0vp^8bIvM!3HEtV^|*nDajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_cg49seoArU1JzCKpT`MG+DAT@dwxdlMo3=B5*6$OdO*{LN8 zNvY|XdA3ULckfqH$V{%1*XSQL?vFu&J;D8jzb> zlBiITo0C^;Rbi_HHrEQs1_|pcDS(xfWZNo192Makpx~Tel&WB=XQrEMU}mmhZmDNz zYHn^~uA^XNU}&muV61O!plf7oWny4uVx#~CNh+i#(Mch>H3D2mX`VkM*2oZxQ#zd*s+860W~8sV9F zDf#8anqWP?zE+-j#U+V($*G<$wn{)#^fEJ3tPI@D3=PZ-j9o3wEDa4^9UToEogFQV zO`MI)os3*foMC!h@{>z*Q}aq-dQ%X3O>pW3C5PMspv^9+MVV!(DQ-pixe8!!TV>*Q ziy=<)pn6kqyTu5nUVWfr^g)q}6xlE#UbP0l+XkKdE$r6 literal 0 HcmV?d00001 diff --git a/Images/Cactus/SmallCactus2.png b/Images/Cactus/SmallCactus2.png new file mode 100644 index 0000000000000000000000000000000000000000..9b1f24cb9b58a92de922b29949f675b0df38e740 GIT binary patch literal 1304 zcmeAS@N?(olHy`uVBq!ia0vp^ErQj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS=07?{;ELn2Bde0{8v^K*7iAWdWaj57fJ{tG z$}cUkRRX#c;)UD-xUqS~&|m@vn0`fKfxe-h0mw@*g}%P{mFDKcRTq~8r6Sym)!^cg z%7Rq=pw#00(xPNw#HA^NtSYc_E=o--$uA1Y&(DE{Vn9ZINq%ugeu09sGdR=~G{Q6U zQu51-HNkp(eXTt6ic1pnl2bihY?Xkf=w)W6SQ)sPyBatfo4ZZVpI~lo}IK%Y1Blno7yG-`$!k zF(ruq(^+Ab{gOp-Ti)*uU7b0rZI*nT+K!x2 zEUJ5v*)Q(Q0JI$F76wM3kCB*8439i7-OGM+D{HOw8J7Jq$84GJG4U{TFFn1=Hl0xy PR91Pq`njxgN@xNA=giGV literal 0 HcmV?d00001 diff --git a/Images/Cactus/SmallCactus3.png b/Images/Cactus/SmallCactus3.png new file mode 100644 index 0000000000000000000000000000000000000000..66000f18f79aed54cbd0ba5bd696b68e7bd1f686 GIT binary patch literal 1388 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 literal 0 HcmV?d00001 diff --git a/Images/Dino/DinoDuck2.png b/Images/Dino/DinoDuck2.png new file mode 100644 index 0000000000000000000000000000000000000000..dabdc1a6016d2c750978f33e22c3564a7e5e2f1f GIT binary patch literal 15243 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 literal 0 HcmV?d00001 diff --git a/Images/Dino/DinoRun2.png b/Images/Dino/DinoRun2.png new file mode 100644 index 0000000000000000000000000000000000000000..027fa673c65bb56714daa1e5faff9a0353cbe856 GIT binary patch literal 15340 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 literal 0 HcmV?d00001 diff --git a/Images/Other/Bullet.png b/Images/Other/Bullet.png new file mode 100644 index 0000000000000000000000000000000000000000..d0b9c736bd58eddd73813b32fee11fda11acf73f GIT binary patch literal 69 zcmeAS@N?(olHy`uVBq!ia0vp^tRT$61SFYwH*Nw_Jf1F&Asn*F2@CXqyZ{EqMA12o PKo*0itDnm{r-UW|W19>f literal 0 HcmV?d00001 diff --git a/Images/Other/Cloud.png b/Images/Other/Cloud.png new file mode 100644 index 0000000000000000000000000000000000000000..718d57ccaf6fea71a376b3b0cd7af5a5846b3237 GIT binary patch literal 1235 zcmeAS@N?(olHy`uVBq!ia0vp^AwZnU!3HER`yM$7q$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~;1FfglShD4M^`1)8S=jZArg4F0$^BXQ!4Z zB&DWj=GiK}-@RW+Av48RDcsc8z_-9TH6zobswg$M$}c3jDm&RSMakYy!KT6rXh3di zNuokUZcbjYRfVk**jy_h8zii+qySb@l5ML5aa4qFfP!;=QL2Keo|$g4ftk62xuu?= zskym{xsHO7fuX6sfw8`^fv%CUm5G6siID;nC;@FNN=dT{a&d#&1?1T(Wt5Z@Sn2DR zmzV368|&p4rRy77T3YHG80i}s=>k>g7FXt#Bv$C=6)VF`a7isrF3Kz@$;{7F0GXJW zlwVq6s|0i@#0$9vaAWg|p}_MqfGNHRn6x(* zzY=0#V089$aSW-r_2#CdP?LcGi$n6;=pX;99~i!1&G*>gB;<4cWOwKdNi&yAyVmh* zPFHW*)cMxg>!p~u&H2yQqqAl$Te7fz%9gViuJPJt-3t`{zAt|FMyaZ+Ja3oI+;66} zeWO%V!ojRZZm-?GZL-eJIL48&(c|JL_S;kP?7Xve)*M&k)iqAqcI=rQ;}bK>toun) zRi9_>yuRknvAMc#F?Y|@-#y!&o$<2uOs!YP>a+(LXJzuH>&N!&J=7|>Vqxt31BZC7 zTv+EHckWZ`=St7*I^NgPN=ld{ZKbM0ozL%cllyv}pEvhvz{P+C4y+mh3z$SS0vNd< z#0myhu8;;MRxO7{2qC(_p^*!y5KIuQ`sv*149pCLtMVU5FE-l&DrP)g{an^LB{Ts5 Da@L?g literal 0 HcmV?d00001 diff --git a/Images/Other/GameOver.png b/Images/Other/GameOver.png new file mode 100644 index 0000000000000000000000000000000000000000..e1e6357bcdb8830dd75662683c6c94bb37f8f97a GIT binary patch literal 1291 zcmaJ>ZA=?w9Di_SAd$#IG;C4x>_`k6+w1$aH)>n@0?jA_tBzz5JlcnH>F$NQt1SgH z(!@>TOz2P&jD&zYBD5nI z;Fu_CMogr;>pH3iVBgDZs6}ZB*3)5u(=jSWm*hmu2B6xR6q#@gDX<+yS>8e1%UmNM z8*vcFEkS)y^q@|*E+wI3sfJKE6${%Vg!6S+oushyjLb%Ffz%Aq(P@wQ_2E^!T*PHTn;TO&FD$I|0yho zx~MlX zI>5^c!-rA8>maa-j%6dXg)*B>Cd%TYJXV9j=dSVCD8H5RSt+B@Z?jsmT(1z0bBI^6 z+{hEIH7{2k2TsJEy+~r;MG?OwaBwGWn#~`JDX-ohHdl=-zb%*2g##}!kSkPG*p(K zTbX?GeV25)>D14fgzjQJSbi|10r+&ff$OdNnWFjl_C`_B;`mgeEi|>&(;A&x7`giJ zLj3G+&dJ$3BcHGSVwh_i?Iat^>^?mnKhJvy@F1p|W+)bX2U-uCC|(XSq#$;?&u zu9N23rP*QUz4yqoBlCtCP@e{U&ff2y9T>P-Tkx5tV7D-^_!HnN1F#sBX+ZH)VD0?T nuHhH@`qiTKLG{h%=xHF!sA-bw!hp4`ML literal 0 HcmV?d00001 diff --git a/Images/Other/ProjectileSnowPea.png b/Images/Other/ProjectileSnowPea.png new file mode 100644 index 0000000000000000000000000000000000000000..59e368ba0a3510a91e8eb64df992d73882911e56 GIT binary patch literal 1779 zcmVy%0`kG8?J9A(m|$$M#H3NGN!t$; z12oaJnnp2VDvCk0#e!%8Sdu? z^5*wG^Zb+dRfb^zptWZDj2SFnwTd_Q?ZYWLfFL3OIp7O`1zZEp1E6?di5371K3S81 zA6b^Qf7-NZzs==x`+@a94zT%uG#;pwB5B)bk&KAWi%1&SmP{tUe(>PIiq_WF@}`rg z=GM-c^BbTY;XQ=k11|s%KPa#S8yy{;d+NlA-GS#_%;)nRzDWsg0^$`vapD=T9` z-F)hoE<06B?{^nu{pnWu{y*F0WM@GdTMM$_{emnyUy!BF4>=<8u`e_0ka-gTk!CU?KfG02-!a#U;4hSF-z`#@r1tg59 zHWVrhP|Co5q7kDk2f`YlwgfaybD3@1^?Ua0Vdct|ScXB$vbbub_}Psip1X9LA9VEb z=Yqo>U(*)~LxIK*g-`?qD6J6ztpzQD_%7D$hcN3u4`2fgCE$h)8wR69a`Wa*g6OHx zG>gsB$CQhVR8#Kp?` z2pa(k_+A7J@Po*% z7XbqRGSRx?P(LD?`=x;5^5x4@M~@yQkx1Zp9t!XU+J=hsI6h59_`74^1OXCRN1#y0 zMu(cvb8(#_p5sQfN5ZnGUAUMVC;!5=&1)bGFNnwj0CVcpsr{EPU!Ky_(?d;74NefE zlp1MdO2?e0|S80az^$QP8o;>AZb93`?+qP$J-ux_C+vKOM1$KRS z3lAZcN)tpdUuzJFEq7}P<5b48Gn7Hqq{*16G&h=#;h%dKzyPZ$+@O z-Me>FSy=@-AYYcnwQSM};&;F3f(Auwv;d;xbZV_phQWlYDl+*Tx36F2&i-G($S^40 z1lmf#O`Dz}47H(@@{b=sPHk{%!06#I7AR6riw^>OUPGNlFpXX z+ucL=-d%*vCjbTnc5t7}2nH}LBF{(q`I(lMtZ3ow!-tV4H;{aCJqnOuB%YH9C?pP+ znY746kW?mv7zW*4w-`9^EBv?j0w9WQ_XXx7?_G<4F9Ht(8w|jHd^PqHYf&{b5dhyu zNgNLBOcqQNcX*g$+eMr|{f_Y6CM1TbmqE6TKk?PL!?AQSqu8Q^7lBHnJdaub2#LBS z7?W#I`3ew0_ZJ8|uMwVaA-vE6BSXmeE5?HZ0jN{(U4*XyDFu+UQKp3;5cuGE2(cU# zZwdSmxB&1`K$DNx1%a;-@0h1Vs8^o*Iq}>n#G*^!-zd%j2Z2^TK}tmUG-dE9>wncO Vu}KzD6srIL002ovPDHLkV1gtSLq7lj literal 0 HcmV?d00001 diff --git a/Images/Other/Reset.png b/Images/Other/Reset.png new file mode 100644 index 0000000000000000000000000000000000000000..a4ea2b8b960bfdc7b7e2509eff1568dd868caf7a GIT binary patch literal 1268 zcmeAS@N?(olHy`uVBq!ia0vp^-awqn!3HE*U&yTiQj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS=07?{;ELn2Bde0{8v^K*7iAWdWaj57fJ{tG z$}cUkRRX#c;)UD-xUqS~&|m@vn0`fKfxe-h0mw@*g}%P{mFDKcRTq~8r6Sym)!^cg z%7Rq=pw#00(xPNw#HA^NtSYc_E=o--$uA1Y&(DE{Vn9ZINq%ugeu09sGdR=~G{Q6U zQu51-HNkp(eXTt6ic1pnl2bihY?Xkf=w)W6SectT8o4>UTDY1!n;IIrIy#z|8(TOV z7#O;^nz)&pTEg_YEaktaqG>U-FeLh5)Bu3onm-@;_=764S}T}0$4OT%U+-Uxty8)%Z^cmS0-m7)Y4F2(dIj9`+boFyt=akR{ E0RAh)4*&oF literal 0 HcmV?d00001 diff --git a/Images/Other/fireball.png b/Images/Other/fireball.png new file mode 100644 index 0000000000000000000000000000000000000000..74348e5b087adc1cf9ba91418eea3e01a4862174 GIT binary patch literal 575 zcmV-F0>J%=P)Px$`AI}UR9HvF)<5WtVHCje&u<`;{8E6*z!{4WNa1(N&^GU>r8#Yy;#cCgWEZi5h`;-A1#l0m{+GZ*T*1i|La9JJ_0C+;zrLS=_igbd0s+poy`QxO7e_;2Bd!%Zc`x)j zBDe8$=|C+!psxlDtbb&30t?c0n^f`ik@6i!+ipWnAb#!ZD&dj#1y2yO|+4Z&+3;a2WfC6gYuhX?Dym6^KEyVn~5r`VUMj75F_$@F?>M(@F*6e|=z5 zh1gxJE)|HaC$^tBF;1sffO{#&u%}eu2==9<^Vm9sz-C-36_}GYoAGJ;Y1)8tUSBb_ zDJVCHj;CuB@aRU!l%CeTASV#8&j^u4SW`&PE+t(Ag83MyajrmMJI>_dy9)H`Y)jpk z&{Ft0cH>zN9^aP=M9vb#qA?fq5HcU|78h`}3%D0kBT!O58$0F#e*jytP9f2IiS7UZ N002ovPDHLkV1i&P`f30G literal 0 HcmV?d00001 diff --git a/bullet.py b/bullet.py index a41264d..ae201ec 100644 --- a/bullet.py +++ b/bullet.py @@ -1,5 +1,6 @@ from dinosaur import * + class Bullet: def __init__(self, game_speed, dinosaur): self.game_speed = game_speed @@ -10,5 +11,6 @@ class Bullet: def update(self): self.rect.x += self.game_speed - def draw(self,SCREEN): - SCREEN.blit(self.image, (self.rect.x, self.rect.y)) \ No newline at end of file + + def draw(self, SCREEN): + SCREEN.blit(self.image, (self.rect.x, self.rect.y)) diff --git a/cloud.py b/cloud.py index a6111c8..4402ac6 100644 --- a/cloud.py +++ b/cloud.py @@ -1,20 +1,22 @@ -from settings import * import random +from settings import * + + class Cloud: def __init__(self, game_speed): # 随机设定云的x,y坐标 - self.x = SCREEN_WIDTH + random.randint(200, 500) # 云先出现在游戏画面外,然后飞入 - self.y = random.randint(50, 200) # 云的y坐标,即离上部分区域的距离 - self.image = CLOUD # image 保存云的图片 + self.x = SCREEN_WIDTH + random.randint(200, 500) # 云先出现在游戏画面外,然后飞入 + self.y = random.randint(50, 200) # 云的y坐标,即离上部分区域的距离 + self.image = CLOUD # image 保存云的图片 self.width = self.image.get_width() self.game_speed = game_speed def update(self): self.x -= self.game_speed - if self.x < -self.width: # 当云从左边出界后又从右边出来 + if self.x < -self.width: # 当云从左边出界后又从右边出来 self.x = SCREEN_WIDTH + random.randint(200, 500) self.y = random.randint(50, 200) def draw(self, SCREEN): - SCREEN.blit(self.image, (self.x, self.y)) \ No newline at end of file + SCREEN.blit(self.image, (self.x, self.y)) diff --git a/dinosaur.py b/dinosaur.py index 832a10e..8665e46 100644 --- a/dinosaur.py +++ b/dinosaur.py @@ -1,11 +1,11 @@ from settings import * -from bullet import Bullet + class Dinosaur: - X_ori = 80 # 恐龙的初始x坐标 - Y_ori = 310 # 恐龙的初始y坐标 - Y_ori_DUCK = 340 # 恐龙的初始低头y坐标 - ori_vy = 7 # 恐龙的初始跳跃速度 + X_ori = 80 # 恐龙的初始x坐标 + Y_ori = 310 # 恐龙的初始y坐标 + Y_ori_DUCK = 340 # 恐龙的初始低头y坐标 + ori_vy = 7 # 恐龙的初始跳跃速度 def __init__(self, game_speed): # 读入setting中恐龙三种状态所属的列表图片 @@ -16,18 +16,17 @@ class Dinosaur: self.gravity = 9.8 self.hp = 2 - # 恐龙的三种状态:低头,奔跑,跳跃 - self.status = 1 # 状态机:0表示低头, 1表示奔跑, 2表示跳跃状态, 3表示往左移动, 4表示往右移动 + self.status = 1 # 状态机:0表示低头, 1表示奔跑, 2表示跳跃状态, 3表示往左移动, 4表示往右移动 self.index = 0 - self.vy = self.ori_vy # 设定初始速度为ori_vy - self.image = self.run_img[0] # 初始的跑步动作下标为0 - self.dino_rect = self.image.get_rect() # get_rect是获取图像的位置信息以及宽度高度 + self.vy = self.ori_vy # 设定初始速度为ori_vy + self.image = self.run_img[0] # 初始的跑步动作下标为0 + self.dino_rect = self.image.get_rect() # get_rect是获取图像的位置信息以及宽度高度 self.dino_rect.x = self.X_ori self.dino_rect.y = self.Y_ori - def update(self, userInput): # userInput <== 键盘输入 + def update(self, userInput): # userInput <== 键盘输入 # 三种状态不断切换 if self.status == 0: self.duck() @@ -64,9 +63,9 @@ class Dinosaur: self.image = self.jump_img if self.status == 2: # 抛物线公式 - self.dino_rect.y -= self.vy * 4 # 在空中下降,注意y轴是向下的,所以需要是-= - self.vy -= 0.5 # 加速度为-0.5 - if self.vy < - self.ori_vy: # 恢复初始跳跃速度 + self.dino_rect.y -= self.vy * 4 # 在空中下降,注意y轴是向下的,所以需要是-= + self.vy -= 0.5 # 加速度为-0.5 + if self.vy < - self.ori_vy: # 恢复初始跳跃速度 self.status = 1 self.vy = self.ori_vy @@ -75,7 +74,7 @@ class Dinosaur: SCREEN.blit(self.image, (self.dino_rect.x, self.dino_rect.y)) # 死亡动画 - def draw_death(self,SCREEN): + def draw_death(self, SCREEN): SCREEN.blit(DEAD, (self.dino_rect.x, self.dino_rect.y)) def showHp(self): @@ -91,4 +90,4 @@ class Dinosaur: def showDead(self): font = pygame.font.SysFont(['方正粗黑宋简体', 'microsoftsansserif'], 30) text = font.render("TAT", True, (0, 0, 0)) - SCREEN.blit(text, (self.dino_rect.x, self.dino_rect.y - 50)) \ No newline at end of file + SCREEN.blit(text, (self.dino_rect.x, self.dino_rect.y - 50)) diff --git a/main.py b/main.py index 0705656..a4e2f56 100644 --- a/main.py +++ b/main.py @@ -3,26 +3,27 @@ import sys import pygame.time -from settings import * -from dinosaur import Dinosaur -from cloud import Cloud from bullet import Bullet +from cloud import Cloud +from dinosaur import Dinosaur +from settings import * +pygame.init() # 初始化pygame +pygame.display.set_caption('谷歌小游戏(小恐龙快跑)') # 设置标题 -pygame.init() # 初始化pygame -pygame.display.set_caption('谷歌小游戏(小恐龙快跑)') # 设置标题 -class Barrier: # 定义一个障碍物基类, 后面的各个障碍物都是Barrier的子类 +class Barrier: # 定义一个障碍物基类, 后面的各个障碍物都是Barrier的子类 def __init__(self, image, type): self.image = image self.type = type self.rect = self.image[self.type].get_rect() - self.rect.x = SCREEN_WIDTH # 先把障碍物放到地图的右下角,然后出来 + self.rect.x = SCREEN_WIDTH # 先把障碍物放到地图的右下角,然后出来 self.game_speed = game_speed - self.hp = 100 # 血量 + self.hp = 100 # 血量 + def update(self): - self.rect.x -= self.game_speed # x坐标向左移动,即障碍物向左移动 - if self.rect.x < -self.rect.width or self.hp <= 0: # 还需要判断障碍物是否移出了边界,如果越界的话我们要把该障碍物释放掉 + self.rect.x -= self.game_speed # x坐标向左移动,即障碍物向左移动 + if self.rect.x < -self.rect.width or self.hp <= 0: # 还需要判断障碍物是否移出了边界,如果越界的话我们要把该障碍物释放掉 barriers.pop() def draw(self, SCREEN): @@ -30,7 +31,7 @@ class Barrier: # 定义一个障碍物基类, 后面的各个障碍物都是Ba # 头顶显示血量 def showHp(self): - font = pygame.font.SysFont(['方正粗黑宋简体','microsoftsansserif'], 30) + font = pygame.font.SysFont(['方正粗黑宋简体', 'microsoftsansserif'], 30) text = font.render("Hp: " + str(self.hp), True, (0, 0, 0)) SCREEN.blit(text, (self.rect.x, self.rect.y - 20)) @@ -38,19 +39,23 @@ class Barrier: # 定义一个障碍物基类, 后面的各个障碍物都是Ba font = pygame.font.SysFont(['方正粗黑宋简体', 'microsoftsansserif'], 30) text = font.render("┗|`O'|┛", True, (0, 0, 0)) SCREEN.blit(text, (self.rect.x, self.rect.y - 70)) + + # barriers的子类 class SmallCactus(Barrier): def __init__(self, image): - self.type = random.randint(0, 2) #随机生成0-2下标,即随机生成3种小仙人掌中的一个 - super().__init__(image, self.type) # super调用父类对象的方法 + self.type = random.randint(0, 2) # 随机生成0-2下标,即随机生成3种小仙人掌中的一个 + super().__init__(image, self.type) # super调用父类对象的方法 self.rect.y = 325 + class LargeCactus(Barrier): def __init__(self, image): self.type = random.randint(0, 2) super().__init__(image, self.type) self.rect.y = 300 + class Bird(Barrier): def __init__(self, image): self.type = 0 @@ -65,9 +70,10 @@ class Bird(Barrier): self.index = 0 SCREEN.blit(self.image[self.index // 5], self.rect) self.index += 1 - def update(self): # 多态实现鸟的上下移动 + + def update(self): # 多态实现鸟的上下移动 self.rect.x -= self.game_speed - if self.rect.x < -self.rect.width or self.hp <= 0: # 还需要判断障碍物是否移出了边界,如果越界的话我们要把该障碍物释放掉 + if self.rect.x < -self.rect.width or self.hp <= 0: # 还需要判断障碍物是否移出了边界,如果越界的话我们要把该障碍物释放掉 barriers.pop() self.rect.y -= self.vy * 3 self.vy -= 0.5 @@ -76,43 +82,44 @@ class Bird(Barrier): self.vy = -self.vy elif self.rect.y >= SCREEN_HEIGHT - 250: self.vy = 10 + + def menu(death_cnt): - global points, max_score# 引入points, max_score全局变量 + global points, max_score # 引入points, max_score全局变量 run = True while run: - SCREEN.fill((255, 255, 255)) # 背景色设置为白色 - font = pygame.font.SysFont('microsoftyahei', 50)# 微软雅黑 - - + SCREEN.fill((255, 255, 255)) # 背景色设置为白色 + font = pygame.font.SysFont('microsoftyahei', 50) # 微软雅黑 if death_cnt == 0: text = font.render("按任意键开始", True, (0, 0, 0)) elif death_cnt > 0: text = font.render("按任意键重新启动", True, (0, 0, 0)) - score = font.render("你的分数: " + str(points), True, (0, 0, 0)) # 分数 + score = font.render("你的分数: " + str(points), True, (0, 0, 0)) # 分数 if death_cnt == 1: max_score = points else: max_score = max(max_score, points) - maxScore = font.render("最高分: " + str(max_score), True, (0, 0, 0)) # 最高分 + maxScore = font.render("最高分: " + str(max_score), True, (0, 0, 0)) # 最高分 scoreRect = score.get_rect() - scoreRect.center = (SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2 + 50) # 将分数显示在游戏屏幕中间 - SCREEN.blit(GAMEOVER, (SCREEN_WIDTH // 2 - 200, SCREEN_HEIGHT // 2 - 200)) # 显示GAMEOVER图片 - SCREEN.blit(score, scoreRect) # 显示分数 - SCREEN.blit(maxScore, (SCREEN_WIDTH // 2 - 170, SCREEN_HEIGHT // 2 + 70)) # 显示最高分数 + scoreRect.center = (SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2 + 50) # 将分数显示在游戏屏幕中间 + SCREEN.blit(GAMEOVER, (SCREEN_WIDTH // 2 - 200, SCREEN_HEIGHT // 2 - 200)) # 显示GAMEOVER图片 + SCREEN.blit(score, scoreRect) # 显示分数 + SCREEN.blit(maxScore, (SCREEN_WIDTH // 2 - 170, SCREEN_HEIGHT // 2 + 70)) # 显示最高分数 textRect = text.get_rect() textRect.center = (SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2) SCREEN.blit(text, textRect) - SCREEN.blit(RUNNING[0], (SCREEN_WIDTH // 2 - 50, SCREEN_HEIGHT // 2 - 140)) #把恐龙的图片显示在菜单界面 + SCREEN.blit(RUNNING[0], (SCREEN_WIDTH // 2 - 50, SCREEN_HEIGHT // 2 - 140)) # 把恐龙的图片显示在菜单界面 # 添加作者信息 - author_font = pygame.font.SysFont('microsoftyahei', 30)# 创建一个字体对象,使用 'microsoftyahei' 字体,字号大小为 30 - author_text = author_font.render("作者: 袁恒", True, (0, 0, 0)) # render 方法的参数依次是:文本内容,是否开启抗锯齿(True 开启),文本颜色(黑色) + author_font = pygame.font.SysFont('microsoftyahei', 30) # 创建一个字体对象,使用 'microsoftyahei' 字体,字号大小为 30 + author_text = author_font.render("作者: 袁恒", True, + (0, 0, 0)) # render 方法的参数依次是:文本内容,是否开启抗锯齿(True 开启),文本颜色(黑色) author_text_rect = author_text.get_rect() - author_text_rect.center = (SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2 + 150) # 设置文本矩形的中心位置 - SCREEN.blit(author_text, author_text_rect) # 使用 blit 方法将渲染后的文本表面绘制到屏幕上 + author_text_rect.center = (SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2 + 150) # 设置文本矩形的中心位置 + SCREEN.blit(author_text, author_text_rect) # 使用 blit 方法将渲染后的文本表面绘制到屏幕上 - pygame.display.update() # 更新画面 + pygame.display.update() # 更新画面 # 判断各个事件, 开始游戏 for event in pygame.event.get(): if event.type == pygame.QUIT: @@ -129,7 +136,7 @@ def main(): clock = pygame.time.Clock() game_speed = 5 # 游戏的速度 - player = Dinosaur(game_speed) # 实例化对象 + player = Dinosaur(game_speed) # 实例化对象 cloud = Cloud(game_speed) @@ -137,7 +144,7 @@ def main(): x_ori_bg = 0 y_ori_bg = 380 points = 0 - font = pygame.font.SysFont(['方正粗黑宋简体','microsoftsansserif'], 20) # 分数的字体 + font = pygame.font.SysFont(['方正粗黑宋简体', 'microsoftsansserif'], 20) # 分数的字体 # 设置障碍物列表 barriers = [] @@ -147,10 +154,10 @@ def main(): def score(): global points, game_speed points += 1 - if points % 150 == 0: # 分数每过150速度加1,时间越长速度越快 + if points % 150 == 0: # 分数每过150速度加1,时间越长速度越快 game_speed += 1 - text = font.render("score: " + str(points), True, (0, 0, 0)) # render(内容,是否抗锯齿,字体颜色,字体背景颜色) + text = font.render("score: " + str(points), True, (0, 0, 0)) # render(内容,是否抗锯齿,字体颜色,字体背景颜色) textRect = text.get_rect() textRect.center = (550, 40) SCREEN.blit(text, textRect) @@ -159,27 +166,26 @@ def main(): global x_ori_bg, y_ori_bg image_width = BG.get_width() SCREEN.blit(BG, (x_ori_bg, y_ori_bg)) - SCREEN.blit(BG, (image_width + x_ori_bg, y_ori_bg)) # 保证图片连续 - if x_ori_bg <= -image_width: # 越界 + SCREEN.blit(BG, (image_width + x_ori_bg, y_ori_bg)) # 保证图片连续 + if x_ori_bg <= -image_width: # 越界 SCREEN.blit(BG, (image_width + x_ori_bg, y_ori_bg)) x_ori_bg = 0 - x_ori_bg -= game_speed # 背景图片每帧往左移game_speed个单位 + x_ori_bg -= game_speed # 背景图片每帧往左移game_speed个单位 flag_hit = 0 # 标记恐龙是否被击中过 death_cnt = 0 # 记录死亡次数,death_cnt = 0显示开始界面,大于0的就会显示重开界面 last_timestamp = 0 # 记录时钟记录的上一个时刻 - last_timestamp_hit = 0 # 记录恐龙受到伤害时钟记录的上一个时刻 - last_timestamp_barr_hit = 0 # 记录障碍物受到伤害时钟记录的上一个时刻 - flag_barr_hit = 0 # 记录障碍物有没有受得伤害 - + last_timestamp_hit = 0 # 记录恐龙受到伤害时钟记录的上一个时刻 + last_timestamp_barr_hit = 0 # 记录障碍物受到伤害时钟记录的上一个时刻 + flag_barr_hit = 0 # 记录障碍物有没有受得伤害 while run: for event in pygame.event.get(): if event.type == pygame.QUIT: run = False - SCREEN.fill((255, 255, 255)) # 背景填充为白色 - userInput = pygame.key.get_pressed() # 从键盘读入按键 + SCREEN.fill((255, 255, 255)) # 背景填充为白色 + userInput = pygame.key.get_pressed() # 从键盘读入按键 # 3s内显示血量的简单逻辑 @@ -189,9 +195,6 @@ def main(): if pygame.time.get_ticks() - last_timestamp_hit > 3000: flag_hit = 0 - - - background() # 画出背景 cloud.draw(SCREEN) # 画出云的图像 @@ -211,16 +214,16 @@ def main(): # 随机等可能生成障碍物 if random.randint(0, 2) == 0: - barriers.append(SmallCactus(SMALL_CACTUS)) # 向列表添加障碍物元素 + barriers.append(SmallCactus(SMALL_CACTUS)) # 向列表添加障碍物元素 elif random.randint(0, 2) == 1: barriers.append(LargeCactus(LARGE_CACTUS)) elif random.randint(0, 2) == 2: barriers.append(Bird(BIRD)) for barrier in barriers: - barrier.draw(SCREEN) # 调用barrier类的draw函数,渲染画面 + barrier.draw(SCREEN) # 调用barrier类的draw函数,渲染画面 barrier.update() - barrier.showHp() # 显示血量 + barrier.showHp() # 显示血量 if flag_barr_hit == 1: if barrier.hp < 100 and pygame.time.get_ticks() - last_timestamp_barr_hit <= 3000: @@ -228,7 +231,7 @@ def main(): if pygame.time.get_ticks() - last_timestamp_barr_hit > 3000: flag_barr_hit = 0 - if player.dino_rect.colliderect(barrier.rect): # pygame的一个方法colliderect检测两个物体是否碰撞 + if player.dino_rect.colliderect(barrier.rect): # pygame的一个方法colliderect检测两个物体是否碰撞 last_timestamp_hit = pygame.time.get_ticks() player.hp -= 1 # 被击中生命值减1 flag_hit = 1 @@ -239,13 +242,13 @@ def main(): player.update(userInput) # 调用dinosaur的update函数每次渲染都判断一次是否按下相应的键位 player.showHp() - if player.hp == 0: # 血量为0时 + if player.hp == 0: # 血量为0时 player.showDead() player.draw_death(SCREEN) - pygame.display.update() # 显示死亡动画 + pygame.display.update() # 显示死亡动画 pygame.time.delay(1000) death_cnt += 1 - menu(death_cnt) # 调出死亡界面 + menu(death_cnt) # 调出死亡界面 # 子弹击中障碍物部分 for bullet in bullets: @@ -263,14 +266,15 @@ def main(): points += 50 barriers.remove(barrier) - # 发射子弹, 并且保证每个子弹的发射间隔小于200毫秒 - if (userInput[pygame.K_SPACE] and pygame.time.get_ticks() - last_timestamp >= 200) or (userInput[pygame.K_SPACE] and last_timestamp == 0): - last_timestamp = pygame.time.get_ticks() # 更新当前时间 + if (userInput[pygame.K_SPACE] and pygame.time.get_ticks() - last_timestamp >= 200) or ( + userInput[pygame.K_SPACE] and last_timestamp == 0): + last_timestamp = pygame.time.get_ticks() # 更新当前时间 bullets.append(Bullet(game_speed, player)) pygame.display.update() + if __name__ == '__main__': - menu(death_cnt = 0) + menu(death_cnt=0) main() diff --git a/settings.py b/settings.py index be4602a..90b2c19 100644 --- a/settings.py +++ b/settings.py @@ -1,6 +1,7 @@ -import pygame import os +import pygame + # 设置游戏界面大小,保存每一个类的图像数据 SCREEN_HEIGHT = 600 SCREEN_WIDTH = 1100 @@ -32,4 +33,4 @@ RESET = pygame.image.load(os.path.join("Images/Other", "Reset.png")) BG = pygame.image.load(os.path.join("Images/Other", "BackGround.png")) -BULLET = pygame.image.load(os.path.join("Images/Other", "ProjectileSnowPea.png")) \ No newline at end of file +BULLET = pygame.image.load(os.path.join("Images/Other", "ProjectileSnowPea.png"))