From 596fd77b29d01cb020e56a8363ad3ea6b6ba0f38 Mon Sep 17 00:00:00 2001 From: Ong Date: Sun, 17 Oct 2021 14:06:04 +0800 Subject: [PATCH 1/2] Add dinosaur game in Python --- Python/dinosaur_game/Assets/Bird/Bird1.png | Bin 0 -> 15178 bytes Python/dinosaur_game/Assets/Bird/Bird2.png | Bin 0 -> 15175 bytes .../Assets/Cactus/LargeCactus1.png | Bin 0 -> 1211 bytes .../Assets/Cactus/LargeCactus2.png | Bin 0 -> 1380 bytes .../Assets/Cactus/LargeCactus3.png | Bin 0 -> 1444 bytes .../Assets/Cactus/SmallCactus1.png | Bin 0 -> 1141 bytes .../Assets/Cactus/SmallCactus2.png | Bin 0 -> 1304 bytes .../Assets/Cactus/SmallCactus3.png | Bin 0 -> 1388 bytes Python/dinosaur_game/Assets/Dino/DinoDead.png | Bin 0 -> 1282 bytes .../dinosaur_game/Assets/Dino/DinoDuck1.png | Bin 0 -> 15240 bytes .../dinosaur_game/Assets/Dino/DinoDuck2.png | Bin 0 -> 15243 bytes Python/dinosaur_game/Assets/Dino/DinoJump.png | Bin 0 -> 15401 bytes Python/dinosaur_game/Assets/Dino/DinoRun1.png | Bin 0 -> 15285 bytes Python/dinosaur_game/Assets/Dino/DinoRun2.png | Bin 0 -> 15340 bytes .../dinosaur_game/Assets/Dino/DinoStart.png | Bin 0 -> 1425 bytes Python/dinosaur_game/Assets/Other/Cloud.png | Bin 0 -> 1235 bytes .../dinosaur_game/Assets/Other/GameOver.png | Bin 0 -> 1291 bytes Python/dinosaur_game/Assets/Other/Reset.png | Bin 0 -> 1268 bytes Python/dinosaur_game/Assets/Other/Track.png | Bin 0 -> 1657 bytes Python/dinosaur_game/README.md | 25 ++ Python/dinosaur_game/main.py | 301 ++++++++++++++++++ Python/dinosaur_game/requirements.txt | 1 + 22 files changed, 327 insertions(+) create mode 100644 Python/dinosaur_game/Assets/Bird/Bird1.png create mode 100644 Python/dinosaur_game/Assets/Bird/Bird2.png create mode 100644 Python/dinosaur_game/Assets/Cactus/LargeCactus1.png create mode 100644 Python/dinosaur_game/Assets/Cactus/LargeCactus2.png create mode 100644 Python/dinosaur_game/Assets/Cactus/LargeCactus3.png create mode 100644 Python/dinosaur_game/Assets/Cactus/SmallCactus1.png create mode 100644 Python/dinosaur_game/Assets/Cactus/SmallCactus2.png create mode 100644 Python/dinosaur_game/Assets/Cactus/SmallCactus3.png create mode 100644 Python/dinosaur_game/Assets/Dino/DinoDead.png create mode 100644 Python/dinosaur_game/Assets/Dino/DinoDuck1.png create mode 100644 Python/dinosaur_game/Assets/Dino/DinoDuck2.png create mode 100644 Python/dinosaur_game/Assets/Dino/DinoJump.png create mode 100644 Python/dinosaur_game/Assets/Dino/DinoRun1.png create mode 100644 Python/dinosaur_game/Assets/Dino/DinoRun2.png create mode 100644 Python/dinosaur_game/Assets/Dino/DinoStart.png create mode 100644 Python/dinosaur_game/Assets/Other/Cloud.png create mode 100644 Python/dinosaur_game/Assets/Other/GameOver.png create mode 100644 Python/dinosaur_game/Assets/Other/Reset.png create mode 100644 Python/dinosaur_game/Assets/Other/Track.png create mode 100644 Python/dinosaur_game/README.md create mode 100644 Python/dinosaur_game/main.py create mode 100644 Python/dinosaur_game/requirements.txt diff --git a/Python/dinosaur_game/Assets/Bird/Bird1.png b/Python/dinosaur_game/Assets/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/Python/dinosaur_game/Assets/Bird/Bird2.png b/Python/dinosaur_game/Assets/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/Python/dinosaur_game/Assets/Cactus/LargeCactus1.png b/Python/dinosaur_game/Assets/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/Python/dinosaur_game/Assets/Cactus/LargeCactus3.png b/Python/dinosaur_game/Assets/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/Python/dinosaur_game/Assets/Cactus/SmallCactus1.png b/Python/dinosaur_game/Assets/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/Python/dinosaur_game/Assets/Cactus/SmallCactus2.png b/Python/dinosaur_game/Assets/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/Python/dinosaur_game/Assets/Cactus/SmallCactus3.png b/Python/dinosaur_game/Assets/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/Python/dinosaur_game/Assets/Dino/DinoDuck2.png b/Python/dinosaur_game/Assets/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/Python/dinosaur_game/Assets/Dino/DinoRun2.png b/Python/dinosaur_game/Assets/Dino/DinoRun2.png new file mode 100644 index 0000000000000000000000000000000000000000..027fa673c65bb56714daa1e5faff9a0353cbe856 GIT binary patch literal 15340 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 Da@L?g literal 0 HcmV?d00001 diff --git a/Python/dinosaur_game/Assets/Other/GameOver.png b/Python/dinosaur_game/Assets/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/Python/dinosaur_game/Assets/Other/Reset.png b/Python/dinosaur_game/Assets/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/Python/dinosaur_game/Assets/Other/Track.png b/Python/dinosaur_game/Assets/Other/Track.png new file mode 100644 index 0000000000000000000000000000000000000000..b6a88571204f8fc43f89974af49316eb0a14dc80 GIT binary patch literal 1657 zcmaJ=eM}Q)9DW5sK1Sv+GnsSSQB+{kURx+fZ&W^7Ds`41vI#N=r9Ehe*E@R$E!_wW z(IptPh$I7@e1w?HFNP*;Dx0uu0T)Gv)5&C@nHhwFvIWo-sqDSl0)LF%AMd@t_nzl@ zpWnw-Wu$Kp3EB_@00>c~DKY^F)WQA60Drhnj%+H2uQ%A#Y<4$Q$eJ}K0wn9G0s>Ky znj#{T(CEqz{7fVO;Jd|;mCa_Wcj8)#6lge%z(UfH4M0Moh1O_`2^J|JiVQ{>Z>qD4 zhZuA+-X4issHWwF-jHTB5xcGFSz2qcR;uGAZbK3*I20fWR)bi`{YD12$arpD9PYVe zl!v$>Y_W{@(p0uO1CdiE0+9&f_*!8chG0^GNP=OpSTrIQiX^Bo28|K&#W8rS5RVlj zo`(l-GwBNPOoh^O7mQ>)J1VfdWw6Jl7;oMa;E;kVxmNI2g)P8RjGxQWoF?xzd z<0M|Lg3^|dgpu`fbxU03id=3SNE+U(AWVi*LZ>uQB;rmRH>~VMzM`Iot6SNNVnr?r z&7fR!mo?ja1Sg2wE{-k?7KfiO!ihJ*(T>SX?gGGPT%}0PvfQ5>?lYbfuJ!-rs^iVi zdtd2KJH4auwW`QN7ys#(p6k5wNkPw#wukTE|K@S9`)7iSZQ>e#l{ZMLZko5()!uc- z&AIm8M-LJMFSeaK`3Qi~q^5TQj#Zq=NLjxKuc>RgSzF`B#Yy&$*ZFNz1;~z5w?e zWOUOq$Y5hlNA!(CsT-%?cjQ}_z1Ckj-*%zA2-tRwbvKM=*WaCX&JT?(H!vBP6XkSf zxJj3XcAZVGQXD!_0WZ#Hozm#Q9QOxqN#3M$*CVO*Xz2MJHHTq#^bwCM_}P{pdI>kr zl-6Ml^;cdz_MQ2l+qoKiIYpoHn?vW`efXIVxMl9}q|50Al;UAGjt~A3c5iric6RTA zeYO8oo#fj#>23M*s1S?-9(+v=uDPU14Q0Q+I=hN|(s}cRe4*=_eKG=o=_rS9qI*ezNbx`qqRFzK5Wk!iPXCSpR`73b6wv#Dr?JsI{xRK^ZlLAZPqnHtkSi49F*L? z;p}m3Eore|ZX9czV;6z|6JA{+8`!X{Tt7TLc%H~Pd+pd?Rkxo_?6SHVS{v_#09l{x zR&I4{#mV0Gt{L;aR^sTVkDo_4oFlW_yMXPt(YMF=$`f6E+QGcJ&WQnW@4jVI)h=7= iwyoIH4$k;$=j-{vpxC&1OVq{y?m(5Au4qfiulyI$xjNne literal 0 HcmV?d00001 diff --git a/Python/dinosaur_game/README.md b/Python/dinosaur_game/README.md new file mode 100644 index 00000000..9be97052 --- /dev/null +++ b/Python/dinosaur_game/README.md @@ -0,0 +1,25 @@ +# Dinosaur Game in Pygame +A simple dinosaur game that is similar to chrome no internet dinosaur game + +# Requirements +```bash +pip install -r requirements.txt +``` + +# To play +1. Clone the project. +2. Go into folder + ```bash + cd Python/dinosaur_game + ``` +3. Execute the main file + ```bash + python main.py + # or if you use Python 3 + python3 main.py + ``` + +# Instructions +Just survive by not crashing into obstacles. Use up/space to jump and down to duck + +Enjoy \ No newline at end of file diff --git a/Python/dinosaur_game/main.py b/Python/dinosaur_game/main.py new file mode 100644 index 00000000..67d3688e --- /dev/null +++ b/Python/dinosaur_game/main.py @@ -0,0 +1,301 @@ +import pygame +import os +import random + +pygame.init() + +# Global Constants +SCREEN_HEIGHT = 600 +SCREEN_WIDTH = 1100 +SCREEN = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT)) + +START = pygame.image.load(os.path.join("Assets/Dino", "DinoStart.png")) + +RUNNING = [pygame.image.load(os.path.join("Assets/Dino", "DinoRun1.png")), + pygame.image.load(os.path.join("Assets/Dino", "DinoRun2.png"))] + +JUMPING = pygame.image.load(os.path.join("Assets/Dino", "DinoJump.png")) + +DUCKING = [pygame.image.load(os.path.join("Assets/Dino", "DinoDuck1.png")), + pygame.image.load(os.path.join("Assets/Dino", "DinoDuck2.png"))] + +DEAD = pygame.image.load(os.path.join("Assets/Dino", "DinoDead.png")) + +SMALL_CACTUS = [pygame.image.load(os.path.join("Assets/Cactus", "SmallCactus1.png")), + pygame.image.load(os.path.join("Assets/Cactus", "SmallCactus2.png")), + pygame.image.load(os.path.join("Assets/Cactus", "SmallCactus3.png"))] + +LARGE_CACTUS = [pygame.image.load(os.path.join("Assets/Cactus", "LargeCactus1.png")), + pygame.image.load(os.path.join("Assets/Cactus", "LargeCactus2.png")), + pygame.image.load(os.path.join("Assets/Cactus", "LargeCactus3.png"))] + +BIRD = [pygame.image.load(os.path.join("Assets/Bird", "Bird1.png")), + pygame.image.load(os.path.join("Assets/Bird", "Bird2.png"))] + +CLOUD = pygame.image.load(os.path.join("Assets/Other", "Cloud.png")) + +BG = pygame.image.load(os.path.join("Assets/Other", "Track.png")) + +class Dinosaur: + X_POS = 80 + Y_POS = 310 + Y_POS_DUCK = 340 + JUMP_VEL = 8.5 + + def __init__(self): + self.duck_img = DUCKING + self.run_img = RUNNING + self.jump_img = JUMPING + self.start_img = START + self.dead_img = DEAD + + self.dino_duck = False + self.dino_run = True + self.dino_jump = False + + self.step_index = 0 + self.jump_vel = self.JUMP_VEL + self.image = self.run_img[0] + self.dino_rect = self.image.get_rect() + self.dino_rect.x = self.X_POS + self.dino_rect.y = self.Y_POS + + def update(self, userInput): + if self.dino_duck: + self.duck() + if self.dino_run: + self.run() + if self.dino_jump: + self.jump() + + if self.step_index >= 10: + self.step_index = 0 + + # if player press up and dino not jump + if (userInput[pygame.K_UP] or userInput[pygame.K_SPACE]) and not self.dino_jump: + self.dino_duck = False + self.dino_run = False + self.dino_jump = True + # if player press down and dino not jump + elif userInput[pygame.K_DOWN] and not self.dino_jump: + self.dino_duck = True + self.dino_run = False + self.dino_jump = False + # if player not jumping or pressing down + elif not (self.dino_jump or userInput[pygame.K_DOWN]): + self.dino_duck = False + self.dino_run = True + self.dino_jump = False + + def duck(self): + self.image = self.duck_img[self.step_index // 5] + self.dino_rect = self.image.get_rect() + self.dino_rect.x = self.X_POS + self.dino_rect.y = self.Y_POS_DUCK + self.step_index += 1 + + def run(self): + self.image = self.run_img[self.step_index // 5] + self.dino_rect = self.image.get_rect() + self.dino_rect.x = self.X_POS + self.dino_rect.y = self.Y_POS + self.step_index += 1 + + def jump(self): + self.image = self.jump_img + if self.dino_jump: + self.dino_rect.y -= self.jump_vel * 4 + self.jump_vel -= 0.8 + if self.jump_vel < - self.JUMP_VEL: + self.dino_jump = False + self.jump_vel = self.JUMP_VEL + + def draw(self, SCREEN): + SCREEN.blit(self.image, (self.dino_rect.x, self.dino_rect.y)) + + def die(self): + self.image = self.dead_img + if self.dino_duck: + self.dino_rect = self.image.get_rect() + self.dino_rect.x = self.X_POS + self.dino_rect.y = self.Y_POS + +class Cloud: + def __init__(self): + self.x = SCREEN_WIDTH + random.randint(800, 1000) + self.y = random.randint(50, 100) + self.image = CLOUD + self.width = self.image.get_width() + + def update(self): + self.x -= game_speed + # when cloud fully exit left side of screen + if self.x < - self.width: + self.x = SCREEN_WIDTH + random.randint(2500, 3000) + self.y = random.randint(50, 100) + + def draw(self, SCREEN): + SCREEN.blit(self.image, (self.x, self.y)) + +class Obstacle: + def __init__(self, image, type): + self.image = image + self.type = type + self.rect = self.image[self.type].get_rect() + self.rect.x = SCREEN_WIDTH + + def update(self): + self.rect.x -= game_speed + if self.rect.x < - self.rect.width: + obstacles.pop() + + def draw(self, SCREEN): + SCREEN.blit(self.image[self.type], self.rect) + +class SmallCactus(Obstacle): + def __init__(self, image): + self.type = random.randint(0, 2) + super().__init__(image, self.type) + self.rect.y = 325 + +class LargeCactus(Obstacle): + def __init__(self, image): + self.type = random.randint(0, 2) + super().__init__(image, self.type) + self.rect.y = 300 + +class Bird(Obstacle): + def __init__(self, image): + self.type = 0 + super().__init__(image, self.type) + if random.randint(0, 1) == 0: + self.rect.y = 250 + else: + self.rect.y = 300 + self.index = 0 + + def draw(self, SCREEN): + if self.index >= 10: + self.index = 0 + SCREEN.blit(self.image[self.index//5], self.rect) + self.index += 1 + +def main(): + global game_speed, x_pos_bg, y_pos_bg, points, obstacles + run = True + clock = pygame.time.Clock() + player = Dinosaur() + cloud = Cloud() + game_speed = 14 + x_pos_bg = 0 + y_pos_bg = 380 + points = 0 + font = pygame.font.Font('freesansbold.ttf', 20) + obstacles = [] + death_count = 0 + end = False + + def score(): + global points, game_speed + points += 1 + if points % 100 == 0: + game_speed += 1 + + text = font.render("Points: " + str(points), True, (0, 0, 0)) + textRect = text.get_rect() + textRect.center = (1000, 40) + SCREEN.blit(text, textRect) + + def background(): + global x_pos_bg, y_pos_bg + image_width = BG.get_width() + SCREEN.blit(BG, (x_pos_bg, y_pos_bg)) + SCREEN.blit(BG, (image_width + x_pos_bg, y_pos_bg)) + if x_pos_bg <= - image_width: + SCREEN.blit(BG, (image_width + x_pos_bg, y_pos_bg)) + x_pos_bg = 0 + x_pos_bg -= game_speed + + while run: + + if end: + pygame.time.delay(2000) + death_count += 1 + menu(death_count) + + + for event in pygame.event.get(): + if event.type == pygame.QUIT: + pygame.quit() + exit() + + SCREEN.fill((255, 255, 255)) + userInput = pygame.key.get_pressed() + + background() + + cloud.draw(SCREEN) + cloud.update() + + player.update(userInput) + + if len(obstacles) == 0: + if random.randint(0, 2) == 0: + obstacles.append(SmallCactus(SMALL_CACTUS)) + elif random.randint(0, 2) == 1: + obstacles.append(LargeCactus(LARGE_CACTUS)) + elif random.randint(0, 2) == 2: + obstacles.append(Bird(BIRD)) + + for obstacle in obstacles: + obstacle.draw(SCREEN) + obstacle.update() + # Create a slower obstacle rect for collide because apparently the rect transform faster than the img + # Looks like issue with pygame lib, the faster the game speed the more the imgs lag behind + # obst_collide_rect = obstacle.rect.copy() + # obst_collide_rect.x += 10 + + if player.dino_rect.colliderect(obstacle.rect): + player.die() + end = True + + player.draw(SCREEN) + + score() + + clock.tick(30) + pygame.display.update() + +def menu(death_count): + global points + run = True + while run: + SCREEN.fill((255, 255, 255)) + font = pygame.font.Font('freesansbold.ttf', 30) + + if death_count == 0: + text = font.render("Press any Key to Start", True, (0, 0, 0)) + elif death_count > 0: + text = font.render("Press any Key to Restart", True, (0, 0, 0)) + score = font.render("Your Score: " + str(points), True, (0, 0, 0)) + scoreRect = score.get_rect() + scoreRect.center = (SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2 + 50) + SCREEN.blit(score, scoreRect) + + textRect = text.get_rect() + textRect.center = (SCREEN_WIDTH //2, SCREEN_HEIGHT // 2) + SCREEN.blit(text, textRect) + SCREEN.blit(START, (SCREEN_WIDTH // 2 - 20, SCREEN_HEIGHT // 2 - 140)) + pygame.display.update() + + for event in pygame.event.get(): + if event.type == pygame.QUIT: + pygame.quit() + exit() + if event.type == pygame.KEYDOWN: + if event.key == pygame.K_ESCAPE: + pygame.quit() + + main() + +menu(death_count=0) \ No newline at end of file diff --git a/Python/dinosaur_game/requirements.txt b/Python/dinosaur_game/requirements.txt new file mode 100644 index 00000000..0254322f --- /dev/null +++ b/Python/dinosaur_game/requirements.txt @@ -0,0 +1 @@ +pygame==2.0.1 From 951130c7859d9db701e987d239bebdbd88cc65f5 Mon Sep 17 00:00:00 2001 From: Ong Date: Wed, 20 Oct 2021 16:26:23 +0800 Subject: [PATCH 2/2] Add gameplay pics and edit python readme --- Python/README.md | 1 + .../dinosaur_game/Images/dinosaur-game-menu.png | Bin 0 -> 10891 bytes .../dinosaur_game/Images/dinosaur-game-play.png | Bin 0 -> 8726 bytes Python/dinosaur_game/README.md | 4 ++++ 4 files changed, 5 insertions(+) create mode 100644 Python/dinosaur_game/Images/dinosaur-game-menu.png create mode 100644 Python/dinosaur_game/Images/dinosaur-game-play.png diff --git a/Python/README.md b/Python/README.md index cb0329ae..0b144ff2 100644 --- a/Python/README.md +++ b/Python/README.md @@ -71,3 +71,4 @@ | 70 | [scrap Instagram profile](/Python/InstaScraper) | A python script that grabs all details of username you enter | [sai sumanth kumar](github.com/saisumanthkumar) | | 71 | [Turtle Race Game](/Ptython/turtle_race_game)| A classic race game made using turtle library of python.| [Kashika Jain](https://github.com/Kashika18) | | 72 | [Virus using Turtle lib](/Python/virus-using-turtle) | Generates an animation resulting in a visual of biological virus. | [Dishant Vyas](https://github.com/dishantvyas15) | +| 73 | [Dinosaur Game](/Python/dinosaur_game) | The famous Chrome dinosaur game when there is no Internet | [Ian Yy](https://github.com/Ian-Yy) | \ No newline at end of file diff --git a/Python/dinosaur_game/Images/dinosaur-game-menu.png b/Python/dinosaur_game/Images/dinosaur-game-menu.png new file mode 100644 index 0000000000000000000000000000000000000000..ddd9427f5d1842c0dea90132a3024cdc53342908 GIT binary patch literal 10891 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