From ee2e5092bcbbfb423be5dc56f9546b1acbe8a52a Mon Sep 17 00:00:00 2001 From: = Date: Thu, 4 Mar 2021 14:07:44 +0100 Subject: [PATCH] initial commit --- .idea/.gitignore | 8 ++ .idea/ai-project.iml | 8 ++ .../inspectionProfiles/profiles_settings.xml | 6 + .idea/misc.xml | 4 + .idea/modules.xml | 8 ++ .idea/vcs.xml | 6 + assets/apple.png | Bin 0 -> 3945 bytes assets/map1.png | Bin 0 -> 3944 bytes assets/map2.png | Bin 0 -> 3827 bytes assets/map3.png | Bin 0 -> 3878 bytes assets/map4.png | Bin 0 -> 4041 bytes assets/player.png | Bin 0 -> 3491 bytes assets/stone.png | Bin 0 -> 151 bytes assets/tree.png | Bin 0 -> 4006 bytes assets/water.png | Bin 0 -> 3852 bytes assets/wood.png | Bin 0 -> 4143 bytes survival/__init__.py | 44 +++++++ survival/camera.py | 16 +++ survival/game_map.py | 50 ++++++++ survival/game_object.py | 20 +++ survival/player.py | 34 +++++ survival/quad_tree.py | 116 ++++++++++++++++++ survival/stone.py | 9 ++ survival/tile.py | 7 ++ 24 files changed, 336 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/ai-project.iml create mode 100644 .idea/inspectionProfiles/profiles_settings.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 assets/apple.png create mode 100644 assets/map1.png create mode 100644 assets/map2.png create mode 100644 assets/map3.png create mode 100644 assets/map4.png create mode 100644 assets/player.png create mode 100644 assets/stone.png create mode 100644 assets/tree.png create mode 100644 assets/water.png create mode 100644 assets/wood.png create mode 100644 survival/__init__.py create mode 100644 survival/camera.py create mode 100644 survival/game_map.py create mode 100644 survival/game_object.py create mode 100644 survival/player.py create mode 100644 survival/quad_tree.py create mode 100644 survival/stone.py create mode 100644 survival/tile.py diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..4607abd --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Datasource local storage ignored files +/../../../:\ai-project\.idea/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/ai-project.iml b/.idea/ai-project.iml new file mode 100644 index 0000000..d0876a7 --- /dev/null +++ b/.idea/ai-project.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..d1e22ec --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..57157c8 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/assets/apple.png b/assets/apple.png new file mode 100644 index 0000000000000000000000000000000000000000..609435b5b61b8505dc8ef47d77ee1171bc41cd3f GIT binary patch literal 3945 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 Dq25jc literal 0 HcmV?d00001 diff --git a/assets/map1.png b/assets/map1.png new file mode 100644 index 0000000000000000000000000000000000000000..21920bf7671487a801553afe5dc00742d306bc46 GIT binary patch literal 3944 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 literal 0 HcmV?d00001 diff --git a/assets/map4.png b/assets/map4.png new file mode 100644 index 0000000000000000000000000000000000000000..1d49162665e460533a1b61b1acf50b56e5889a32 GIT binary patch literal 4041 zcmV;)4>s_LP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000E^NklzcCUk5^$8rF~kzX%w!bD`4LELSRlfNCy2xn3Dy?E zLcjxrg&%+w5>JqA79eGV2qf$rCTy3}!Slb2^=F4#2=r8Vy7;iQ|Wffh1R-u}wi0Zw+iyStuAD z-lK~NKmvrwNF^}5v&?926lvV{B}plnBnhgtT4qA15DS)(mte5W+&)aQz$7_&qZu(u zC8)e7Q>j!UAqYUr%v91?|Axj7l0XnlWc@UX1k#w01EN-RNUaW*lT8i!+!G>@5^|Mp zf&_g)0?>>`OD2;fDMrTCoA12%+)EJN|HpeU>_2gk1D*}D+x&3OsC_{r3_U@|P<%(NEdI>BEQ>q=GmCSSq7uUwZG6k&s}ZS!-@?K6z`+-QB%P zs#HYu-h1!QpFNEGz2A+mf9V^`yv*~wEKBsUG7>_YrpYa(RwSu@Cd{1QzWnwdfBGGg zW@ct8s8?tg2z1;3>i#@02#G4j7XW6YvrRjbRMk>(xr+U*U;p8?-#v@he}DDo-=mRa zD!Q^7P?8do_Rj8QrXnL`1bp2SBi&|hC-f(A<8CrPrE5N%AjcI(~4uf1^n@J=#ivQIISBy!c&+@k3k zlfhpi9_0JCuT5WURZ^K0D!o&JBDm^19rFb{QLA_i84xcXTv+b)`EFM#dMthEy)X09 zdyj~SL684a!|lY~3kMhSL1bCa=#iNjIm#=YpsafQJb2V3y|8!wSdO{U5n!z|Rmo8a z;>N!|1hD(W-e(0Eim2n#B9#IPAfZ%dmMD?D@$c)o#O~?6`IF`Ovxmjbb#nITO*1nh zqDS=TJ*vaAXNe|M6sI5oH12+Rce&TE9lh5dbTg}{73L&}ioZ_N7%4@vF-l2;2`a+X zY#{m4{>y**;GLHbUKw!aW=3spu$d*3Pi_<0mL3sGz`KdE!`r4Kr5v^RO@>AU?XuiALzJBCx^D-MvkkQ<| zBy*d3XU;wM;nfea=lpP1O4WZg#x<}U*I#P^gs0D)?f3e8e<^mmxw~64_j;$fyVoqD zF?yamzndf5dhRGA8;u65ak!1Atu>K zx_Q-|$D|cBg0OWv*;pGp(sBVrYBWIIMqA>nt@XH9{{IF5n0WExwdBpV00000NkvXXu0mjfo;IVL literal 0 HcmV?d00001 diff --git a/assets/player.png b/assets/player.png new file mode 100644 index 0000000000000000000000000000000000000000..3aebbc3f839d608c7337bcfcbfc453b202268a31 GIT binary patch literal 3491 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 R8$bX6002ovPDHLkV1m+bh9>|3 literal 0 HcmV?d00001 diff --git a/assets/stone.png b/assets/stone.png new file mode 100644 index 0000000000000000000000000000000000000000..a3638f6eacdd6f4a96cb859390862d80a77c0108 GIT binary patch literal 151 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={W7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0h7I;J!GcfQS24TkI`72U@f;yfqjv*f2Z_gSsG8pi%EVQbBJ@vqpw+07p hZ)DP1fQ%j|{LY;I#V3<9OCG3?!PC{xWt~$(69C{OD*ylh literal 0 HcmV?d00001 diff --git a/assets/tree.png b/assets/tree.png new file mode 100644 index 0000000000000000000000000000000000000000..78004b941f61db50329778df96eee5b24777cda2 GIT binary patch literal 4006 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 M07*qoM6N<$f=+jYasU7T literal 0 HcmV?d00001 diff --git a/assets/water.png b/assets/water.png new file mode 100644 index 0000000000000000000000000000000000000000..d08257ae42f8bc0b6be5facd30ee541e57ad6940 GIT binary patch literal 3852 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 horizontal_point + + if rect.x < vertical_point and rect.x + rect.width < vertical_point: + if top_quadrant: + index = 1 + elif bot_quadrant: + index = 2 + elif rect.x > vertical_point: + if top_quadrant: + index = 0 + elif bot_quadrant: + index = 3 + + return index + + def insert(self, game_object): + """ + Inserts given game object into the quadtree. + If objects count exceeds the limit the node is split and + all objects are added to their corresponding nodes. + """ + rect = Rect(game_object.pos[0], game_object.pos[1], game_object.width, game_object.height) + if len(self.nodes) > 0: + index = self.get_index(rect) + + if index != -1: + self.nodes[index].insert(rect) + return + + self.objects.append(game_object) + + if len(self.objects) > self.MAX_OBJECTS and self.level < self.MAX_LEVELS: + if len(self.nodes) == 0: + self.split() + + i = 0 + while i < len(self.objects): + index = self.get_index(self.objects[i]) + if index == -1: + i += 1 + else: + self.nodes[index].insert(self.objects.remove(i)) + + def retrieve(self, objects, game_object): + """ + Returns all objects that collide with given rectangle. + """ + rect = game_object.get_rect() + index = self.get_index(rect) + + if index != -1 and len(self.nodes) > 0: + self.nodes[index].retrieve(objects, rect) + + objects.extend(self.objects) diff --git a/survival/stone.py b/survival/stone.py new file mode 100644 index 0000000..66c66bb --- /dev/null +++ b/survival/stone.py @@ -0,0 +1,9 @@ +import os + +from game.game_object import GameObject + + +class Stone(GameObject): + + def __init__(self, pos): + super().__init__(pos, os.path.join('..', 'assets', 'stone.png')) diff --git a/survival/tile.py b/survival/tile.py new file mode 100644 index 0000000..bff4aab --- /dev/null +++ b/survival/tile.py @@ -0,0 +1,7 @@ +import pygame +from random import randrange + + +class Tile: + def __init__(self): + self.background_id = randrange(4)