From e0d1b70240d488cb4035707a1fee963f577c51ac Mon Sep 17 00:00:00 2001
From: Mohannad Alaya <mohal172@student.liu.se>
Date: Mon, 27 Jan 2025 19:39:57 +0100
Subject: [PATCH] CTF_Done

---
 Manual_ctf.pdf                             | Bin 0 -> 41737 bytes
 __pycache__/ai.cpython-37.pyc              | Bin 0 -> 7054 bytes
 __pycache__/ctf.cpython-37.pyc             | Bin 0 -> 6393 bytes
 __pycache__/gameobjects.cpython-37.pyc     | Bin 0 -> 11419 bytes
 __pycache__/images.cpython-311.pyc         | Bin 0 -> 2402 bytes
 __pycache__/images.cpython-37.pyc          | Bin 0 -> 1224 bytes
 __pycache__/init_objects.cpython-37.pyc    | Bin 0 -> 2546 bytes
 __pycache__/maps.cpython-37.pyc            | Bin 0 -> 2241 bytes
 __pycache__/menu.cpython-37.pyc            | Bin 0 -> 2538 bytes
 __pycache__/print_functions.cpython-37.pyc | Bin 0 -> 2393 bytes
 ai.py                                      | 236 ++++++++++++++
 classes.py                                 |  34 ++
 ctf.py                                     | 335 ++++++++++++++++++++
 data/base.kra                              | Bin 0 -> 20923 bytes
 data/base_blue.png                         | Bin 0 -> 380 bytes
 data/base_gray.png                         | Bin 0 -> 376 bytes
 data/base_orange.png                       | Bin 0 -> 348 bytes
 data/base_red.png                          | Bin 0 -> 328 bytes
 data/base_white.png                        | Bin 0 -> 364 bytes
 data/base_yellow.png                       | Bin 0 -> 355 bytes
 data/bullet.png                            | Bin 0 -> 1207 bytes
 data/explosion.kra                         | Bin 0 -> 17396 bytes
 data/explosion.png                         | Bin 0 -> 3345 bytes
 data/flag.png                              | Bin 0 -> 845 bytes
 data/grass.png                             | Bin 0 -> 2796 bytes
 data/metalbox.png                          | Bin 0 -> 1743 bytes
 data/rockbox.png                           | Bin 0 -> 1405 bytes
 data/tank.kra                              | Bin 0 -> 31644 bytes
 data/tank_blue.png                         | Bin 0 -> 1083 bytes
 data/tank_gray.png                         | Bin 0 -> 1031 bytes
 data/tank_orange.png                       | Bin 0 -> 1011 bytes
 data/tank_red.png                          | Bin 0 -> 1044 bytes
 data/tank_white.png                        | Bin 0 -> 1037 bytes
 data/tank_yellow.png                       | Bin 0 -> 1003 bytes
 data/woodbox.png                           | Bin 0 -> 1526 bytes
 gameobjects.py                             | 345 +++++++++++++++++++++
 images.py                                  |  46 +++
 init_objects.py                            |  89 ++++++
 maps.py                                    |  68 ++++
 menu.py                                    | 106 +++++++
 print_functions.py                         |  70 +++++
 41 files changed, 1329 insertions(+)
 create mode 100644 Manual_ctf.pdf
 create mode 100644 __pycache__/ai.cpython-37.pyc
 create mode 100644 __pycache__/ctf.cpython-37.pyc
 create mode 100644 __pycache__/gameobjects.cpython-37.pyc
 create mode 100644 __pycache__/images.cpython-311.pyc
 create mode 100644 __pycache__/images.cpython-37.pyc
 create mode 100644 __pycache__/init_objects.cpython-37.pyc
 create mode 100644 __pycache__/maps.cpython-37.pyc
 create mode 100644 __pycache__/menu.cpython-37.pyc
 create mode 100644 __pycache__/print_functions.cpython-37.pyc
 create mode 100644 ai.py
 create mode 100644 classes.py
 create mode 100644 ctf.py
 create mode 100644 data/base.kra
 create mode 100644 data/base_blue.png
 create mode 100644 data/base_gray.png
 create mode 100644 data/base_orange.png
 create mode 100644 data/base_red.png
 create mode 100644 data/base_white.png
 create mode 100644 data/base_yellow.png
 create mode 100644 data/bullet.png
 create mode 100644 data/explosion.kra
 create mode 100644 data/explosion.png
 create mode 100644 data/flag.png
 create mode 100644 data/grass.png
 create mode 100644 data/metalbox.png
 create mode 100644 data/rockbox.png
 create mode 100644 data/tank.kra
 create mode 100644 data/tank_blue.png
 create mode 100644 data/tank_gray.png
 create mode 100644 data/tank_orange.png
 create mode 100644 data/tank_red.png
 create mode 100644 data/tank_white.png
 create mode 100644 data/tank_yellow.png
 create mode 100644 data/woodbox.png
 create mode 100644 gameobjects.py
 create mode 100644 images.py
 create mode 100644 init_objects.py
 create mode 100644 maps.py
 create mode 100644 menu.py
 create mode 100644 print_functions.py

diff --git a/Manual_ctf.pdf b/Manual_ctf.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..601854daa42e1fae7ed66c5202999b5a1ff72103
GIT binary patch
literal 41737
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
QFflZ=FyK;Eb@g`x0IQJDnE(I)

literal 0
HcmV?d00001

diff --git a/__pycache__/ai.cpython-37.pyc b/__pycache__/ai.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..a823f57355cee0728e07418968676be6cb0ece67
GIT binary patch
literal 7054
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

literal 0
HcmV?d00001

diff --git a/__pycache__/ctf.cpython-37.pyc b/__pycache__/ctf.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..dd7f19c7622934d1bd77fc232bf63a93e64be4d7
GIT binary patch
literal 6393
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

literal 0
HcmV?d00001

diff --git a/__pycache__/gameobjects.cpython-37.pyc b/__pycache__/gameobjects.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..39bcf4ea4230be5a4eeaa3ea4f609743c36555ed
GIT binary patch
literal 11419
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
BU2^~c

literal 0
HcmV?d00001

diff --git a/__pycache__/images.cpython-311.pyc b/__pycache__/images.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..9e08ecc31bc01976803c0092099ad68a44d101c2
GIT binary patch
literal 2402
zcmZ3^%ge>Uz`!v3!GmN+HU@^rAPx+3KpCI=m>3wQGo&!2Fy=5sL1@M(##F{ECa4OA
z1<WuOGL52w1z85hPGw!j$iT3g5ynU5r7%dsBp9ODQkYs8qS#ZIqd1rtQrS~jP}N3p
zf<@8Hi{b){vZ1Nv28*(ziSmF&InYFT!J?dKqI_UcE;Ld8RE8`8n3ER>!dS?3Dt`+1
zGA0Iw)$p*3Le(XNtQy8n<xk;3*9CR~FRBZ`VtiP{__2ryU=b6<A|`|?md+L>47NuY
zRU9lPf<;Uei<lS|F>x$n5~yP7Y*8X9jKK_=k}p9)<ChFiISdR8p!5n#ho7|=LFu&w
zqymbw;OZ8@!yPIGrb^hr6qrb1tYKKj%)qc3WENPYmVuL@1Y|mx$H0)q3S}@XK+*>j
zV_>LZKy`I3W1gilstN2c)hY}{>WmB}NNFX7sfJ-TV+wN#Crk|kLl&I9jDdk+HC$pg
z<6N|S(8O5IP{AC@P|jGxxB#5D;fkRQR1<<3G+C-N6nyd%Qxp>O6f$!Y(^D1Fit=+6
zN-|OvQW8rN6;d*bQj<&aiz@XLZn1zws>Gc0OLI~b^72a*azGj(x|FJzloT|%Z!zT;
z-(o39EXlaVl9ivCcZ(x8F*7edC9~)jTR~-dVs7d!R<MR!EFjIdSW}CN@{4Y91y>fA
zq~^L-WR~3GOiwL|hY0f~=jWBB7L~*&<`iTkYBJqoNz2Shy~SQ!T9lTUoLUTuP6dTu
z&dydbp~b01#W6mve*R(pG0ypUC5g!;#WB96#hJ-5B`GPXMy9$(21Z7@1x5K;so5pE
z#p#B+28J<Uw-oCYRNmqOxhEdXFA`>8U;ssK@e~FIh6aYG+`K*J{We`Tb2%2Mtx&nh
zt$&4Ezrp1L6AP>9T_K4nI@g7iF9|6xaJeX?c|}OGgS~_O$6ap09-9vgOsu8|;x3;=
zN7fA~xfv=mRF<+`Q82iuV01;n=z@aL2WCbolaCCH{H9+(#0LgOPSX#}Osu9qe*E~r
z#=s+dom=4&x57nkr7PS@7g&^vxfvK3R>(VYFdXDCbF^cAslmX&P{o^CQIL~goSC1e
zSCE%p#hG4|SX>Ndau?+%XD8)XfH^$5sU?XyFdlb#etrs!!;zMgm=0FNl~kIOlUf2|
zYcjnArKKWK1_p-AW&i*Gui`IB%*&3?FG|cyPX(!{;spyN<&;9Wd|+;QMrH|w4^dy4
znv;`X4pz?tR#23h0_H(<rxztwg1P)jiN&cXrh^3#rh~airi1y&rh^6Grh|Df(=|nl
zK-sAXl#7c%aeRxlxF9F9<Q98kQZYE)a>U1jQdxX_5h&M#)50yz5KkZ1_+ZZ{*IS(M
zK)%Ha4&Ynt(7?UL0Snk$?9f2H#R3Y@TWpZPyv12kl$ckXmS2>6i?uj8F(>sFTTy;V
zVoB;PR#1Qx-(m&1wRk1NXHa%60@Vh;IBatBQ%ZAE?TSEg3@XZs7cep~d|+l|WW2$^
z+W>|)7&sfi@Buif+IHE_5Sk-CUw)SS3W<x7Mpq<_E^-@R;Wpmjc!k@nf#U-U2cz-_
z1~?(cz{}sj`G7~P!)rqQMIQAlJnArR^+g`#D?G{#tPt7Si#)1VcvKtMA>6u)JZe{X
z)EYP-Tr}CLi#$qKc$6Ag9&ieGNKNp$$f<aRQ?Y^V1}Fa&PRZ+>@|QT}7qG41xX5XE
zh0_oru5gJ{VS(5R;ftKQS2%SW*gmi^@JVz;U69bc$g6dQS8IjW3a<_I7j@jP=(ykD
z6$i;^T;$cf!mA18A*-vqsN;4;#|<nqga0D0#uZ+T5A4jmS`DlpcxYp818W0okvand
F0{|-HM6Cb-

literal 0
HcmV?d00001

diff --git a/__pycache__/images.cpython-37.pyc b/__pycache__/images.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..df14fe77d23d6471915b508213fae4960fe2b034
GIT binary patch
literal 1224
zcmZ?b<>g{vU|^W^n={3oje+4Yhy%my3=9ko3=9m#cNiELQW#Pga~Pr^G-DKFDq|MY
z0%kDDlFGV}aUo+0gCs)~TMAPOa|=ThdkRYwM=E;?YcpdMXDWLNTQg%6S1Nl7doyDc
zcPe`dM>As-Pbzx~XES3IZz_8VS2JT2Un+YFcQa!Ye=0+kzyiTk{uG{tOi-RsDt`(u
zn8%*N*UXs8p280%1;C^rm=pq&!p)57Y*E6g>?tB(z9^U!1C!!lQUXj$g4KznFa|Sd
zO1%X6*)N$9L@_WhFflMNa4;}1ID>p2!oa{#!jQ$dfT@Hzg|UWVA#*K5r9cTw7V84G
z8is|8wT$5md0H$CB`jI&*<3|lj0_-H!jZyM!%)JqfO8>38j~19Gh-8DBtsrk1Vatu
z0<MJ&!3>(rRT>ID`H3kCiFpc{xryni3TZ|8xe6s2sR}8HC5Z|tnMJ9|CHX~_dJ4B#
zKq6H#&iSP|DGGV{B?>tpjSyW*s>MnQs>Pbzx0v#aZ?P04mSo&w$;!{nyTy^4n3)%!
zl38?%t)MbJF*o%VD_F}d7LfK^tf@ss`9-(5f-8$lQgdA^GD~i8rl*#~Lxg#g^YhA5
zi%Q}Xa|$vNHJNU)q-Ex$-eNB<ElNvFPF=}RB*4JH@XOZODkiizwWv78$JNh2%s(a|
zGr6R+D784IBqb%)$W+(Jz{p6qpeR2pHM>N&INea!z%T~viekNj%3E9@m&AklY@pEQ
z14RL|03#El0HXjS3!@lgkq`p|!%GbY28Jr$)QW<f{Nl{~JiUUv^eWEuqQv52Fq69|
zKRG)ozXHtR$xSUu%z^Q^%k%S7U>uILoWyjnBCe#;oSf7W5L=V!B`6mZi7+rQWG?&v
z|9=&KNn&1he11`4UV17>MHMetAStI5!sP>V%QG@dAbg1W%G8{k{Bp2*9<YL<)D$oe
zqC34Pu@cPXPf9FKMKK*LfG{1*MKT@CM>ZWS05=`XgPE==S_I0tMa&Eg3`Hyq3=Fqe
ziwklxOK!0zCKZFz21k56C?@0Mi$Ea`4&GawA)Y?2@xh)^u2G!uK#pPs2k<R+XyD%B
zfCcO=c4(m9VgUu{EjCDC-r_7NO3W)x%P-2k#af)4n3H;otth`Fu_QH$6%-)Fw^%`L
zEe59?Btj76Ob(me{FKt1R69^EEY<>LK}HTH2__C67A6j4$jHaY$IQdX#>m6S1*HMu
C8e?|=

literal 0
HcmV?d00001

diff --git a/__pycache__/init_objects.cpython-37.pyc b/__pycache__/init_objects.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..1be0cdcb96130a4b12cf0cc7146abfa4ff48ab7d
GIT binary patch
literal 2546
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
S!O6jh1UWgRI5;@CIm7^@DNZW@

literal 0
HcmV?d00001

diff --git a/__pycache__/maps.cpython-37.pyc b/__pycache__/maps.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..9af117ad23c19a21a9617d71234f66f8fa7956d1
GIT binary patch
literal 2241
zcmZ?b<>g{vU|^W^n=@r47X!m%5C?{37#J8F7#J9e9heyyQW#Pga~Pr^G-DK_J3|Un
z3UdoX3Uf146jLfw3QG!03PTEO3P=S6v!*blb3(<~QW#P|7$yc~gVnP^)q!+@^n)-1
zSd0}c&z{1N0>Z2*tYGsn)xpgMtB08fG6!T22*d0JiGlQkFjy>|Gle6CBZVQIIR(T5
z(Htq9DO_Mam`-O&;ZEUBXKH4RVoqgB;Ys0z`UPYL$ZRw^ogeIHh)p0LKrl!Zh{XVv
z2l)xi2ZtDl1@R+99%3#?1mZW4YLE#azwxKAf&B^60}63=6dqeTe+ozjq?bK~4IFX^
z8We_v^<&rxjRCMYQSJx10OVc}4Z$!Tvj4#5f&CBhFPNXspUw@B6Fz9%aHQ~q<Ae`N
z3qZvMApCT;6oC{$a2&CuGNlNm2t(rtVlIdTg&Y^uAFL_tDUeWOPhm(0iGpGaghAm6
z#$ZuU7-Fi0nuf3;ohzL+g(F2IMKql`MJz=mMLeB3ohd~)MFi|3))dBI22F{VpnT<*
z3?gBe36{e&7#J8*8KM|d7^0X`7^9dWc`FK(r&wDUqF6!k*uoISmckLtpvifQ**CGE
z%2~lNPa!j}xFj(zIaMJ)O~E&@Kq0eOAyFYIr!=*oC^N4_AuYd1AtS$Bp(G<!Aw4lS
zRUtRAK%qP{Cr2SCKR;VfA(;*86c7z^jWZ~}D={!I)G*dC#52?|)iA^})-cyF#52{f
z)G)*|*Ra+w#It~X#8h=mAtW(7wOApsSRt_}y)-v9uLNvWab^|RMIdWIHfoe-rj%sp
zC}gB&re~CB>ToGQL1LalVo_0Ir9ydTNd{PJQhr5hu|i2@L8=azUtE${RH9IjUz}Nz
znV$#pW=UdRb}`%p4X}cEn1W(Wg~YrRuuhl|SWiZ(LRwB@x`GCXgsaxn1DoTg$$E<w
z?8IAa5GUSZ1-s)GKbq;ccv1DU-C`+D%}Fa_W?*0_VgV7XAOaMcMeGa=3@aImI2jli
zepx$P#e^2878S?%xcd2r`NsrgCYO{Jr54AOq@<)8nd%xD7#Zmn6y;~7W|!y|ryJ@T
z7{=r#78L6hRNmr<kI&4@EQycj07VYCyk=!%gup5u-^2nvn1W<RXmo;Tkp1B3RA69W
zC}CK@n8KLCSi+RWT*HvXBEkS=v5GJ(WC>=_WUA6qa4t$sECEHQLQ!gRNn&1lPAWJB
zB`Opbq$X#kB`aj+CZ?zADHMUs*JQiJR!|8_Rkv7zQj<$=v4LfaZ*hir`nbjidq%ky
z!NWz9u?XaPaA-gXkUws*fGiRQc?%SH49r4|RU9A>frOJmnnC^n(eSj%2TGd^SqwEy
zk_<JBk_^ENnv7M(3PGtQrA2w*cn75&Sez&2S12TwC?x0S7o}w8fjy^Dp`%c#si&aH
zSOkhIO=hseZZTHeVyuL?j1v@vVCR8Sfn$jz$bBFOFfdnff?SuBU*TBdr^ybAnY_f@
z)cE*YT=DU_`6;D2AU02Yd|_!~4pfFcK0YNsIX=FK8)U2ihyZyQ$tt*gMIcK+jw%L)
z6$c{=69+d38(8!uNYP7Bu)hQ;dI<`XbWq?hFg&n_G87$NZed_xfbxVKUh*?AFuVj=
z3l-9JfHG8J3^^D>%;6=-$1g#)Llv<&Wb!e>jZ=1b8O6ZBpvhJQih&{?kUu~!xy6#3
zSYQwZA`QW$5jLOQ;;?}Pj~&Ph#cm7?3>=Ic%zRR8j3Q`Ij8T9|hKY?)0Si=OlweX}
LVq+A8LJ1}SG??jZ

literal 0
HcmV?d00001

diff --git a/__pycache__/menu.cpython-37.pyc b/__pycache__/menu.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..4044cccd6315b27f771cbb34aafd1d788ff5d798
GIT binary patch
literal 2538
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
Vl+v73J5Wk029?1e`#2amm;veHmec?M

literal 0
HcmV?d00001

diff --git a/__pycache__/print_functions.cpython-37.pyc b/__pycache__/print_functions.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..b131ce0efdfbde62d86ef2276d81c9390d3853ef
GIT binary patch
literal 2393
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

literal 0
HcmV?d00001

diff --git a/ai.py b/ai.py
new file mode 100644
index 0000000..3d80ac3
--- /dev/null
+++ b/ai.py
@@ -0,0 +1,236 @@
+import math
+import pymunk
+from pymunk import Vec2d
+import gameobjects
+from collections import defaultdict, deque
+import images
+import pygame
+
+# NOTE: use only 'map0' during development!
+
+MIN_ANGLE_DIF = math.radians(6) # input degrees
+
+def angle_between_vectors(vec1, vec2):
+    """ Since Vec2d operates in a cartesian coordinate space we have to
+        convert the resulting vector to get the correct angle for our space.
+    """
+    vec = vec1 - vec2
+    vec = vec.perpendicular()
+    return vec.angle
+
+def periodic_difference_of_angles(angle1, angle2):
+    """ Return the periodic difference between two angles. """
+    
+    return (angle1 - angle2)%(2*math.pi)
+
+class Ai:
+    """ A simple ai that finds the shortest path to the target using
+    a breadth first search. Also capable of shooting other tanks and or wooden
+    boxes. """
+
+    def __init__(self, tank,game_objects_list, tanks_list,space,currentmap):
+        """ Ai constructor """
+        self.tank               = tank
+        self.game_objects_list  = game_objects_list
+        self.tanks_list         = tanks_list
+        self.space              = space
+        self.currentmap         = currentmap
+        self.flag = None
+        self.MAX_X = currentmap.width - 1
+        self.MAX_Y = currentmap.height - 1
+
+        self.metal_path = False
+        self.path = deque()
+        self.move_cycle = self.move_cycle_gen()
+        self.update_grid_pos()
+        self.last_shot = pygame.time.get_ticks()
+
+    def ray_cast(self):
+        """Function for detecting ray cast for ai shoot function"""
+
+        angle = self.tank.body.angle + math.pi/2 # adapt to cartesian angles
+        x_bullet = self.tank.body.position[0]+0.5*math.cos(angle)
+        y_bullet = self.tank.body.position[1]+0.5*math.sin(angle)
+        ray_beg = (x_bullet, y_bullet) # same as bullet start
+        ray_max1 = x_bullet + 100 * math.cos(angle)
+        ray_max2 = y_bullet + 100 * math.sin(angle)
+        ray_max = (ray_max1, ray_max2) # projectile line for bullet
+        return self.space.segment_query_first(ray_beg, ray_max, 0, \
+                                              pymunk.ShapeFilter())
+
+    def update_grid_pos(self):
+        """ This should only be called in the beginning,
+            or at the end of a move_cycle. """
+        
+        self.grid_pos = self.get_tile_of_position(self.tank.body.position)
+
+    def maybe_shoot(self):
+        """ Makes a raycast query in front of the tank. If another tank
+            or a wooden box is found, then we shoot. """
+        
+        res = self.ray_cast()
+        if hasattr(res, "shape"):
+            # check for the collision types
+            if isinstance(res.shape.collision_type, int): 
+                col_type = res.shape.collision_type
+                if col_type == 1 or (col_type == 3 and \
+                    res.shape.parent.destructable) or col_type == 2:
+                    ai_bullet = self.tank.shoot()
+                    if ai_bullet != None:
+                        ##unfair Ai (times 1.3)
+                        ai_bullet.body.velocity = ai_bullet.body.velocity*1.3 
+                        self.game_objects_list.append(ai_bullet)
+
+
+    def decide(self):
+        """ Main decision function that gets called on every tick of the game.
+        """
+        self.maybe_shoot()
+        next(self.move_cycle)    
+    
+    
+    def find_shortest_path(self):
+        """ A simple Breadth First Search using integer coordinates as our
+            nodes. Edges are calculated as we go, using an external
+            function. """
+        
+        source_node = self.grid_pos.int_tuple
+        queue = deque() # neighbors (new nodes)
+        visited = set()
+        shortest_path = []
+        queue.append((source_node, shortest_path))
+        
+        while queue: # all tiles in worst case...
+            queue = self.astar_heu(queue) # rearrange according to heu!
+            curr_tile, curr_shortest = queue.popleft()
+            if self.get_target_tile() == curr_tile:
+                curr_shortest.append(curr_tile)
+                shortest_path = curr_shortest
+                return deque(shortest_path[1:])
+            neighbours = self.get_tile_neighbors(curr_tile)
+            for neighbor in neighbours:
+                neighbor = neighbor.int_tuple
+                if neighbor not in visited:
+                    queue.append((neighbor,curr_shortest + [curr_tile])) 
+                    visited.add(neighbor)
+
+
+    def astar_heu(self, input_queue):
+        """ Heurstic function for calculating a path the
+            flag using the shortest distance. """
+        queue = deque(input_queue)
+        astar_queue = deque()
+        curr_min_dist = 1+Vec2d(self.tank.body.position\
+                                ).get_distance(self.get_target_tile())
+        while queue:
+            curr_path =queue.popleft()
+            temp_dist =Vec2d(curr_path[0]).get_distance(self.get_target_tile())
+            if temp_dist < curr_min_dist:
+                astar_queue.appendleft(curr_path)
+                curr_min_dist = temp_dist
+            else:
+                astar_queue.append(curr_path)
+        return astar_queue
+
+    def move_cycle_gen(self):
+        """ A generator that iteratively goes through all the required steps
+            to move to our goal. """
+        while True:
+            path = self.find_shortest_path()
+            if path == None:
+                self.metal_path = True
+                yield
+                continue 
+            if len(path) == 0:
+                yield
+                continue 
+            next_coord = path.popleft()+Vec2d(0.5, 0.5)
+            yield
+
+           # turn()
+            angle_diff = angle_between_vectors(self.tank.body.position,\
+                                               next_coord)
+            angle_next = periodic_difference_of_angles(\
+                                self.tank.body.angle,angle_diff)
+            self.tank.stop_moving()
+            self.tank.body.angle = self.tank.body.angle % (2*math.pi)
+            # Must check when tank is tilted downwords!
+            if (angle_next < -math.pi) or (math.pi > angle_next > 0): 
+                self.tank.turn_left()
+            else:
+                self.tank.turn_right()
+                
+            # correct_angle()
+            while abs(angle_next) > MIN_ANGLE_DIF:
+                angle_next = periodic_difference_of_angles(\
+                                        self.tank.body.angle,angle_diff)
+                yield
+            self.tank.stop_turning()
+            self.tank.accelerate()
+            yield
+
+            # correct_pos()
+            current_dist = self.tank.body.position.get_distance(next_coord)
+            temp_next_dist = current_dist
+            while (current_dist >= temp_next_dist):
+                self.update_grid_pos()
+                # set new next tile when we reach the target!
+                temp_next_dist = current_dist + 1 
+                yield
+            move_cycle = self.move_cycle_gen()
+
+    def get_target_tile(self):
+        """ Returns position of the flag if we don't have it. If we do
+            have the flag, return the position of our home base. """
+        if self.tank.flag is not None:
+            x, y = self.tank.start_position
+        else:
+            self.get_flag() # Ensure that we have initialized it.
+            x, y = self.flag.x, self.flag.y
+        return Vec2d(int(x), int(y))
+
+    def get_flag(self):
+        """ This has to be called to get the flag, since we don't know
+            where it is when the Ai object is initialized. """
+        if self.flag is None:
+        # Find the flag in the game objects list
+            for obj in self.game_objects_list:
+                if isinstance(obj, gameobjects.Flag):
+                    self.flag = obj
+                    break
+        return self.flag
+
+    def get_tile_of_position(self, position_vector):
+        """ Converts and returns the float position of our tank to
+            an integer position."""
+        
+        x, y = position_vector
+        return Vec2d(int(x), int(y))
+
+    def get_tile_neighbors(self, coord_vec):
+        """ Returns all bordering grid squares of the input coordinate.
+            A bordering square is only considered accessible if it is grass
+            or a wooden box. """
+        
+        curr_tile = self.get_tile_of_position(coord_vec)
+        tile1 = Vec2d(curr_tile[0]+1, curr_tile[1])
+        tile2 = Vec2d(curr_tile[0]-1, curr_tile[1])
+        tile3 = Vec2d(curr_tile[0], curr_tile[1]+1)
+        tile4 = Vec2d(curr_tile[0], curr_tile[1]-1)
+        neighbors = [tile1, tile2, tile3, tile4]        
+        return filter(self.filter_tile_neighbors, neighbors)
+      
+
+    def filter_tile_neighbors (self, coord):
+        """ Checks wether a tank can move to the specific tile type"""
+        
+        x = coord[0]
+        y = coord[1]
+        if (x >= 0 and x <= self.MAX_X) and (y >= 0 and y <= self.MAX_Y):
+            box = self.currentmap.boxAt(x,y)
+            if box == 0 or box == 2 or self.metal_path == True and box == 3:
+                return True
+        return False
+
+
+
diff --git a/classes.py b/classes.py
new file mode 100644
index 0000000..da5db56
--- /dev/null
+++ b/classes.py
@@ -0,0 +1,34 @@
+class VideoGame:
+    def __init__(self, title, price, developer, platform):
+        self.title = title 
+        self.price = price
+        self.developer = developer
+        self.platform = platform
+
+    def print_description(self):
+        print()
+        print(f'{self.title} - Now only ${self.price}!!')
+        print(f'Developed by {self.developer} for {self.platform}')
+
+
+
+class PC_Game(VideoGame):
+    def __init__(self, title, price, developer, platform, requirements):
+        super().__init__(title, price, developer, platform)
+        self.requirements = requirements 
+        
+    def print_description(self):
+        super().print_description()
+        print(f'Written by the renowned author {self.requirements}')
+        
+
+
+
+
+videogames = [
+    PC_Game('Crysis 3', 500, 'Crytek', 'PC','Intel HD Graphics 4000 is not the right option')
+    ]
+  
+
+#for videogame in videogames:
+ #   videogame.print_description()
diff --git a/ctf.py b/ctf.py
new file mode 100644
index 0000000..9494dee
--- /dev/null
+++ b/ctf.py
@@ -0,0 +1,335 @@
+import pygame
+import sys
+import time
+from pygame.locals import *
+from pygame.color import *
+import pymunk
+pygame.init()
+pygame.display.set_mode()
+#-- Initialise the clock
+clock = pygame.time.Clock()
+#-- Initialise the physics engine
+space = pymunk.Space()
+space.gravity = (0.0,  0.0)
+space.damping = 0.1# Adds friction to the ground for all objects
+#-- Import from the ctf framework
+import ai
+import images
+import gameobjects
+import maps
+import menu
+import print_functions
+import init_objects
+
+
+#######  Collision functions #################
+        
+def collision_bullet_wall(arb, space, data):
+     """Handle the collision between bullet and wall."""
+     
+     bullet = arb.shapes[0].parent
+     game_objects_list.remove(bullet)
+     space.remove(arb.shapes[0], arb.shapes[0].body)
+     return False
+
+def collision_bullet_box(arb, space, data):
+    """Handle the collision between bullet and box."""
+    
+    bullet = arb.shapes[0].parent
+    space.remove(arb.shapes[0], arb.shapes[0].body)
+    if bullet in game_objects_list:
+        game_objects_list.remove(bullet)
+    box = arb.shapes[1].parent
+    if box.destructable:
+        if box.hitpoints > 1:
+            box.hitpoints = box.hitpoints-1
+        else:
+            if box in game_objects_list:
+                game_objects_list.remove(box)
+            space.remove(arb.shapes[1], arb.shapes[1])
+    return False
+
+def collision_bullet_tank(arb, space, data):
+    """Handle the collision between bullet and tank."""
+    
+    bullet = arb.shapes[0].parent
+    tank = arb.shapes[1].parent
+    if bullet in game_objects_list:
+        game_objects_list.remove(bullet)
+    space.remove(arb.shapes[0], arb.shapes[0].body)
+    flag.is_on_tank = False
+    tank.on_death()
+    return False
+
+            
+def collision_bullet_bullet(arb, space, data):
+    """Handle the collision between bullet and bullet."""
+    
+    bullet1= arb.shapes[1].parent
+    bullet2 = arb.shapes[0].parent
+    if bullet1 in game_objects_list:
+        game_objects_list.remove(bullet1)
+    space.remove(arb.shapes[0], arb.shapes[0].body)
+    if bullet2 in game_objects_list:
+        game_objects_list.remove(bullet2)
+    space.remove(arb.shapes[1], arb.shapes[1].body)
+    return False
+
+def create_collision_handlers():
+    """Creates the handling of collisions
+       between different objects."""
+    
+    handler = space.add_collision_handler(1, 3)
+    handler.pre_solve = collision_bullet_box
+    handler = space.add_collision_handler(1, 10)
+    handler.pre_solve = collision_bullet_wall
+    handler = space.add_collision_handler(1, 2)
+    handler.pre_solve = collision_bullet_tank
+    handler = space.add_collision_handler(1, 1)
+    handler.pre_solve = collision_bullet_bullet
+
+def create_objects():
+    """Creates objects in the game."""
+    
+    init_objects.create_borders(space,current_map)
+    init_objects.create_background(current_map,background)
+    init_objects.create_boxes(game_objects_list, current_map, space)
+    init_objects.create_tanks(tanks_list,game_objects_list , \
+                              current_map, space, multi, ai_list)
+    init_objects.create_bases(game_objects_list , current_map)
+
+
+############## Main loop ######################
+def shoot_bullet(i):
+    """Shoots a bullet from the tank
+       and adds it to the game objects list."""
+    
+    bullet = tanks_list[i].shoot()
+    if bullet != None:
+        game_objects_list.append(bullet)
+        
+
+def keyhandler():
+    """Handles key events for the game."""
+    
+    dic_keydown = {
+            K_UP: tanks_list[0].accelerate,
+            K_DOWN: tanks_list[0].decelerate,
+            K_RIGHT: tanks_list[0].turn_right,
+            K_LEFT: tanks_list[0].turn_left,
+            K_ESCAPE: pygame.quit}
+
+    dic_keyup = {
+                 K_UP: tanks_list[0].stop_moving,
+                 K_DOWN: tanks_list[0].stop_moving,
+                 K_LEFT: tanks_list[0].stop_turning,
+                 K_RIGHT: tanks_list[0].stop_turning }
+    if multi:
+        dic_keydown_multi = {
+            K_w: tanks_list[1].accelerate,
+            K_s: tanks_list[1].decelerate,
+            K_d: tanks_list[1].turn_right,
+            K_a: tanks_list[1].turn_left}
+
+        dic_keyup_multi = {
+
+                 K_w: tanks_list[1].stop_moving,
+                 K_s: tanks_list[1].stop_moving,
+                 K_d: tanks_list[1].stop_turning,
+                 K_a: tanks_list[1].stop_turning}
+        
+        dic_keydown.update(dic_keydown_multi)
+        dic_keyup.update(dic_keyup_multi)
+    return dic_keydown, dic_keyup 
+    
+    
+def tank_win(tank, max_round, max_time):
+    """Handles the scenario when a tank wins the game."""
+    
+    player = 1
+    flag.x, flag.y = flag_start
+    flag.is_on_tank = False
+    tank.flag = None
+    tank.points = tank.points +1
+    for i in tanks_list:
+        i.stop_moving() # make sure no speed when respawn
+        i.body.position = i.start_position
+        print("Player",player,":",i.points)
+        player = player+1
+    print_functions.print_score_result(screen,tanks_list)
+    print("============")
+    
+    if tank.points == 2 or max_round == 10  or max_time>1800*5: # 1800 == 1 min
+        return False
+    return True
+
+
+def fog_of_war():
+    """Implements the fog of war effect for the game."""
+    
+    tank_pixle_pos = 40
+    tile_pixle_size = 100
+    fog_pixle_radius = 90
+    color_black = (255,255,255)
+    color_white = (0,0,0)
+    
+    map_pixle_size = ((current_map.width+1)*tile_pixle_size,\
+                      (current_map.height+1)*tile_pixle_size)
+    x = tanks_list[0].body.position[0]*tank_pixle_pos
+    y = tanks_list[0].body.position[1]*tank_pixle_pos
+    surface1 = pygame.Surface(map_pixle_size)
+    pygame.draw.circle(surface1, color_black, (x,y), \
+                       fog_pixle_radius,pygame.SRCALPHA)
+
+    # add the extra fog vision in case of multiplayer 
+    if multi:
+        x_multi = tanks_list[1].body.position[0]*tank_pixle_pos
+        y_multi = tanks_list[1].body.position[1]*tank_pixle_pos
+        pygame.draw.circle(surface1, color_black,(x_multi,y_multi),
+                           fog_pixle_radius,pygame.SRCALPHA)
+        
+    pygame.draw.rect(surface1, color_white,(map_pixle_size[0], \
+                                            map_pixle_size[1],0,0))
+    surface1.set_colorkey(color_black)  
+    screen.blit(surface1, (0,0))
+    
+def main_loop():
+    """The main loop of the game where events are handled,
+       game objects are updated and displayed on the screen."""
+    
+    
+    # init key inputs!
+    dic_keydown, dic_keyup = keyhandler()
+    
+    running = True
+    skip_update = 0
+
+    # Create the tank, images.tanks contains the image representing the tank
+    count_rounds = 1
+    count_time = 0
+    
+    while running:
+        count_time = count_time +1
+
+        for event in pygame.event.get():
+            if event.type == KEYDOWN:
+                if event.key in dic_keydown:
+                    dic_keydown[event.key]()
+                elif event.key == K_RETURN:
+                    shoot_bullet(0)
+                elif event.key == K_SPACE:
+                    shoot_bullet(1)
+            
+            elif event.type == KEYUP:
+                if event.key in dic_keyup:
+                    dic_keyup[event.key]()
+            
+#-- Update physics
+
+        if skip_update == 0:
+
+            for obj in game_objects_list:
+                obj.update()
+            skip_update = 2
+        else:
+            skip_update -= 1
+            
+        space.step(1 / FRAMERATE)
+
+    #<INSERT DISPLAY BACKGROUND>
+
+# Display the background on the screen
+        screen.blit(background, (0, 0))
+
+    #<INSERT DISPLAY OBJECTS>
+        
+    # Update the display of the game objects on the screen
+        for i in tanks_list:
+            if i.has_won():
+                count_rounds = count_rounds +1
+                running = tank_win(i,count_rounds, count_time)
+            i.post_update(flag)
+            
+                
+        for i in ai_list:
+            i.decide()
+            
+        for obj in game_objects_list:
+            obj.update_screen(screen)
+            obj.update()
+
+        if FOG:
+            fog_of_war()
+            
+        if game_mode == 1:
+            print_functions.print_stats_score(screen,\
+                                              tanks_list, current_map)
+            
+        elif game_mode == 2:
+            print_functions.print_stats_time(screen, \
+                                             count_time, current_map)
+            
+        elif game_mode == 3:
+            print_functions.print_stats_round(screen,\
+                                              count_rounds , current_map)
+      
+    #   Redisplay the entire screen (see double buffer technique)  
+        pygame.display.flip()
+
+    #   Control the game framerate
+        clock.tick(FRAMERATE)
+
+    #   Redisplay the entire screen (see double buffer technique)
+        pygame.display.flip()
+
+    #   Control the game framerate
+        clock.tick(FRAMERATE)
+
+# main
+try:
+    if str(sys.argv[1]) == "--singleplayer":
+        multi = False
+    if str(sys.argv[1]) == "--hot-multiplayer":
+        multi = True
+        FOG = False
+        current_map = maps.map0
+        game_mode = 1
+
+except IndexError:
+    main_tuple = menu.main_menu()
+    multi = main_tuple[0]
+    current_map = main_tuple[1]
+    FOG = main_tuple[2]
+    game_mode = main_tuple[3]
+
+#----- Initialisation -----#
+
+#-- Initialise the display
+
+#-- Constants
+FRAMERATE = 100
+
+#-- Variables
+
+#   Define the current level
+
+flag_start  = current_map.flag_position[0], current_map.flag_position[1]
+#   List of all game objects
+
+game_objects_list   = []
+tanks_list          = []
+ai_list             = []
+
+#-- Resize the screen to the size of the current level
+screen = pygame.display.set_mode((current_map.rect().size[0]+100,\
+                                  current_map.rect().size[1]))
+
+#<INSERT GENERATE BACKGROUND>
+
+#-- Generate the background
+background = pygame.Surface(screen.get_size())
+
+flag = init_objects.create_flag(game_objects_list,flag_start)
+create_objects()
+create_collision_handlers()
+main_loop()
diff --git a/data/base.kra b/data/base.kra
new file mode 100644
index 0000000000000000000000000000000000000000..805a569aa3d6b4d8f2f0b33b2887f6af4bf182c7
GIT binary patch
literal 20923
zcmWIWW@Zs#0D*RE_dg3iFfSKoU|;}Y4h9B>+|1n6lFEYA#DapH%;dz9%=|q43f=6Y
z%#uWyMh*s$#+M&9T-?IMz~IWsz`zaCn3$QDlAo+sk(+aMTCD$V1Ch4(KSks6s-7P6
zlQ}*!O5g&Y?}kQ!oJW`DuXUZ};^`Ib`}@6hrn_3;lH5y2u4qSp{8)YOcv+2&Riu8=
zmz3AXrXRIf;4GvN{o>M(Bs0Eu@9h!<=g7$S-t%2|{=Hn@GLEQ{;`*|$A7yw8B;x#*
zC0gv9z2Nw*?Lw~3LT#7NGn>rVp8M5~Cw%qQfYUbLH%IZEuDW)#?REsuM(4}37*~`p
zdayX-*unhgtSfGctc|I!{3g?w{P^}JIrizd8y+j0{QB|oOHx<Zy)DHHm{zRPn|uDP
zMMj?fxd~Cf_8i^Eae?i+*rjC)Hhtihm>xQ{S~vOv-}N6G+ggs9?fMqF+gE(S&aay*
zcTc{W8h6cCb*pZQx%3f#<}I)FyVsdAMt!$DASLy*i22^`cjxW291m=lPVf}skY}I!
zDMqaI?B^i+T`}io=@kb`-Okgxux^R|t+y!-H;(Rq_2i^^T<MK1-4P+FkE5f*9xu>%
z-Fk-k%FF1@p%HqvCHq!tTs84EO=~ecWAfDE^p-;{J7=hCU31&@{(Mh(^#8kFC98M;
z-nLcrE6e$Jhxe;5+Y($S{K~?!Q}s%s`XveD=PF@(k7s<E;pLtf;%fWVRoA@w$Vcy_
z0{{QqrazOj1UpsE8MTQ9YNojf>XdjH2wy8&$-33-<;wl%9P{~S%PN@pCm&OqmoV4E
z;(3&71m~iHlv1TNipL6WCeMF*y7tu*hLw|9wuN|hNv0PZ37(m7u;a+Jg5$|Yl^@p0
zer!MYG^>BMyn=a7#xs%Y5!}3YME<?^;qG%yDs|xuKXP;4?_JZ5=G5=M%>3lqOtqE+
zu4)#|zWq}V98zUlZsXPKJ0sQS`<?Bv3#%A)|A~H)zWY#9)a0^YW0k71#RI3Ll^sX@
zmQP%4)n`0?-<p_`eyi%eMZJgi<@FzW`<Y2jPjOF7Uw<6~YT~Yn+<53TBLl-yW(EcU
z1_p+d{N&Qy)Vz|+ytI5!3hxc_EuL*4vgdcWfSw&^<87ZPw=gxsb3V&vnz7fsNGY1|
zkX2huNZF<Hf30ew^@Cu&4f)?|U#xY>v(FOz!+f_$b$X)E(L{z#0jkrl8r^xq|H8e(
zJN=2)@6D(F+pTX75{>1(q@Z^{<innw^;I#f#VsG#=kyj%OBa{)oRYBTpDq70>*QG?
zkN3S_+{AfM`>fJZ?eJ!G(-YTRmTEpPd$(n#?dqKA52stVmWT;#3!S@BL7`2Wam(aM
zR|AA>TKqH?>YC*Dd~Fc2>6>$_>~^_EPpIFCjXAfa&dSt&-E`{Rr`^-9htDor7JE*P
zZ||k0OZ`u5j43)i)1j3uZOSs~ozquMXNl+1lk_@$l1sGR$-z6hNnfJAF0DcDQA*<@
z=_yAl{}}Jx=O=#ut)5?@=Dy{3Ied#A=T{0XKdI!K^Uma`D5u)$zR(153+LAwc9C8Y
z>1D^8_mw&+JlBbpH4$fOs=gqa(PTgM;<qn*-aS~B-_oYNk@?ud?F-ZHT;-{+pQ*6m
zrsm5__8(mwuYLL(A;(c4^(~S0``2eH{G@6(oZ+<G7Pz)>`$8}CWSO5*c{Po{e}*TS
zG}NmwTa-OG?q1q<c+alHq8a82?_XW?F{(XM@=YE!;_YMouH-Q>FbJ|jO0|Nb)UwRf
za=n7Q^w&Heil0B7^e8DI;lbB01)NC<2`LPTd}a!w!CRDgJvNG1SGE-}IP$uCu}?T3
z`9Lu8%z*>tEG?4Dvp#z=U(NYeQpmG%#^-PA66bYDJKsKfLRT(NsZL5(%J6ippBG!f
z$^zGoG2b(K0{2u**t+au;;ZHf?J+YYUEeBIv9h1hxg=}%Rp(!I{&&Xex7$mvl^6GY
zjf{%C+hulR&XkzX&yOEpl7IZ&JH7w*<?A0BcGgw?uAe>W*5_{d_m9#$CZ^{YEMU9!
zq3r6R*RLP{&-bkQ_vzE8Ut7(^_SIGYuB$zB?7Y6-y!H0=>l<cTeQQ`__50_~pD*?J
z?P`7$?8;u3ap&HuwVLPS<KydZ*4%&l`}23ky%u+^-$WeUZf-8F8)|y{OkKO<!FDN)
z^zZ-v{^y^5%Kp-==#PdkuWxK-=dXKdYLk|jZCxJ!@Nx3yf94_e^~<X-Upkj}Z(lz@
zpV|H?aeJFDCbBV?Ug*vDpJy}k|E+f(FV>wpe}3PWfB*j7`@hfS)6J{fzW#poHhXe4
z&)clJ91qX?HNnrH`ChbPV>HcLkh{&y%<T7l%i}t|_vSsXzJKUl{HOKFLMO}1>i+#+
zx_$TV-%Cr1{1YQ@ZkzJ$&+#0dPM;8`?Y#ZAtgI#PzTMVe`uz6w^GruyeR_IYfA;OG
z?zMeaF7J;k{&stN{^fgn9vY=T5LhO(Yi;rKYd#<QcHKIkseZn+HT?I_pSq{t8`^yP
z_U+rt{2VR&rE_eSm+Y*wyL#wb@S~Oso6>un{%@OZtGzt!Lu9>ONznW2w|DP;eECzh
z&fB-on?Kp^-xGWGoQl@5%k{^&+ZTt_&d{0Cm@3u0eD(a(R?Az|;N=kmxU!wRIkoo)
zBLf2ni!v}Ul;-6n=BB3T=Ok9978OG%qcGQ?U{8NP1tYEyPaoHCPnQr61v3*c$HUdr
z-6I6V3-F9^^$GTja#b+la&ZiCR50W+&@s^QiE`61wlLvhWMFvkb1<P>3=IDh7#<kB
zVECV4)xi2dn<2rDf#Cq#15JhpJM0q<G_XF<VMyGU;6kLc6&MBz%7dC*_%IU#16s7p
z+;>rAVPIeYVI^GAu9uRUmROooQjl4ZngcQ)wM6@HQ(Hcbk%3_X69a=JPBSu-lb22~
z^gbLQ(&`_zG)P;tq@aK!C^lz$S>Y9{63wMoxWZy5nRvD?;q~n9SX{rLnTyL$>mT!O
z%bi?J3%V^VtvfslJD;1jHf@<~e&<eq@%!36<qZM1FXiO>u)V3etowA+r?AxMzCB7!
z8ph46uAk>@O)~7C`0+1~=auDCEV94cxiDkRt9fi5!cRoc7S4VWT9ml|B}d-m^sTdk
zRO2U3*3<W>6WJy8VRwS@gLMhpW1`rd3^(Pl%@J9{rgKjz+w{6x^plp{ty})p9`R19
zsx59V-8Ws%>x3e=q*m08=2o?!HKkQ%HTrjNYcDt`+gs1hUa&K9(XqQKSH=9VM)JP0
zvhNn=dH6Tp-&T1t-<I{l_y5miTsFOS|LsN*E7oJ83VS^M$_3q&d1Ky}`JBD_ZR4~Z
z43FFoyuIrXyuOjoc3yR{Ncc<7#IzFz4d<m3RxzEq@cPBM`rnQB|Jv!rH+)i@P|tAg
zT%+o_<K^{?u*iYr>zwx06+hV+7(f_TzBVQ=Uz@=5wYjA^7b6=3!^Ang3mG05GO$mc
z(AV8Nb=sx}dX60BQzlI8@9dd2=YgI*M_*Ta`@~s2-CZC~e@EwnrAwxCwLj3aXRn$x
zb?&l7eSHt~?Kv1G_fK6itG9dd1HF1S28Ic9=1%K>U{L44z_egdn*-Ye0|tie5B2{n
zU|{_Je*p)P`SL*!1JlIWeed;a92giT=Kp7$y552NfffT}`Q-lp46`3-SvxSiulmn0
z=Y8pahW_^z{~5Nu|M{ON!)GxtPnz93{ejUk_6hxcT|HB$u6>~A#8^H_|37nA&$L+}
z&-NnuoV~B3bHS3uQ@Z}^J1|yF(*Mu25Y^+89_a07V_@i;J$G9Ff0F}@3l=>vv14M`
zx>2F+ff2~p4~%Sxa@kLY2XYL|90EMd59G8Sa5J#$r*+)BUudiLfLr>36axp-ykGzS
zU%d9S{(+SC18xQm$!-7ETz=3uuj2u?3`m}B;ZJwxpZ{JoLgg8I|Nnpf|Ns9cki0Yl
zW9kb9Tc-anQXfcbKj2|tO~3N;|Mj#7JW>zj7#O>@JThirW?-l;Q(ytPnu&=>R}WPA
zNuIp~OI=0=23<1~XccH=X*Bq%KoaX?^1=zGi(q&$gQ^$<9Z;Bo8V#c%MqG%2!V82)
z!wi(thzm2+x{{d2kTDe+L&kcejiCW)4DEdIbh0x$0|N--Y7CiB+8DAhHv~6^-haG(
z8r&E<^YZJ9C!Zdj1vQ4Qzxeh4|LfOZAAp(!H@^OP^WopeH%~#Fzu&%pdHC(ikC!0M
z&+q@=zkK`c|058G;pd+}KR^Hfaq5A-JsZQ@e_ww5ee=M;PJw~x>!<4qtPczs7~j5o
zU}){Yz<Bey11quZf=~wL5AUyTcwm&se(d?@M|a-eKlwn<iR1dSpa1{9c=_qh1ATk;
zufJcs{rBPZV~{ice*OOS?$<9rUVu1%zW#sv{Pnm0_drcIh97@^{rLR<>qC(H7+(DS
z{QdU>{e1}xOkX}6Phfwb&%p5dgGntj1H<(v3M|ArFN}ft<J&Xs4~&x7cRzZ6`{JwH
z2Oj7-vEO|3{qL`*&))yjZ{)c8_0Qwif8W1)@IbGg<L{Sm->!fD{QVioMgKqjfAj3+
z*Z&Xn_j53O{rU6zr+=UKJ<zLXXJB~v>(kdC4;45b7%(t>e!J~~fwcnz!}AX&wM+~Q
zS0C!{A=Z6L&}NmA-UD`|W)-{m13Bbom7M+qcI0Liy97uc(X4{VBbrt05)b5&npN`p
z4>;h>Dh{y+N~6sxQ0oAMN1IhB0}aGgc%#iKP~!lCi3>4MlL~}Kn^mAtBQDHHZ&sO5
zp;=`z+N>IwF(xsY&FV_*3=ANQt661AakI+U0^F=xGNG><+^kx#deyuo>y}LgHLI4d
zS-W}j+O?aPfZ8TYR;}N#{@})q>p+|dOE>S@xM|fY@aR+WvaQ=zuUxrlA*hYOuzKsx
zO$%48dT7|hx@zaD#miPc&<71Mty>ue9%5o#vEqS&RRRO!)MW{5#I_1T7?@+iB9a~$
zC9s#|Wu|487FB>6RSAXp`2~5UH3c9iC1&Rq6gAZp<bhlfl3v_UTw0j*P@jpzHLJL~
zq$syA3)G%r$S<j>&dw^Re4ua7%8*-An34NX-!6fHsUS-m+^AyA$$y}4*}%Y<+t<KO
ztowo)nAtc5<Q^EsvujC-h>0tx`+?lYB_}B+E~TWZ3UVK>xVWT@y1IlUh{GZxqa`md
zD=GxyFi1$MD9KAnN`cyjveHVbQX;Yr;8v-GvYfc2EVxz5C@lsa?_rR7WNfd%z^EEP
zQlk$%R%Mig7^u>7LK>ygvqu`D(zEA4G^F(GIS{QVJ$ohw_|O!nRSF%L0=1eU<5CYS
z85o(E9#}dP6LO%EZzy2mN@q}Q2APi;9a<qS#70|9h}2J9h=I}=2#>a!Kp{t5n33LU
zGNnSR$#k^UG%&5E+|Y%shU^RsAdIWkWJYnT$<!D;-C)kZF3iiv&%?{j{XpNHT|`Jo
zR7g++T&W8Si;7B0i;9bYYIs2rQ7LIjF;QVq+k{(CL|jr_RP=#<JrjeVsDh0GGk6Sz
zPe?>WR7B)~K|L!2zp$u?5O{8mQC!>sG#JGo{lLtgm|7L2MuvgG`GJh;1AYefvj-3D
z+;=IF=>fm|191lSi)T(=KY8uSiU;EA5BL~3E}uPf^3wI2FRnh|14%PKIDYV&f&=62
z(+|WoK=S{O-n@F@{EesQK=Kj{?E7xszH#Z+onsFqK+^2fPTsz9>(<%r5BTIBNHVal
zyLRRBrA-ec)gK5lFrGj0Kv4RDGy~(2;}4`&L9QZZKE#ZH;phVsd-k_aUcY?${?gM2
z`Y!ArKE40*_Wk$wppg9V{?~`!e?R^F_(0E|?d``;KYsrH^1z^;<I&q+pTB+m{Qon!
zk@xQRkDnjD{`m@OP`&@~>*Lp7Uw(ocR4@O0`uOb~q(SxV8@NHm`2P=)6KEhm$TKjo
zK9JXVz{9}CsqfHSEyeo4z=gg3!q@*lpPtBkz!UR8l7T~b)Bkrr54Rp}e;}##fQNyD
zchwKmkU!6lwLIXF1<5n^|9`ae&;S1oAbDN}rt%;E6&M)5mp$MGNwag*zx($8eLcqm
zNzDg*46N*e6OTx+J>Zjh5W~R8$@w5A4df6)fe9)g2Nxz-T#pVtjSfAbgaE1OmtYD5
z&w+v(P#`?ohysN#abZS!Bg%{ljVQCxM%2JGqEaq#Jk)1rU;trUjVN=<8&QVPMii?M
zKQFJ4$OA)Hc41*5VG(gLUeNH9q>!MnxVVIvAgJOO6%-H=5f>E#HK8~p_yxrz#YKd{
zEiDFqVPSD$At8YW2KH=%f<nT=g52QBo<~SXNRSU)*)s?|F!<BJz#u}xR8%4Z>)cFV
zqk{GahWYHJrFl8Ejnxq#ch%<?*K~EXv=xC`b9IG<jZLkUrJ$z9hRovnma2+c@M5d<
z>WZe~(yGD-diz-z;&V$&73>(2K&luLN=r-f;u%1TcS`ae7}+Q=FqA(q_(M#s4pO7U
zz;Nw>lJ)~m2KFyco;~^Sm*M{dPRR$d4D6piz5Dh3_pfIUWOW~KFtGf4|KrO)1qX&#
z4>&;596#Q^e*gLR*H7;s$m%`dVBq-w^5ch}-@pC)0FswuV1M!N<KK7h{=I!52a;xg
z^Wpc$kN-cuc)$UgJY#+N<L%pT&mYL^KHz3xeE;qNx99^!2F7n+9w=&qTt%oo0#akZ
zz`*jrz|w(%m08`iB$LO1^MNh{d&$99|NlSPlJG#+mXm>h!~g&PcXVEF1BI>7h95Th
ze=e;9g(uVGzdO5r{r_M0K(C&Wp<Q9W0s}+K1ATi&)zzT2Qma+LQLY}o?sdG{0|UDU
zRt$_b)(@<RT3!k&2ZsVCSXP5pqJpZn(Qzn9bP^0OaD!lU910RzAd<Kc1Enz#9&JJq
zA7-RCq0Fh!gfbs(LJdq4YQO!=2ioim3?PiF31vZX6UxLK+=Q}ZVB_ZF;bLbHd!XmR
z!OY3W$HObc&;3Bpo{@`3!H!u_gqI6cp>p!_ac~Rp@I273=V0R$5EkL*;o=03m@x4P
z3k&kIvp&$bXJX;xQ~1Zg@<88Cfq{jSUyzkYf&GC210xp)c;=3QErEp9P>kZD4@~0O
z1=TcE73CSE9_YDnNGND%sHthID}bD&s;;G`uBoR6s^itvHI$XLR8*8ePEt_T($&#W
zRh9>}{+Pryb#=8h6(m3$1_>n%Z9O$fe()Tgh=RJN)C2v02@H&KvI(G7?2O_94-Bk8
z4Gv-&B?=6Tk4`>N059X-diUx37ylV5q06}U-h1-=)5{NUUqhE^KYaY|`P+A|-#rB_
z)0Sf3c=_z<ou@yay?6nYzyJ8{^Vct5eEI;DKX~iS$M?@)et!a$|Nr>O&)1*+zIq0d
zmtkOi@bdZ7m(L%_Xg%O#V0`)T0Uu};6T_E>`b4inS7KmfW_+Ne^MI3qmCMk+IFk7R
zCupe@yV$bJ@BjaOvI5eUW3&D8|NsA4liwNqV|V;^P<!$J?Ry?@L_CmVV3B$8YVuNr
zCWtyl*4GL)3Jj1IAEWzw1zX1d(;vv|J>X<u@r%EACH?`Y*n=bn#zd6|Njby>FsOJO
zESUJJZM69Wi8JCtY_$0V2`vywT!?|1P9Qwmd?G%~NN+w_P@(x`G1`0@nC8=OkG7TK
zObiSljH~%%NnY~_v2oVK4AOk6WMKHO!0^DRRl!z);emmJg0%y~0|Wa74i5_L6B-^E
z))7<HLDj@Eyf>{&uw(fD-jD%oj^Qf@+XqJV4=n5x93B|%gDU$;#9rN427TLi#`_)Y
z9vDHKG~h;ovg^QNf(0xiIeT#}sZdl{jusX4E-D}g+8}R~7Dw7BotT%GUy=wq2&Y(o
zbY~FVb_Ovri7?|jrihaP29`8}Sg=EjLPJ;?*#H0k|3APRrX3QusD~9HYqvx_x(KHU
zs3*c8n;^!Fc|HtIV^Gf*K{ke;m4N~2v=J;OK(>sd9tDAH!ZLOo2SeaA3w28!vRQLE
zahQct!eKEO65hypNs<BC;D<O3&P-0mVjjfPsQcuR&8y?a?oeZ#X5seqDj^(ZQR?Y;
zI1R?<Y1I92$e!*N!R}BKGCa*FgTpLJJ?)CqV0@lNU9FDn=|{5I9coI3r_EJym_@0l
zt8p5P&(pami_MTdEuoIxp=M-wx<(I&S(JME08WGPc^Y+c7}?XY2G|{HPKKxVo8vHx
zQcp8m;4&DWr%{J<kv+Y@61#a8WO(|Y0}it&^|X^CE`#xT8nqLK?CJYX*v+#f!_%6s
uILxBd)44be#_nm%Do`Ay3gmJ}I25gMiR5ioHc-n(mO+*Qq<N_ahz9@>%zr%q

literal 0
HcmV?d00001

diff --git a/data/base_blue.png b/data/base_blue.png
new file mode 100644
index 0000000000000000000000000000000000000000..b4acc006aad20c3d3275d754b6af87e15f0ae7e7
GIT binary patch
literal 380
zcmeAS@N?(olHy`uVBq!ia0y~yU;weXIM^5%7<!G)?`2?MU@Q)DcVad_?i<X&z`$AH
z5n0T@z%2yAjF;}#{b68WkgE!bC`l|W$;dBaV5qoNyiVuTnUkKO1zx&d{<=&I>P@UZ
zpVfYCV_;zT?&;zfB5^r6rGaVN3{{yk`|lNOF#h}d@bRzTe=n|FS}%E_G3+E$t-@D%
z>2IrNtYQl~d}8W`IWKQFd2Gnr_~$H7PY(}|mCziXGiUxwlug}r@Jv!lQraJFz9i2l
zYtug%3#4C|_$cYe@sp<?tk69gu;Go(ov>-|=ilGMYG`43LqaHLs)WS9zv&(`$|oiM
zI^51<vqpxawcal7A8*nhhNyW4|3#V&ZpXLX-@niB4`bK9|NS4>g%7{mnXt}6-uke;
zTUuNB{(r`Q{{3uzcs<^YjZ-eAHK1VOy;euxp7zG}m-dJ6@Au)E<*<ET{<miB6c?_g
i|9NgODl=;`Fg*M0FSjjY!CeLh1_n=8KbLh*2~7ZpRiY#S

literal 0
HcmV?d00001

diff --git a/data/base_gray.png b/data/base_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..daaaae97663e9bcfbf35fdaaa98b68492028f000
GIT binary patch
literal 376
zcmeAS@N?(olHy`uVBq!ia0y~yU;weXIM^5%7<!G)?`2?MU@Q)DcVad_?i<X&z`$AH
z5n0T@z%2yAjF;}#{b68WkgE!bC`l|W$;dBaV5qoNyiVuTnUkKO1zx&d{<=&I>P@UZ
zpVfYCV_;zT?CIhdB5^sl|Da#9gNW;U9|Z@`HD*fMVmWupPClP7A@3LSrWbOD&Rx7e
zLBey&x;Nn;M6a@%E_BdT_R+~Y>>Ky&+1bkPPX+(HXfzC+{o>U-?R+)y>%X5KvV9cu
z{Y~LL+nP0xo<G@^-tqpoNtcr0SqbOc+jh+HV|`kAPqX`i^ktK3@is-B(@lvI0U@H>
za+Q5AC$4tk`1z(+=X8M#`;?$P`DQ0J@!Y+y|6}7_xvIsPQPVdZ%PDJJmKkvU>wfDD
z0hSma52017TmnT_oD!N-tkGrEusny+{^-VrPd4rAUKhlcKR7YJq_1$|#doixcU5^#
e+Wq;T`P;aVfd8KxcQP<AFnGH9xvX<aXaWF`V4)HK

literal 0
HcmV?d00001

diff --git a/data/base_orange.png b/data/base_orange.png
new file mode 100644
index 0000000000000000000000000000000000000000..d6e697c1986ff3d00165431db37c60314588567b
GIT binary patch
literal 348
zcmeAS@N?(olHy`uVBq!ia0y~yU;weXIM^5%7<!G)?`2?MU@Q)DcVad_?i<X&z`$AH
z5n0T@z%2yAjF;}#{b68WkgE!bC`l|W$;dBaV5qoNyiVuTnUkKO1zx&d{<=&I>P@UZ
zpVfYCV_;yo?&;zfB5^r6!GY<zghYhIherM4))|dg>SZK&Bo>-PJgA*2#r%EwcAk1x
zNy!M7REdagy#rSb|E`|?gneV32)EG&qrIsK6O$7YE*2&xT;NapVSHICPy6)x|MfEt
zUNhck_+fco%8$>Fl$amib5r=+^KgHIP{1<{7scIzpV<YPzy6nRo6r7R!eU8@WL<rF
z(vSZyrI?S;Ud<sa$sG5G*|6fKq=a4k?b8Q-JWx3NJ-=Q;V#Yt?0s}>xo<}q9FKyzv
yf554Sr)G`ArnkB=vdTdke~$}R_3$iVVDOH1<XA8<ERTVKfx*+&&t;ucLK6V_b%Z?t

literal 0
HcmV?d00001

diff --git a/data/base_red.png b/data/base_red.png
new file mode 100644
index 0000000000000000000000000000000000000000..bae530ca3ed2ca726164a20a9ae786ce380e85b1
GIT binary patch
literal 328
zcmeAS@N?(olHy`uVBq!ia0y~yU;weXIM^5%7<!G)?`2?MU@Q)DcVad_?i<X&z`$AH
z5n0T@z%2yAjF;}#{b68WkgE!bC`l|W$;dBaV5qoNyiVuTnUkKO1zx&d{<=&I>P@UZ
zpVfYCV_;x7?CIhdB5`@@1VcW?K!LXXcfW7&c2P>?UvR0@>k-GIrRCh_1-w~H{Z`%*
zR!|aDbUYk(?a^BC&a+&s^+sps=Rcb-*^&8H;SLj9yokB;zSAAe{u%ez9L(!}D{DEM
zDgBvi0ZX2i>!rr?PnUUQ-Oefx*yg+Kc6HOU)vhmQe$Sfw=fu&BEfWsg9ZZsYdOE}L
zwA&i7ABP!(y!^CO=JeS2aZZ1#WLYC*)Oe|Fy~r}X^jCY`r!Qk~3XytU^>kTdkAVJ*
e{ontrVgGT>?n&OYl}-!{3=E#GelF{r5}E)hlYy@Q

literal 0
HcmV?d00001

diff --git a/data/base_white.png b/data/base_white.png
new file mode 100644
index 0000000000000000000000000000000000000000..9b196090ebd51adf85a633eaf2351f22d6f608e2
GIT binary patch
literal 364
zcmeAS@N?(olHy`uVBq!ia0y~yU;weXIM^5%7<!G)?`2?MU@Q)DcVad_?i<X&z`$AH
z5n0T@z%2yAjF;}#{b68WkgE!bC`l|W$;dBaV5qoNyiVuTnUkKO1zx&d{<=&I>P@UZ
zpVfYCV_;x-?&;zfB5^r4z&r1dfr!lQpN_uWr<$ZoZr|SckYO+1@4Q`3tGuRjDDnlc
zJYk;5(fM|VzGlRVQyz7nZKTd`=8Y*lb4kOm|M1Zw<@;&zOtBU7_2W8ouK)V+r!Ld?
z_0_KXF3D@xu6V<@^6t@-e;F&Ja_*Q!WiE;2J160G-e2Ri&~lsOj}tDi872EDv}l}n
zZ9MS3aHWXGjH0X`Tlx=e_*!`<>uSkf4W~IN7iOgu@cq2tEWz?l_RXnnO3bYb*6~hR
zrLgqKPK9^>RjrbPr>rbos9m7=;Np!7#rvQ1oV&w#ZRNi=k6(V9;PdbG{z-PZn|a;T
SrZ6xtFnGH9xvX<aXaWF2f0{Y~

literal 0
HcmV?d00001

diff --git a/data/base_yellow.png b/data/base_yellow.png
new file mode 100644
index 0000000000000000000000000000000000000000..8d2fc0fb6144684083b2d2e7a3215a706cba96dc
GIT binary patch
literal 355
zcmeAS@N?(olHy`uVBq!ia0y~yU;weXIM^5%7<!G)?`2?MU@Q)DcVad_?i<X&z`$AH
z5n0T@z%2yAjF;}#{b68WkgE!bC`l|W$;dBaV5qoNyiVuTnUkKO1zx&d{<=&I>P@UZ
zpVfYCV_;yo=jq}YB5`@@guQ-Djv{X7Wz%lDHn!$0G0aMA;&({(Jue&(`7>u<`_!n&
zh#T)_1x!c~iA<j>S>CB5lJsc$oipX?&;LC+)R%Xh<<HWe&X=_0|3|01Du~sw&-r@t
z(YqOCw?F*4=J5U3k;BV<^#i+)tE`-}(_U*c^PlkUdk-dUus?c6{cA|B^|=tWc+;0X
zc^_8ud@t(Noj37C3b)?*Gu5e!4ywz)6x~(WxRozG-Q;Qx_q<a@d*^#}OcT)z;(E$C
zCE@c1wyVcj4)ZKcDiRlR32KV{QW@2}saSRY^QuGjUw9dEoIPYEtr-~@7#KWV{an^L
HB{Ts5&}xvT

literal 0
HcmV?d00001

diff --git a/data/bullet.png b/data/bullet.png
new file mode 100644
index 0000000000000000000000000000000000000000..77e8445e48e708a51e73d9ab8625b68f5547af80
GIT binary patch
literal 1207
zcmeAS@N?(olHy`uVBq!ia0y~yV9)?z4mJh`hMs>rav2yH7>k44otVv!`vx;GFmM)l
zL>4nJa0`Jj<E6WGe;61T<f=j<N)k&;GV+TU7%FZRuhTho=A>t6ftRkAzb+GldK0V9
zXSHA37#LWLJY5_^A`ZWu;qCo6K;*dpq<ve~UgcX?@_zcozzb7%TwJRi%dx15yHqic
zMKH#qgUeVuQO3Ui!Lin$xnXauPu}^T>9=fS=4?J=pO&~CDrX<hyZ?9o@x7XX`@cq8
z%zFFfg6Uh?CHKExU}zHxdHv|y1x=}4Kdw|Yym>17JOAdje-3B!INi9pxkdVqpETgv
zwR`vCjT;S(d?#OeX_7h1?P}IkKR-XFLYG}<cCbEr^QI@~_Ohc#UBAy=y;^%!n3hPd
zTV`2a->a`yyu7@DN)s1+{8+dzF7P{JdZgIl+}zxcwOe|7d3VdEEIG|%^I-aP@erM9
z5i=JrR_@X~yvs^o<kOPZY)|LS`>`{}?6kr9_3LYVmIm=~S{zvX&|IzS_wL=ha}~cb
zC@RG6T;{gSC_rnf$b@%ghP(Fc@zK`SuHntonSMHN{ne~HPa_*n{$_gl+|xGWO|7ME
zs>N-|J7HNNQyu5>O4ji6Ze(j+c<aRr4f%@#lh3+0d_2(C^`g4ET6aR#hclZ`Zt)3I
zkTUf6!^qrbq^8f$$G7RDkJ{lp7ab<9^NP><`uj6$Yv(rJnfUhpvhuPr8=b1zv%c?J
z{bS=vBi*nyVdgg-d?c^QnCt55UVQaR>-fzB2N-N^Yz!h)gc2DJa7|gEweH)IE4%Mk
z&93--WZs?(P3J{(5?`F!p=iF+kh43sN38p3L~f_y4%v-29*Mi}eU`krt1;=ruV2=@
z{XG_qYYhd?F*Zk-yf*buQ|f$hZu@rgf4$EO`aW&iyZ7zuxSeVnZw5~a(GETJyxxj&
zt+7hXx#r9xo=ThyqKxcc1Acd0HM=vb-IFDAQIdkgj%{(Pt&Q_`O!V$#3Xj_5wou56
zQ-P7)qcDGC#Fx+$=kM0F?n>@nUGXR<w2h&oaLK=^Au*f^lbjc*h!yXYvFHA<?seYe
z*XHKtKZ6ulm#3$l2)N0SI$^5Bie+4ekNBTI^-})97_K4mqvN@O;sNEvNhej-u3fuz
z%8Wd%SB_ph-fNAvT~zK}lItb1#vns9-Ih&7t@)~p8GFOg-E%{P9Rknmd)}HhE5qd3
zjtJ2^70M5SUy3NMEPVUu&m2B}e#=0H&Phtg7AnN(dMe+18=hpPTPnLfuCqmJms`u^
zLm{sw1p6)8Xpt|a!pXq8bi>vr$2o_eZu)zus+VV~Dxa4*v)StFr=!-KJ$J59=zzhb
zG?%Nc4Cz;b*bWD+SvrRy!i<HZdHQs5^V8DO{j1y!8}_wxGrj0MnxeIG+I9(E{&Wem
z-<qp8?QjuI<x%+k`*%q}fy4Lj-`}JiICM3D-;+r-KR>_n!Sm<o{0rn`&P!iAc~W!N
z&YuVK=KZpHd+*1$x2uivE<Jv{I66-t|AvLb-Wt2}Sxhps+n>eys_&@Z_H_RI`RU?G
ztNVMVl}dCniK?rqRUDRXQT`(DEB|Y=v55RT`B&@v1O8tXytV)SueJC8mH%cnEA$S1
UQvbA&fq{X+)78&qol`;+02Kx)TL1t6

literal 0
HcmV?d00001

diff --git a/data/explosion.kra b/data/explosion.kra
new file mode 100644
index 0000000000000000000000000000000000000000..1be3221f6dab027f4df3b28836e09c5fdde63039
GIT binary patch
literal 17396
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
Lure@gvIFq|cY?mb

literal 0
HcmV?d00001

diff --git a/data/explosion.png b/data/explosion.png
new file mode 100644
index 0000000000000000000000000000000000000000..dbfc20f8d84e577a2d0fa2e9ffa8ddd50201abe7
GIT binary patch
literal 3345
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

literal 0
HcmV?d00001

diff --git a/data/flag.png b/data/flag.png
new file mode 100644
index 0000000000000000000000000000000000000000..60d5708bbe5abf8564e459d397458e9bca15ff8a
GIT binary patch
literal 845
zcmeAS@N?(olHy`uVBq!ia0y~yV9)?z4mJh`hMs>rav2yH7>k44otVv!`vx;GFmM)l
zL>4nJa0`Jj<E6WGe;61T<f=j<N)k&;GV+TU7%FZRuhTho=A>t6ftRkAzb+GldK0V9
zXSHA37#NsNc)B=-L>xXl{cg6fqsY<oK4zKww)OJ=^VJGn<F@9PLPt})2B%WTBXupM
zq$5F&@n1Y$U7|Md|5I!_uk=eHB-;Cu$!yv8b3NDYlHQ$NHd!(vqkMaH{odzyHg9ft
z>fN(oS=V7DH%7I2cbSSJ6P9|Wi@NBs|39%bK+Q5_$M($!?l`X~64ZL_kSnP^hj-rb
z<4v+<ZA@n7&Qq8CTx-Bq6VK>X$#K7ZM!`e>`OdXMKR%>d2>rjvXlU<z_tYOfgTHT>
zW95qqBfYEt8*F&SC_ayUrVG<EKD|kS-p^CE9PjBV(a~kLt6VqXdVla$t9Aa~98CK@
zY0Wv_$@={nV~a?@B(B}A9bwVTFS_kLw%LgO`*XD+v)!Bd#P`tb#{XZA)xF63*4)jt
zV!nEu`2sDykloBaQyQ<Dg{)*Ku_^90Ph;2~#&f0Wq^$a3k>EEw=LqX%%XIoK6)$g8
zI=Dksn4jn9viBv8&$Ldu&C6OpGy9I|w>#g2|Gvtwi0f@VD>+AFlahDqac}8~2N+__
zs;=KzR(1TH@oZBCu^4*?W;1`c@)w(~U!B;H*1e>(y6D%l8nxuUxyzGz<3e^AIJ7P|
z_YK?XVKm*^z3%jcoTrl}PHJ;WXJX#wac|}3iEj@T3YD{3pO}}#@lI^|pKUG&DwSVa
zG0ndn-2L?F&Ba3R?LBR(o*(Tp|9E~)b>;aVYn;}rtiQfBOE<4?l{I@~f45)G4vmkO
z-go@z`MjIsL%^H;(&yM3)yfifY}pq5>WW$Nd&gAY<lSGhqb7fdxpZ6CcCF_@Ro%j*
zP0Jox%CWtgH}&!=#?04KxMGBy7tNDdZk~AW-1#usBP<!|0-M)dI}~{B<CSH6>i>n$
z-LrVO?xvKwRNvCA*NV6Eb5uXnd%tx{@%3+xv2&XCt~a<>(kFDz^Otr`#@yXezWK}s
z1~U9DSB0bJZ&B|^o$*|Xdtd4L4g2@Eu8p*3G`eoRDyD{YF9QPugQu&X%Q~loCIBG2
Bc@O{q

literal 0
HcmV?d00001

diff --git a/data/grass.png b/data/grass.png
new file mode 100644
index 0000000000000000000000000000000000000000..d9f37de36d7cfed9d5a1bf4021ac3d839c50a5a9
GIT binary patch
literal 2796
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
Yc2W0DOK0{K1_lNOPgg&ebxsLQ0HU%!AOHXW

literal 0
HcmV?d00001

diff --git a/data/metalbox.png b/data/metalbox.png
new file mode 100644
index 0000000000000000000000000000000000000000..1e4edec084ca62e5ecdd34fa7051cd76a03d89ba
GIT binary patch
literal 1743
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
L^>bP0l+XkK``$l8

literal 0
HcmV?d00001

diff --git a/data/rockbox.png b/data/rockbox.png
new file mode 100644
index 0000000000000000000000000000000000000000..b53b509abcc65762f888a3bf0aff92032de6f4a1
GIT binary patch
literal 1405
zcmeAS@N?(olHy`uVBq!ia0y~yV9)?z4mJh`hMs>rav2yHI14-?iy0WWg+Q3`(%rg0
z3=9nHC7!;n?049icvRRHOt?RTfq_-V)5S3);_%r>?J{L+ku?=8EK(dS91<KXCMGA8
zHi;b8Nt`A)V<`(8iv){=8HYfI!Ucx~=PUWoXwJQ~)uv+BlDog|{9ili6T<`hKZpA-
z%dcO*o`K=LZPr?bhSy)Y7*1F!AG>kPf4Okh+7(+5Rr9~Em1b^;(w>%@S^ZjO-NK$Z
z#?LC<G+7xweEW9o+Fzy*(hTRG8-J@kzAg90wzavNa;2}89)0{+nL(kYq4vJv`Qq8p
zUXGfq_o}A^ZOD~oNVs1v)9>CQ@L<m2eeW3>GH2bAVYso4_p(W1Y&e61*GkK04o@>A
z=L;}ROLf#_HFP^7F)_%AW8vAQN52GUE`96xep=9k;=JO$-|yzzm2mJb_48|O6^PRK
z;p@EEEr3yKvF3vNKi5@fX}yq`%A>fYlKpC&_|rMNZ631CSzS4`IPcg^nc(vQ8jBB@
z%B<d6=4Q%TD#%{i*w*Hyd-{?{fTNbn-h<_)9Ysaw7#bv!pMUgo-1?_#ubFF7kFN!5
z@!@L4O>x2JuSG>`t#JQ&w(WlJt**Af;)`w5E0;H|xN-lJ_ueI^Ui>-N9J4{k`}3@4
zjy)Sc&k|#tx^U6yO<O*^jB#`NZ2SDqNl9DwTtP*aGoO2+w1d1nG`BV_4A{o8b>Ear
zHvX<(0-Z~GtNs-2<e6QuT;a3-{=(!c_utaCiyv-1dMG18g;P<X<-!xj1J9p7_pSfK
z`rx~XZ@thZON-|QzQS{gW2cv&TR5fZ@y8qYu9v!UEbRTfd!3@y$Jqb>{`@JKS8`7A
z`JH3?_wWBN!s(o#eeT<l%P+4?nv?kV$Bzt+#g)ri7u?@kHM3cBY2Ms2uH_HT8{9ax
zxzfu~UteEWowNH^aPIF*udb)9)m%_CtLYlk)^ppKa@T}p%u9bVCtCbM*Y@1Qhg23H
z+_Ux59S-%k$-fu<yY?u-!hiYY-hi)fo)%>mZ+(@^b!P%=_Ct;fGyAz3qo!&u?PK2*
z`tp~=V_v@K^nl3py{1mAn?$2>dlTeVvS-K~&TCyQ$W?pI&^%(zDa~bCJG6fY%gy|u
zd_KC(D9P=W#Mcb=Qm$fUqb$}av&C^2ZFM8J_Ow^us(EL#LN!l4vdytE<b+VD>5+Hq
z_e^wMbS&!AqbpB$Ma1UbJ@+%m|BUQXpKT9UUDw^Y_08|L4VQ$!eQ;haI{)YNtCov=
zUkQ3UytQyXw}0DJORW=!1+}kT(hjv+TH+kFR%u(&)=lqa?Q{3%rab)lQ_?cMrnYwL
z;|1U4e(x*4cXJ!BVvC!QhXzOKIm<P#Z?XLS^Jl@euI0<sk4W6EQ{j&}U;b~|8aJ^Q
zQ!D4~ZrRS_v^Upw(d&q{r#C4ayAh~$T2xoyhD^z+Hc7KwRTp;Gp3_f_Y??LZRKAz~
zdDgN#=eSnd$Dhl(w*C?2^{~(tPV{>j+7Y&CF9XAc4>yBqq!oXky{Vkmv$4@qyR;<Y
zdg(2zH<CAvGJn4)ydJcBcW;#Qs?_zizO&cHb>3mF<t{bLFZEgY)!-ECz0)reqxPm0
zhg?i8`LV4w(7%+cd9mBOcVAVL9<MlbWwlM3*4pP$p%3O=lCtErTwE$KG01gt^>o{)
z2xW<67PpGLd<m1%wp_QHt@o5P?yTIp?Xh;}R?8*dEf*_Y48F?|$hY{@wXy|Mmx^>2
zpO}!lF3NGSN9O&lN3Vo#RApavWQA?UzKn?x=c7(7ow&<9@AAU~)`_>pbXb)x-C)`@
zPvWad>eI!?Y^v_vzt70PUv;|PZvJkqt!rJnGp=0EQNG?0vF4xjnU|`+4)6b$-|?UE
YEw|nx*>H{d3=9kmp00i_>zopr03S}F9{>OV

literal 0
HcmV?d00001

diff --git a/data/tank.kra b/data/tank.kra
new file mode 100644
index 0000000000000000000000000000000000000000..ede20213172114be2307b62e86e7b7c0ec48ff3a
GIT binary patch
literal 31644
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
Qbf8g(ADj#feT5(%01bETUH||9

literal 0
HcmV?d00001

diff --git a/data/tank_blue.png b/data/tank_blue.png
new file mode 100644
index 0000000000000000000000000000000000000000..9235417dee08f19e67fbc97bf0f03506ec64bf39
GIT binary patch
literal 1083
zcmeAS@N?(olHy`uVBq!ia0y~yU=RUe4mJh`hTcwDUIqpR#^NA%CuZ~GzQGI(44efX
zk;M!Q+(IDCc<FB49|i^nxvG$elEl)IjQk=7hKgIo>vT??Iq4Z%;HB&3ugk=s-o)zj
zS?$+01_tJBo-U3d7N=`N;xlAiCH|ki_x9e=-M4Q)F|#a6U)L+PDnoUnZ_-lF9D!L*
zE+T<ELAik<oL;wXh<`o0N|FET7XD1ZsICP!*tNHL33+T3o7~>z8vjJc^yJJ*kDdDB
z)_>2>&o7@dcj@-HS>K||%J<zrQ}g-vKi&lHyDwzr<tF#re4f=}-Fok7>usqwl6RWB
z!WcOkZ@+EIoVCNCnsMhDugaQd(z$aDlWN=A+BQt`I{386QGjFC?C1}Ve}29)Yl*G@
z7lUY~KX&q3RjkwNc0S4Zzen)Iro(@8GEcJD?TMUy>*{T8Uu|U>KIQr6A3r)TZt2Xz
z#Q3Dh^31t&pIRqQ%wH(Yvc;lpYZ9OC>d6YLl`iq`>C|mM?{Jxu<=Y>r`o{I|YxW2q
zOxWNy|DN5(zkA=$blSK?uHjdBLvpt4_8<F8KdN*DwyrtlvEp!p%ZCqFIYkyKResqi
zm3{Eno0=l^aFeqxE04T6-6CydE1a>fiYZ~<vRn5LoN~@r6qIxOeMn_Pi0eGFgIC@#
zm-D|l_I8Pb!W})H$x6Q8nEx9*3S{)!!OHDEZ=L^1c1NAODrpUlh`cJ<+?VSubv!2}
z7v$yjY4c8E+_E#Pdgn%eQI~b{&38^rdR(OZ@nT#~<$v`U?fpF)%A~9`KW{a@Y}|MH
zuI=5Jlj+BP*l(*jl^C)h;$yGE!#dX1*_M1$*XC3=d}(G6IJ>@R&Ht5k?TSm!{k!%g
zyg`HM`YN-4l-Z@*90U}q_R3u1mJE~HBa<j}@tD@G!ymSvp1$)DzpQK4WxHc4&0$4c
z{WWJ!X`E}4D|C+SPELFjnPc~dnWbMoAg6iJ?Y{qi{_IKKuzGiQdezI#;tT)PGR<78
z{NdN$HOt;qY)kh~etXfmW{=8SXU%l+?Z4a^Uh04U%(Q*h;%7xGG+UfD9$@UBzEeR+
zXWL$`KiM~C{Mi34dE@CkyAwSpO*Q84Z;j9?`|j4ir?}0{eg9&MYZ=MMXKU=+a6ET$
zy5=LU-rl*lKQukid;j9qp>MLcFJ8Z&&VFmb2Ud|B-?>k!ObTTpw%wF!eI4*$rafWW
zj(u-8=AL;P`{Ko$f~fq0_X?9vs))Ec2Jj_SRqa|g?S1`soi(@O`|RV}qggiH)ahAu
z(CO*HsrT1k`TmJ5>3sbnhVL6MW_;`W7q4%lxwrP3r}=}lxeApkKmOL$$zOA=oXf+*
z^MEZ`-BYO~)_sR+&&rjWw--opZS=mH;4b{)s+QCq-qP91D?Lxxi3?S%Z0lU}BQ?@(
uVyL@`P-<vUN#6bH9UCTAe=nN(hrMZHO#Lg3dCCk73=E#GelF{r5}E+x5dY@@

literal 0
HcmV?d00001

diff --git a/data/tank_gray.png b/data/tank_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..4084b15c926ae93d5d23a5d77f37025e478924be
GIT binary patch
literal 1031
zcmeAS@N?(olHy`uVBq!ia0y~yU=RUe4mJh`hTcwDUIqpR#^NA%CuZ~GzQGI(44efX
zk;M!Q+(IDCc<FB49|i^nxvG$elEl)IjQk=7hKgIo>vT??Iq4Z%;HB&3ugk=s-o)zj
zS?$+01_tIPPZ!4!i_^6scfCadMgE_Cb7sxz-=XXDG(5gs2<{5Ya?O%j(pc}rZzu81
z(M5V&^h(<q@79H-EmUGrZ29ldC@nE{0l%9RORYnIkjmAd*SqB3oqOk({_Y7+_O-^D
z)$eycpZELs+<xwiMLFMf`+279*(tu|L4M%BkB$NAYjf9nEWgBX+)=>i#M7b*tKTA)
z_e56Py!Xv1JhpQGw{K-Nv9YZuQ<%;dYiMd7eeB*ZQX0I{KEi)rMMQVkglU&&R2!zt
z?BC4Xap7s0k?*sHd#1IoJ)D_?R`Tw+n|CD1(5C*|9L1KiY0f56N8h~BF_w{*Z=d7$
z_}C}i7U4h^-EhTEN;cE#e*CR-3O@A4R*rx3`kUd*?S~g04mZoMF)(e-P-)_pzW%T(
zJ9$^ZS1V~|O?j6<CpG26(Gm<QeC3mBC!ArmsD8GkZ&rAHJD+?~_xy(jk3L!?JfE?+
zyV~#ZwoB{+!SgFQrZ1_h$Ys1Ut-A5N<f7S4OAnkmXSUrW*;w;|<+JIkk6*2tZzKGn
zNN$qK%Pl1@3lBVgwS2~>51$xW_EpY|+Im&?-1+mHUCm~*md*aM`R?7j2Nno__s&<E
z>9Z-Kyrd+dqC(=X{ck~?y>1^bDScD<a%4eFc>HlO^ZUIU3k@o7I*5c{_<6AT^Fz5+
zEMbNlB377mt_=V5I?dO8Hcv}e(wy)46<b4U&t!D5um-3x&r`QP8!#=^;mVxVr6)=<
zZ#w)aDx9dx#`pb!m*WJ<-uJS{zI-t;aEjCu{;(md>7uNx>{S^nOJyGwZf@?j!?$)t
zO?$a+o!*^OUmtDC6v&=v8kW7v=e^YNlkcD3_;aY=?r!Jnt-N;g`$c!$lCgUFXztMt
z^+!>YS8Z8wEM&=#DQBGzwj`CSiZ;C78ykK!>Gg^gD}IzO=I7<rbn!iSS9Vrj((<Oj
zT)(-C5{|57X*!rI&*ApdAy@aC{Ehx&%iPMG8<$S7I?&T;A2~-$hH+np2CHL2>}JiW
zp;KLca;(Z;)q5@5`eNJEsiGEh{Vd+_wKy%@6E$zn92WmhtE)F>E)QpPSrNK<rp}ow
zhTiL^eX6dMzW9xOj)US^J-2_a{;xeW>C%N2_r7p9c`B?DS`(&S&Hs7P9@nU-s1My2
zJSUwvbt3lFu`_3So?Qry@u{7&bhYJ)nLMU7|CDX(by{vziLA9)_u3_}<!+vP)2hXL
r*34O@lDKEz|AiZ5_x=xjR>y4nJYh#!#6krI1_lOCS3j3^P6<r_d1l_w

literal 0
HcmV?d00001

diff --git a/data/tank_orange.png b/data/tank_orange.png
new file mode 100644
index 0000000000000000000000000000000000000000..84f940ba2c93504982ccf24c3fcb857e7839c122
GIT binary patch
literal 1011
zcmeAS@N?(olHy`uVBq!ia0y~yU=RUe4mJh`hTcwDUIqpR#^NA%CuZ~GzQGI(44efX
zk;M!Q+(IDCc<FB49|i^nxvG$elEl)IjQk=7hKgIo>vT??Iq4Z%;HB&3ugk=s-o)zj
zS?$+01_tIlPZ!4!i_@(k=kqUni2QqVqc8Y&;p82>Su9RYySFPj+@7{BgM04<=l@)M
za|Ak=?Uzhbj#+UbOJDn~*Khv~LEi&hrtf{*I&TNVqR_xwT>|QUGS=HB-+W#;>%y`F
z9^2Aw^7nnO&A(UeV06Rt{JnnV%=#*&)`ti8eRAkhzdn7Pat3>Yg2SYs7iGIEHhyHf
z@WtcrdKp<};YZg$eKI;#UG1?nNWhgbIr;IA*FTHJ@;A*qZQP>jblrp{u_65b9x0js
zs_a)z?DSg}CteZqK0kKmZ0Fr?7f0wUx|x&o`Keku$6<p97JO!AW;+({O<MTSWyceV
z6<cI>Eb1z|>0am5ve}4lrUd6ahSIn3dG#MJxz1R2bNP8b+iQ7|6E+>W!jrJq@W=jB
zt!)3Td|8cJot0EKU1Jhq>}BRWx32w?e6L-$Vcpq(HnZ219N4az64}VS*Z%Rr(#s5*
zXI}{#?c%q*?R4P;!)?JM6MihI^eD{zD8;AGy68Zmpp1*eb?XDwMp~T$qJp<x9lWR=
zX}T~%?&Ts|RfpIUNB%6-IJF_=w<F`u;JF7M?lygJQsYiQo7482YQb}5Lgb@PTz-0W
zW|Kye#-Cq5S3G$+GjrdM#Cny^+w)8qN+q|XNf*6X_*mr=&(v?4LeE}u1nGN=uhZjE
zF*dW<|9jfP$!gQySG~Nxh@mY-A&BEr=fc<Se{Xc!9x&i&SIxhFp`a|NE&lw0k4!7t
zdfvRUoBlR5H09d2#QXXIpSlf>2{oKr$MHJy>xw5UUuxD}PXAvL`0oJ631;Q6MB~Jl
z+d0=f`CRGODbN~gw|yHApO|_@j7;qTC%bR6j_4|12p0>maX*;G`2YFV!;U^0WtO^+
z651Ev%=wTdIjP3N?w-lQnL<U&J5T0H|IqcfbWJPIx$#{?Sj}q1bk!OD+Rm}fmw#nu
zb?GhR?#;4Xm)!iv!jIv*0<*5)@?6H9eoFhjcTCl7bMU=3`MG-K&7)iQe67-E+_HwL
ztgNh}NKaSy;Ge(m=j~szL}FoxtK?4$o9yN}v*TyDuMKOC-8wPsa{Tm~HKB$!a;$Du
zo&V+<&v|&K=FQ1vDpMCM5q+_1-j~Drw_k4DxMK&$>>HY0JqA31GWtoiwR_cf1}s>1
zOYu6>p^jM%vn-2ld|z?Ij<xXp3;xJuGH25+X6@AQo$_E?RP(#vyqxMMe@{z!ST7+J
W81VAfv~>&&3=E#GelF{r5}E++xzbMn

literal 0
HcmV?d00001

diff --git a/data/tank_red.png b/data/tank_red.png
new file mode 100644
index 0000000000000000000000000000000000000000..7c8a5c1691621823b768ac638971fe2664782dc6
GIT binary patch
literal 1044
zcmeAS@N?(olHy`uVBq!ia0y~yU=RUe4mJh`hTcwDUIqpR#^NA%CuZ~GzQGI(44efX
zk;M!Q+(IDCc<FB49|i^nxvG$elEl)IjQk=7hKgIo>vT??Iq4Z%;HB&3ugk=s-o)zj
zS?$+01_tJSPZ!4!i_@(k-Z|2)693A+r5=Cn{<p)k$(vPkomP-WmQa_6)8U17OPp4%
zifim*+P>-$m%A3<)QXrW(SxFedRclaHQsXSJz;8^G_7M-+3kp}kJnwl7yF*?|2eC&
zOG{Fh+&q5fPyhSh|MMFPKFm$~dQ@?*v8h(_?+5-f0-E|4FI`-a!#+Vpql@SM_rlVb
zS^~zqCdO;uJwC_tU~*z2<J2tCO*+knoICFr)a|L6$v(U0*VfEWM-z@D6~wS#uis~9
z@V`j>!h#2EvbnzxEPwrXt$A8n!fn|npDSl9>&&)~6_!+z>tB2`Cn+=2Q)W+ak8`NV
zo{|#|XR{W4vTaY_8fcOHAkL7px90S&z9+rXkNzAC=U1BP^X>9;X+iCyA~ruX<|Li?
zCn%o1HC(Q<{Hv0CNch52TuIAwSmN^Q?j6i%c(d*1`B|*}hu6!C*>8I;q%NYY$mxE1
z|C-11x#cw2-0UVzw0f&pcI()$a;XisTwQ_#-&Y;_cH)m<jtHxdP@UnDQz!PjUfZtm
z($KA@?BgF@?jIGwo_3x}KlwyA9NqA{mh)+TNK}sV<t=X~to|(|@pA%i&v~<kV$C~$
zuQ^6t4ty@NxZZ4oQC`BI+_qbyZ0A2u+<)^9S7la}*B>9B_9OT9ZqZyUcKk*m>&3}-
zDylgrV<t55rPwQUEK|Pr?A{z{hi5ej@%x?xi*#+ilx^RwQSg!>`Gv*0h$!w$0j}0g
z{Vg4L?%kWV?!UHrVa>!x-_?w2-aggQe}7-}-CXaF?CeDgtG+G&@po@wq23Js<HFHb
zl<xTZ`F44UU$>~U&wn(t+%{q@pQtCN@h``NAF31Cl#g4^Sl9LbO_9vYsmn4xILOrU
z8NcN5)HCUOHLKzCok-D_lkPrtl`3$$^VF~6(9L58XWgB2{Y8GgwY6F=!g=bt?FsQq
zGV!hVbr&f&MBOyr@|ace*0T#wR78)t_iT}Q@#DVE*Wi|*KnbqZxl_71ZK`|x=H)+n
z-^6#VOwfFhL|ks-qXR7yVi!DpdViYpiJLiW(^3zX#!m54eY1|Sb(8KKR_CQV_}8^e
zd9ye9aqBGoIcLwEy|h$m;lB-jz6Z9Mf8$fW^Iyl+=#}ZO|2H}|7;oO3Ve%@#<A;>!
zQG=cjc6ZKvN=~k;ll$t{tg@Ud<>x~iF>!I{_M1L!dZGPJ-UYj3U6e2C9y{mCJ}pym
zYo>2#sEQEhqE)RMFB)#?*!1u1ZxIgbgVj<gFYP-#6O0NX+%p&$7#KWV{an^LB{Ts5
Dk$~ce

literal 0
HcmV?d00001

diff --git a/data/tank_white.png b/data/tank_white.png
new file mode 100644
index 0000000000000000000000000000000000000000..a8e5367925987cce09edaff60a30288ad9bdb0d1
GIT binary patch
literal 1037
zcmeAS@N?(olHy`uVBq!ia0y~yU=RUe4mJh`hTcwDUIqpR#^NA%CuZ~GzQGI(44efX
zk;M!Q+(IDCc<FB49|i^nxvG$elEl)IjQk=7hKgIo>vT??Iq4Z%;HB&3ugk=s-o)zj
zS?$+01_tI1PZ!4!i_@(k=ktZ#MgCoj```6;tL$yV-tNE&p`uO#Au5flJiYXuOz`I4
ztN69y(mgHL6_1>bvhHALQd%Mx#pfZT6}l>fRkNMV@h5v%)ru?29<X)r9*SLmefMkm
z?CM|NayLFzIpDF`_;=c~v%mL!-^X}It?bpWub;hs@7Au%$$w-jyUEycV*%6JH0}v1
zCpL-S%@Z%b{?6$WyVR#kFQ18}Px>4g6XUWmr0M$W*5k^GbL9@sohtfJr|ae7%TG=>
zdsy^LyL+fPUj9peyf=eXtlYx2U-dqeZr%Rn;u)S<XW5Kq^6(r!@VENArIX9zz!$sv
zwr(}O7oig_@a1I1`_q3lqODGycHQ$Q{P4c{d=FeBTkpPHlzjWf=Xch7{(oR^7wkS-
z^{_kKT+Gb7gRR-4*1qkEeBidJ{8uZk_}Mx~UUm2};eVyf2XBqKPvRkW4>i`T6W@CL
zr_ApU68~G6>zZVlL^@^v7Cn>8il4&ZB(;C0b6qOaPwU44{$dUFw=yD1k2u@eRoDEp
zh*M>i>-?)ECFk^EwTZxj1DoZJ2p77vJ2h)sN+15P*6`7l=DqfEM}95ezxn3-@A>+T
zX`3|*Oz*w#`<oPFbFV_H<gh^2(o<%aH?jC>FN&zro0liX?$z!*d)B<9^Ec0bwz)QK
z-dANK)^GPD+KV)~=bwN5$;C#Aq37QRJEtQ%FF&)J_u5%(QGJ~K*A_k@{rc^(&8{rB
znkHX-wL{uAWc`Oi%SBlcHn()Et)I+_Okc4pvn%VYP`%x)7YFOU>^M-oYCB`rHS@09
zSCrJ2tFfluvQ02!S$D*B=_>BMX&Zd6Zn0aQp1kO0*2nr+oA2f<W-32&u()lGjNhRx
zKH`1O!UsL?++((Rx#6t(?_YBS${V{gmvDKVPmwTvQnd3r_ui0o9pYN4U#bpmt+m$q
z&}*G<A|*5TTm6@4Ywf2eo~WoU>o&-|d9m=}&aM;_mYFX0B3z3Wg-*2CFTG<;v5?eP
ztE?$2{$y|ov#Upx^-Yui_w7Qcm)6vl)W{8<^SQaXC2pJYw2C~oD4u2f>Uoz<ziZnB
zPxYHO-`vr$)e_RmI;y*LZPdMmJ70@GdNMWb^sVUg1wm<P=?gPOPsB;qxu2iNvA>;J
zCqMJ^=g%&!Zj(M6ZaU+^wtDsIb%#TYJo~fS*G)^<emmrE^RK%xQOkW!OGNs8$?^NB
x-Q^TA^F&|TO0PBlUjJs}us&EVobuAXXwK|eZXU}oGB7YOc)I$ztaD0e0swpr<b(hK

literal 0
HcmV?d00001

diff --git a/data/tank_yellow.png b/data/tank_yellow.png
new file mode 100644
index 0000000000000000000000000000000000000000..a5ba8c999b53d0f48dd4953731fafd07f6df8a7b
GIT binary patch
literal 1003
zcmeAS@N?(olHy`uVBq!ia0y~yU=RUe4mJh`hTcwDUIqpR#^NA%CuZ~GzQGI(44efX
zk;M!Q+(IDCc<FB49|i^nxvG$elEl)IjQk=7hKgIo>vT??Iq4Z%;HB&3ugk=s-o)zj
zS?$+01_tIdPZ!4!i_^6sp4lRfBL8+(?@E9F?#v`X=8vm9j;xq0VJMs)GRfiGKlZ(x
za$l8RT;=_^$ee%C1JzS3GZR9NuwH4{(YQd+P-yd)H8bN*ztS>#JY(sC-MixVzOBAr
z&HBOBtZLufz$-sLuWI_*o%2cIL48kO?;#^y2LS;Nj}JEdmzQQ{*j5=ARvr9ve&&Py
zYHDg9vg_m~sW^(TF1dWS!obq=kF!xl!GvEzg57S3H^t`JRo*h&e}`4Vq@rilx~c;^
zi(bF@@WH@mbEl75bJW_lna7QFoR2&%4AByu;-$LGBL0#<fXka*qKA_fH+|w{{npic
zg<Eic{K^TYoQD>59C?`Tv%fyx-o!V1ssA-4z5QNJJlq$$`GVvh`)u2>{nWQ-8x3S8
zAGjKu@kOSqp{Va!@Us8x)1xB0|7E|pAn?DFd&2(!)zE~#eREbNf6ZW7;Nh$)yir_j
zi#wmz@ze*qn;CfZN{uI+5dRdR%)02npF=-iI?Z1q!;<;PR!Qlgz@h58(x9TSW~<c8
zv${I&ZQd|v@{EYUDPJeNUcX)O*PfeZcDW4Vr8ABzuUWS3fualZm3`>~ySH`y@{DTR
z#Gd<qzTXMvX685P$4h6vJtnyG?G`_QJ<-i2`?;1sG@SVSy`zHHMS<?qZhbvlWQ8tm
z)9*iBFiY>l)rU;?Z{$x`W9%$)J%3zvb6Jbblc$?>t8G&r#|r)G>3+3?>EzUeW}_X|
zjR)h-u}_eQa(P-j>*XrfcMIl)3*6m(fz#4@LaNW}zupEK%^%yva!xj$c-?zyMb8oM
zc^j*4M@fq<Nqc-|=KTl%3bsV}sZCm8{_5?o0E=5Dr5_GIl~ew|!6$q9J;RB=mThy{
z8YQ}S@7~$`Rh4G0r{-T`3E#crja$<LuK(-m-l^?aGWpf-FKyy1r$0EDd3SykSi1Sm
z`Hkrn0;Ym)j!o~J&v^&rf3iMQYO9mV+EMD~c7L9oS=m3G^ZRB$UDDIrpO}}&w`-kq
zu&Ix)Z|Rq!$A`@<Cb5@3cWSpWpVXWvQ6MXRFhC&x{+_ofmCZ-b>%Z93SGPDhTbixX
z;<<a2qXU-%r&h<&q&IeNR(z^o9iWlWnzmfSDCf4@GVA7~jVEN6P4cW-xyxh=!|g%=
zzE<m=yBj%juDiaFpQ&>?AXJq1maOgV>Wt|ox3<3*6EJJqE}HUCf3jzS$fR#~oEaDx
O7(8A5T-G@yGywo@UD09y

literal 0
HcmV?d00001

diff --git a/data/woodbox.png b/data/woodbox.png
new file mode 100644
index 0000000000000000000000000000000000000000..15ee620943723cb134446c937c510dd2ab316fb8
GIT binary patch
literal 1526
zcmeAS@N?(olHy`uVBq!ia0y~yV9)?z4rT@hhTRGt@eB;i3;{kNt_%ze92^`10s;~e
z5()|m8X6h~1_l-u77h*$9v&V60Ra&a5eW$i85tP`1qBrq6%7py9UUDLCQO()bLPT@
z3s<dLwQ19)-Me=mK79DhnKM_eT)BJq?$f7F-@SYH?c2Bi|Nk>^GBFA;F^MxX%QLg8
zv2yCM^P6&s+49P|2&j3B=mkqyM9DfODfwn<L=@^JSC|wuSXXv9H&5{Cn;AM|Vf^A%
znQJ!{@7P^`@Nn0eGt;kJT737`hNqAAy?cH3+o#+A|GZ{k;bCMIV&;-$<&kF>P~#HO
z;gd8LlC=_7c97L{SJLy<Gz~GZiMDV~aq!Od3@!_bu8&UXNY0s%Q#P}#VPQkps;()U
zrq18JVAbK(Th44haOLpnyXUVxz4PeZ%eUXY|N76v&LGUiD8<jDD9o%W!D=AGZmz^-
zr^f51E#PY?5@IG1Z7rMZsFdZdQRu5%5oFvDWz~`7JR!$tW?9(6`uJ5{S(~Po?OxDy
zcvat-ZF8<1TzU8Gj;A+{y?b))+lOcW|9od>VBqIwkm6@n6k*kr;xLfoHdo=d(-d~o
zm-IE053x~=cG5}qGRX?GDU5WjNc3;WitH#%m{6HMvng+3SLv$BwVP(Q>|WAyc=hBn
zTjyNayZG+0)lbiFes^=vw}(gmzdp;y!XVDgAkWXB&d;DP%wR6gU@y(!F3sRC&mJz%
z9<R)vuFRdU&Rwm}->fa%Z7x39S$ej=^5S^y)%nJotIhX!J0G9zeSUTL_1)?B&zHZx
z-~Rsj?9Z>)fB$^=_xIcX|9@r}%D_9hURN{YJ_7>-XMsm#F#`j)FbFd;%$g&?z`(#>
z;_2(keutfjM@N`-%EoF22BuC=7sn8b(^EsE^Bx=U=mdOO=ERU_zb(Dv;EkFS`<(rD
z884Z#;Kq8bt$!|bJmK;D`uMT<;j_AD<nJ2n+E>4AXY#?l1r1MkTgZPp)fjtLS;X7x
zPUr4y#$>)l2JHeFH>|i`Fzn*CWqx>fcT&PHMwuJyHc04ZT$&zRl`kn=ml^nzv(C(A
zLDn9g`elN>-n(L~lUs@lt335CC**HwbDh1;RM)GL=Td8^!Ul6z&bbaQoT75RQNn%K
z><l|=wq1JZs@A!)=ku;}GS?;c)Ozolm$J_|CPKuz?{9!^rjUZ<hNFek`g+90BsCV#
zWxijgQ(9xOE@iEp>}{2&an6atO~w`7f1@;00=ERIZfMxS{_?cQo|wZY6=w40eM#*v
zeG)Icf`#wc*_iwHZ>~Q5*e(2uVPh@R{7AtN-K&R|ytG<&v|IAg?PvDx(<B?r8q)&}
z_jkWhiZ`G5``ey;pG&o3|G7JiQqv~%eKb$^*<*I-K*;*(u1sI|e{9JvdK=pBdFGFs
z(nB-r_TTS?S8Ohj?D#D%&G72xLrX`WPsT5vOFlMi{G@f`YTt`POCC-8^kyRG*+nxZ
zIZt`0+?K%Ux-j#j)dsJN<#}6QaoZ_%PjXF3{b)1EIL2L$dsb9<9m~26hyTvjoa4$P
z8~?YTyHA<>I!8?HT$WimzpvR%oXG20`DDt$-z-_Xmd*F_nwgU1cXC#|*xE;5zpZPF
z`PclaQ)${7_fno<i}MDjjg$}Su4-K+XIuGk!Ncbklf5mx_>T*!#JPKIJa+8bUyq*^
zY#-BNjjqR8^@T8~rOZvrSYOGOD!xu+Q+m^ZV-aVAn^%+x=sODin7HlZzO^>}s#P{=
wA8*^d>CTGwJePL0uB7(C%L~r+pVvQ@R}J}njayQ5FDU<cy85}Sb4q9e0J3^Ry#N3J

literal 0
HcmV?d00001

diff --git a/gameobjects.py b/gameobjects.py
new file mode 100644
index 0000000..fbc4127
--- /dev/null
+++ b/gameobjects.py
@@ -0,0 +1,345 @@
+import images
+import pygame
+import pymunk
+import math
+
+DEBUG = False # Change this to set it in debug mode
+
+
+def physics_to_display(x):
+    """ This function is used to convert coordinates
+        in the physic engine into the display coordinates """
+    
+    return x * images.TILE_SIZE
+
+
+class GameObject:
+    """ Mostly handles visual aspects (pygame) of an object.
+        Subclasses need to implement two functions:
+        -screen_position that will return the position of the object
+        -screen_orientation that will return how much the object
+         is rotated on the screen (in degrees). """
+
+    def __init__(self, sprite):
+        """ Game object constructor """
+        self.sprite         = sprite
+
+
+    def update(self):
+        """ Placeholder, supposed to be implemented in a subclass.
+            Should update the current state (after a tick) of the object."""
+        return
+
+    def post_update(self):
+        """ Should be implemented in a subclass. Make updates that depend on
+            other objects than itself."""
+        return
+
+
+    def update_screen(self, screen):
+        """ Updates the visual part of the game. Should NOT need to be changed
+            by a subclass."""
+        sprite = self.sprite
+        
+        # Get the position of the object (pygame coordinates)
+        p = self.screen_position()
+        
+        # Rotate the sprite using the rotation of the object
+        sprite = pygame.transform.rotate(sprite, self.screen_orientation()) 
+
+        # The position of the screen correspond to the center of the object,
+        # but the function screen.blit expect to receive the top left corner
+        # as argument, so we need to adjust the position p with an offset
+        # which is the vector between the center of the sprite and the top left
+        # corner of the sprite
+        offset = pymunk.Vec2d(sprite.get_size()) / 2.
+        p = p - offset
+        screen.blit(sprite, p) # Copy the sprite on the screen
+
+
+class GamePhysicsObject(GameObject):
+    """ This class extends GameObject and it is used for objects which have a
+        physical shape(such as tanks and boxes). This class handle the physical
+        interaction of the objects.
+    """
+
+    def __init__(self, x, y, orientation, sprite, space, movable):
+        """ Takes as parameters the starting coordinate (x,y), the orientation,
+            the sprite (aka the image representing the object), the physic
+            engine object(space) and whether the object can be moved (movable).
+        """
+        super().__init__(sprite)
+        # Half dimensions of the object converted
+        # from screen coordinates to physic coordinates.
+        half_width          = 0.5 * self.sprite.get_width() / images.TILE_SIZE
+        half_height         = 0.5 * self.sprite.get_height() / images.TILE_SIZE
+
+        # Physical objects have a rectangular shape, the points
+        # correspond to the corners of that shape.
+        points              = [[-half_width, -half_height],
+                            [-half_width, half_height],
+                            [half_width, half_height],
+                            [half_width, -half_height]]
+        self.points = points
+        
+        # Create a body (which is the physical representation
+        # of this game object in the physic engine)
+        if(movable):
+            # Create a movable object with some mass and moments
+            # (considering the game is a top view game, with no gravity,
+            # the mass is set to the same value for all objects)."""
+            mass = 10
+            moment = pymunk.moment_for_poly(mass, points)
+            self.body         = pymunk.Body(mass, moment)
+        else:
+            # Create a non movable (static) object
+            self.body         = pymunk.Body(body_type=pymunk.Body.STATIC) 
+        
+        self.body.position  = x, y
+        # orientation is provided in degress, but pymunk expects radians.
+        self.body.angle     = math.radians(orientation)
+        # Create a polygon shape using the corner of the rectangle
+        self.shape          = pymunk.Poly(self.body, points)  
+        self.shape.parent = self
+
+        # Add the object to the physic engine
+        if(movable):
+            space.add(self.body, self.shape)
+        else:
+            space.add(self.shape)
+
+
+    def screen_position(self):
+        """ Converts the body's position in the physics engine to
+            screen coordinates. """
+        return physics_to_display(self.body.position)
+
+    def screen_orientation(self):
+        """ Angles are reversed from the engine to the display. """
+        return -math.degrees(self.body.angle)
+
+    def update_screen(self, screen):
+        """ Function for repaint the screen in its current state."""
+        super().update_screen(screen)
+        # debug draw
+        if DEBUG:
+            ps = [self.body.position+p for p in self.points]
+
+            ps = [physics_to_display(p) for p in ps]
+            ps += [ps[0]]
+            pygame.draw.lines(screen,pygame.color.THECOLORS["red"],False, ps,1)
+
+
+
+
+def clamp(min_max, value):
+    """ Convenient helper function to bound a value to a specific interval. """
+    return min(max(-min_max, value), min_max)
+
+
+class Tank(GamePhysicsObject):
+    """ Extends GamePhysicsObject and handles aspects which are specific
+        to our tanks. """
+
+    ACCELERATION = 0.8
+    NORMAL_MAX_SPEED = 4.0
+    FLAG_MAX_SPEED = NORMAL_MAX_SPEED * 0.5
+
+    def __init__(self, x, y, orientation, sprite, space):
+        """ Tank constructor """
+        super().__init__(x, y, orientation, sprite, space, True)
+        # Define variable used to apply motion to the tanks
+        self.shape.collision_type = 2
+        self.acceleration = 0 # 1 forward, 0 for stand still, -1 for backwards
+        self.rotation = 0 # 1 clockwise, 0 for no rotation, -1 counter clockwise
+        self.timer = 0
+        self.spawn_cooldown = 0
+        self.cooldown = 0
+        self.points = 0
+        self.hitpoints = 2
+        self.space = space
+        self.flag                 = None                      
+        self.max_speed        = Tank.NORMAL_MAX_SPEED  
+        self.start_position       = pymunk.Vec2d(x, y)
+
+
+    def accelerate(self):
+        """ Call this function to make the tank move forward. """
+        self.acceleration = 1
+
+    def stop_moving(self):
+        """ Call this function to make the tank stop moving. """
+        self.acceleration  = 0
+        self.body.velocity = pymunk.Vec2d.zero()
+
+    def decelerate(self):
+        """ Call this function to make the tank move backward. """
+        self.acceleration = -1
+
+    def turn_left(self):
+        """ Makes the tank turn left (counter clock-wise). """
+        self.rotation = -1
+
+    def turn_right(self):
+        """ Makes the tank turn right (clock-wise). """
+        self.rotation = 1
+
+    def stop_turning(self):
+        """ Call this function to make the tank stop turning. """
+        self.rotation = 0
+        self.body.angular_velocity = 0
+
+    def update(self):
+        """ A function to update the objects coordinates.
+            Gets called at every tick of the game. """
+
+        # Creates a vector in the direction we want accelerate / decelerate
+        acceleration_vector = pymunk.Vec2d\
+                              (0,self.ACCELERATION*\
+                               self.acceleration).rotated(self.body.angle)
+        # Applies the vector to our velocity
+        self.body.velocity += acceleration_vector
+
+        # Makes sure that we dont exceed our speed limit
+        velocity = clamp(self.max_speed, self.body.velocity.length)
+        self.body.velocity = pymunk.Vec2d(velocity, \
+                                          0).rotated(self.body.velocity.angle)
+
+        # Updates the rotation
+        self.body.angular_velocity += self.rotation * self.ACCELERATION
+        self.body.angular_velocity = clamp(self.max_speed, \
+                                           self.body.angular_velocity)
+
+
+    def post_update(self,flag):
+        # If the tank carries the flag, then update the positon of the flag
+        if(self.flag != None):
+            self.flag.x           = self.body.position[0]
+            self.flag.y           = self.body.position[1]
+            self.flag.orientation = -math.degrees(self.body.angle)
+        # Else ensure that the tank has its normal max speed
+        else:
+            self.max_speed = Tank.NORMAL_MAX_SPEED
+            
+        self.try_grab_flag(flag)
+    
+        self.timer += 1
+        self.spawn_cooldown += 1
+        self.cooldown -= 1
+    
+        if self.cooldown > 0:
+            self.body.position = self.start_position
+            self.stop_moving()
+        
+        
+
+    def try_grab_flag(self, flag):
+        """ Call this function to try to grab the flag, if the
+            flag is not on other tank and it is close to the current tank,
+            then the current tank will grab the flag.
+        """
+        
+        # Check that the flag is not on other tank
+        if(not flag.is_on_tank):
+            # Check if the tank is close to the flag
+            flag_pos = pymunk.Vec2d(flag.x, flag.y)
+            if((flag_pos - self.body.position).length < 0.5): 
+                # Grab the flag !
+                self.flag           = flag
+                flag.is_on_tank     = True
+                self.max_speed  = Tank.FLAG_MAX_SPEED
+
+    def has_won(self):
+        """ Check if the current tank has won (if it is has the
+            flag and it is close to its start position). """
+        
+        return self.flag != None and \
+               (self.start_position - self.body.position).length < 0.2
+
+
+    
+    def shoot(self):
+        """ Call this function to shoot a missile"""
+        
+        if self.timer > 60:
+            self.timer = 0
+            x = self.body.position[0]+ 0.3*math.cos(math.pi/2+self.body.angle)
+            y = self.body.position[1]+0.3*math.sin(math.pi/2+self.body.angle)
+            return Bullet(x, y, self.body.angle, images.bullet, self.space)
+        
+    def on_death(self):
+        """ Reset the tank's position and set the cooldown when a tank is
+            destroyed. """
+        self.flag = None
+        
+        if self.spawn_cooldown > 100:
+            if self.hitpoints > 1:
+                self.hitpoints = self.hitpoints-1
+            else:
+                self.body.position = self.start_position
+                self.cooldown = 120
+                self.max_speed = 0
+                self.spawn_cooldown = 0
+
+class Box(GamePhysicsObject):
+    """ This class extends the GamePhysicsObject to handle box objects. """
+
+    def __init__(self, x, y, sprite, movable, space, destructable):
+        """ It takes as arguments the coordinate of the starting position
+            of the box (x,y) and the box model (boxmodel). """
+        super().__init__(x, y, 0, sprite, space, movable)
+        self.shape.collision_type = 3
+        self.destructable = destructable
+        self.hitpoints = 2
+      
+
+def get_box_with_type(x, y, type, space):
+    """ Return the box onject corresponding to the input type"""
+    (x, y) = (x + 0.5, y + 0.5) # set offsets in center of the tile
+    if type == 1: # Creates a non-movable non-destructable rockbox
+        return Box(x, y, images.rockbox, False, space, False)
+    if type == 2: # Creates a movable destructable woodbox
+        return Box(x, y, images.woodbox, True, space, True)
+    if type == 3: # Creates a movable non-destructable metalbox
+        return Box(x, y, images.metalbox, True, space, False)
+
+
+
+class GameVisibleObject(GameObject):
+    """ This class extends GameObject for object that are visible on
+        screen but have no physical representation (bases and flag) """
+
+    def __init__(self, x, y, sprite):
+        """ It takes argument the coordinates (x,y) and the sprite. """
+        self.x            = x
+        self.y            = y
+        self.orientation  = 0
+        super().__init__(sprite)
+        
+    def screen_position(self):
+        return physics_to_display(pymunk.Vec2d(self.x, self.y))
+
+    def screen_orientation(self):
+        return self.orientation
+
+
+class Flag(GameVisibleObject):
+    """ This class extends GameVisibleObject for representing flags."""
+
+    def __init__(self, x, y):
+        self.is_on_tank   = False
+        super().__init__(x, y,  images.flag)
+        
+        
+class Bullet(GamePhysicsObject):
+    """ Class for the bullet objects in the game."""
+    def __init__(self, x, y, sprite, orientation, space):
+        """Bullet constructor, take information from the tank that
+           shoots as input"""
+        super().__init__(x,y, sprite, orientation, space, True)
+        self.orientation = math.degrees(self.body.angle)
+        self.shape.collision_type = 1
+        self.velocity             = 15
+        self.body.velocity = pymunk.Vec2d(\
+            (0,self.velocity)).rotated(self.orientation)
+
diff --git a/images.py b/images.py
new file mode 100644
index 0000000..6ec9605
--- /dev/null
+++ b/images.py
@@ -0,0 +1,46 @@
+import pygame
+import os
+
+main_dir = os.path.split(os.path.abspath(__file__))[0]
+
+def load_image(file):
+    """ Load an image from the data directory. """
+    
+    file = os.path.join(main_dir, 'data', file)
+    try:
+        surface = pygame.image.load(file)
+    except pygame.error:
+        raise SystemExit('Could not load image "%s" %s'%\
+                         (file, pygame.get_error()))
+    return surface.convert_alpha()
+
+
+TILE_SIZE = 40 # Define the default size of tiles
+ 
+explosion = load_image('explosion.png') # Image of an explosion
+ 
+grass     = load_image('grass.png') # Image of a grass tile
+
+rockbox   = load_image('rockbox.png') # Image of a rock box (wall)
+
+metalbox  = load_image('metalbox.png') # Image of a metal box
+
+woodbox   = load_image('woodbox.png') # Image of a wood box
+
+flag      = load_image('flag.png') # Image of flag
+
+bullet = load_image('bullet.png')
+bullet = pygame.transform.scale(bullet, (10, 10))
+bullet = pygame.transform.rotate(bullet, -90)
+
+# List of image of tanks of different colors
+tanks     = [load_image('tank_orange.png'), load_image('tank_blue.png'),\
+             load_image('tank_white.png'),
+             load_image('tank_yellow.png'), load_image('tank_red.png'),\
+             load_image('tank_gray.png')]
+
+# List of image of bases corresponding to the color of each tank
+bases     = [load_image('base_orange.png'), load_image('base_blue.png'),\
+             load_image('base_white.png'),
+             load_image('base_yellow.png'), load_image('base_red.png'), \
+             load_image('base_gray.png')]
diff --git a/init_objects.py b/init_objects.py
new file mode 100644
index 0000000..74e7e09
--- /dev/null
+++ b/init_objects.py
@@ -0,0 +1,89 @@
+import gameobjects
+from pygame.locals import *
+from pygame.color import *
+import pymunk
+import images
+import ai
+def create_flag(game_objects_list,flag_start):
+    """Create a flag object and add it to the list of game objects."""
+
+    flag = gameobjects.Flag(flag_start[0], flag_start[1])
+    game_objects_list.append(flag)
+    flag.is_on_tank   = False
+    flag.x, flag.y = flag_start
+    return flag
+
+def create_borders(space,current_map):
+    """ Create borders for the game map. """
+    
+    static_body = space.static_body
+
+    static_lines = [
+            pymunk.Segment(static_body,
+                           (-0.5, current_map.height), (-0.5, 0), 0.5
+                            ), # left
+            pymunk.Segment(static_body, (0, current_map.height+0.5),
+                           (current_map.width, current_map.height+0.5),
+                            0.5), # lower
+            pymunk.Segment(static_body,
+                           (current_map.width+0.5, 0), (current_map.width+0.5,
+                            current_map.height),
+                           0.5), # right
+            pymunk.Segment(static_body, (0, -0.5), (current_map.width, -0.5),
+                            0.5) # upper
+        ]
+    static_lines[0].collision_type = 10
+    static_lines[1].collision_type = 10
+    static_lines[2].collision_type = 10
+    static_lines[3].collision_type = 10
+    space.add(*static_lines)
+    
+    
+def create_background(current_map,background):
+    """Create a background image for the game map."""
+    for x in range(0, current_map.width):
+        for y in range(0,  current_map.height):
+            background.blit(images.grass,(x*images.TILE_SIZE, \
+                                          y*images.TILE_SIZE))
+            
+            
+def create_boxes(game_objects_list , current_map, space):
+    """Create boxes for the game map."""
+    
+    for x in range(0, current_map.width):
+        for y in range(0,  current_map.height):
+        # Get the type of boxes
+            box_type  = current_map.boxAt(x, y)
+            if(box_type != 0):
+                box = gameobjects.get_box_with_type(x, y, box_type, space)
+                game_objects_list.append(box)
+
+def create_tanks(tanks_list,game_objects_list,current_map,space,multi,ai_list):
+    """  create and manage tanks in the game. """
+    
+    for i in range(0, len(current_map.start_positions)):
+    # Get the starting position of the tank "i"
+        pos = current_map.start_positions[i]
+    # Create the tank, images.tanks contains the image representing the tank
+        tank = gameobjects.Tank(pos[0], pos[1], pos[2], images.tanks[i], space)
+    # Add the tank to the list of objects to display
+        game_objects_list.append(tank)
+    # Add the tank to the list of tanks
+        tanks_list.append(tank)
+        if not multi:
+            for i in range(len(tanks_list)-1):
+                ai_list.append(ai.Ai(tanks_list[i+1], game_objects_list,\
+                                     tanks_list, space, current_map))
+        else:
+            for i in range(1,len(tanks_list)-1):
+                ai_list.append(ai.Ai(tanks_list[i+1], game_objects_list,\
+                                     tanks_list, space, current_map))   
+               
+
+def create_bases(game_objects_list,current_map):
+    """ create all needed bases in the game. """
+    
+    for i in range(0, len(current_map.start_positions)):
+        pos = current_map.start_positions[i]
+        base = gameobjects.GameVisibleObject(pos[0],pos[1],images.bases[i])
+        game_objects_list.append(base)
diff --git a/maps.py b/maps.py
new file mode 100644
index 0000000..c0841d6
--- /dev/null
+++ b/maps.py
@@ -0,0 +1,68 @@
+import images
+import pygame
+
+
+class Map:
+  """ An instance of Map is a blueprint for how the game map will look. """
+
+  def __init__(self,  width,  height,  boxes,  start_positions, flag_position):
+    """ Takes as argument the size of the map (width, height),
+        an array with the boxes type, the start position of tanks
+        (start_positions) and the position of the flag (flag_position).
+    """
+    self.width              = width
+    self.height             = height
+    self.boxes              = boxes
+    self.start_positions    = start_positions
+    self.flag_position      = flag_position
+
+  def rect(self):
+    """ Creates a rectangle for a specifc image. """
+    
+    return pygame.Rect(0, 0, images.TILE_SIZE*self.width, \
+                       images.TILE_SIZE*self.height)
+  
+  def boxAt(self, x, y):
+    """ Return the type of the box at coordinates (x, y). """
+    
+    return self.boxes[y][x]
+
+
+map0 = Map(9, 9, 
+               [ [0, 1, 0, 0, 0, 0, 0, 1, 0], 
+                 [0, 1, 0, 2, 0, 2, 0, 1, 0], 
+                 [0, 2, 0, 1, 0, 1, 0, 2, 0], 
+                 [0, 0, 0, 1, 0, 1, 0, 0, 0], 
+                 [1, 1, 0, 3, 0, 3, 0, 1, 1], 
+                 [0, 0, 0, 1, 0, 1, 0, 0, 0], 
+                 [0, 2, 0, 1, 0, 1, 0, 2, 0], 
+                 [0, 1, 0, 2, 0, 2, 0, 1, 0], 
+                 [0, 1, 0, 0, 0, 0, 0, 1, 0] ],
+               [[0.5, 0.5, 0], [8.5, 0.5, 0],
+                
+                [0.5, 8.5, 180], [8.5, 8.5, 180]], [4.5, 4.5])
+
+map1 = Map(15, 11, 
+           [ [ 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0],
+             [ 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0], 
+             [ 0, 1, 0, 3, 1, 1, 0, 0, 0, 1, 1, 3, 0, 1, 0], 
+             [ 0, 2, 0, 0, 3, 0, 0, 2, 0, 0, 3, 0, 0, 2, 0], 
+             [ 2, 1, 0, 1, 1, 0, 1, 3, 1, 0, 1, 1, 0, 1, 2], 
+             [ 1, 1, 3, 0, 3, 2, 3, 0, 3, 2, 3, 0, 3, 1, 1], 
+             [ 2, 1, 0, 1, 1, 0, 1, 3, 1, 0, 1, 1, 0, 1, 2], 
+             [ 0, 2, 0, 0, 3, 0, 0, 2, 0, 0, 3, 0, 0, 2, 0], 
+             [ 0, 1, 0, 3, 1, 1, 0, 0, 0, 1, 1, 3, 0, 1, 0], 
+             [ 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0], 
+             [ 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0] ], 
+           [[0.5, 0.5, 0], [14.5, 0.5, 0], [0.5, 10.5, 180],
+
+            [14.5, 10.5, 180], [7.5, 0.5,  0], [7.5, 10.5, 180]], [7.5, 5.5])
+
+map2 = Map(10, 5, 
+           [ [ 0, 2, 0, 2, 0, 0, 2, 0, 2, 0 ],
+             [ 0, 3, 0, 1, 3, 3, 1, 0, 3, 0 ],
+             [ 0, 1, 0, 1, 0, 0, 1, 0, 1, 0 ], 
+             [ 0, 3, 0, 1, 3, 3, 1, 0, 3, 0 ], 
+             [ 0, 2, 0, 2, 0, 0, 2, 0, 2, 0 ] ],
+           
+           [[0.5, 2.5, 270], [9.5, 2.5, 90]], [5, 2.5] )
diff --git a/menu.py b/menu.py
new file mode 100644
index 0000000..a8c24c2
--- /dev/null
+++ b/menu.py
@@ -0,0 +1,106 @@
+import pygame
+import images
+from pygame.locals import *
+import maps
+
+
+def main_menu():
+    """
+    Displays the main menu screen, allowing the user to select options for
+    game play (singleplayer or multiplayer), map, fog, and game mode
+    (score limit, time limit, or round limit). """
+    
+    multiplayer = 1
+    mapp        = 2
+    fog         = 3
+    game_mode   = 4
+    return_    = 5
+        
+    def get_text(var):
+        """ Returns the text to be displayed for each option in the main menu.
+        """
+        
+        white = (255,255,255)
+        font = pygame.font.SysFont('Corbel',35)
+      
+        if var == multiplayer :
+            text1 = font.render('play:' , True , white)
+            text2 = font.render('Capture the Flag!' , True , white)
+            text3 = font.render('singleplayer: press 1!' , True , white)
+            text4 = font.render('multiplayer:  press 2!' , True , white)
+        elif var == mapp :
+            text1 = font.render('Choose a map:' , True , white)
+            text2 = font.render('Capture the Flag!' , True , white)
+            text3 = font.render('Map1, Map2 or Map3' , True , white)
+            text4 = font.render('press: 1 , 2 or 3 ' , True , white)
+        elif var == fog :
+            text1 = font.render('Choose fog:' , True , white)
+            text2 = font.render('Capture the Flag!' , True , white)
+            text3 = font.render('With fog:    press 1' , True , white)
+            text4 = font.render('Without fog: press 2' , True , white)
+        elif var == game_mode :
+            text1 = font.render('Choose a game mode:' , True , white)
+            text2 = font.render('Capture the Flag!' , True , white)
+            text3 = font.render('Score limit, Time limit or Round limit' ,\
+                                True , white)
+            text4 = font.render('press: 1, 2 or 3 ' , True , white)
+        
+        return text1,text2,text3,text4
+
+    def print_on_screen(lst):
+        """ prints the text on the screen """
+        
+        green = (80,200,80)
+        width = 600
+        height = 600
+        screen = pygame.display.set_mode((width,height))
+        screen.fill(green)
+        screen.blit(lst[0], (width/6,height/3))
+        screen.blit(lst[1], (width/6,height/6))
+        screen.blit(lst[2], (width/6,height/3+30))
+        screen.blit(lst[3], (width/6,height/3+70))
+        pygame.display.update()
+
+    return_list = []
+    state = 1
+    while True:
+        
+        print_on_screen(get_text(state))
+        
+        for ev in pygame.event.get():
+            if ev.type == KEYDOWN:
+                temp = None
+                if ev.key == K_ESCAPE:
+                    pygame.quit()
+                if ev.key == K_1:
+                    if state == multiplayer :
+                        temp = False
+                    elif state == mapp :
+                        temp = maps.map0
+                    elif state == fog :
+                        temp = True
+                    elif state == game_mode :
+                        temp = 1
+                    
+                elif ev.key == K_2:
+                    if state == multiplayer :
+                        temp = True
+                    elif state == mapp :
+                        temp = maps.map1
+                    elif state == fog :
+                        temp = False
+                    elif state == game_mode :
+                        temp = 2
+                    
+                elif ev.key == K_3:
+                    if state == mapp :
+                        temp = maps.map2
+                    elif state == game_mode :
+                        temp = 3
+                        
+                if temp != None:
+                    return_list.append(temp)
+                    state = state + 1
+            
+            if state == return_ :
+                return return_list
diff --git a/print_functions.py b/print_functions.py
new file mode 100644
index 0000000..489bb02
--- /dev/null
+++ b/print_functions.py
@@ -0,0 +1,70 @@
+import pygame
+import pymunk
+from pygame.locals import *
+from pygame.color import *
+import images
+
+font1 = pygame.font.SysFont('Corbel',20)
+font2 = pygame.font.SysFont('Corbel',35)
+white = (255,255,255)
+
+
+def print_stats_time(screen,var, current_map):
+    """ Print the current time left on the game screen. """
+    
+    text1 = font1.render("Time left:"+str(((1800*5-var)//60)) , True , white)
+    screen.blit(text1, (current_map.width*40+18,current_map.height*18))
+    
+    
+def print_counting_score_console(tanks_list):
+    """ Print the score of retrived flags in the console"""
+    
+    player = 1
+    for i in tanks_list:
+        print('Player',player,": ",i.points)
+        player = player+1
+
+def print_score_result(screen, tanks_list):
+    """ Print the current score of retrived flags for all tanks over the whole
+        screen before a new round is started """
+    
+    width = 300
+    height = 300
+    # create all labels!
+    while True:
+        for ev in pygame.event.get():
+            if ev.type == KEYDOWN:
+                if ev.key == K_1:        
+                    return
+        text2 = font2.render('Press 1 to countinue ' , True , white)
+        player = 1
+        screen.blit(images.grass,(200, 200))
+        for i in tanks_list:
+            text1 = font2.render("Player"+str(player)+":"+str(i.points), \
+                                 True , white)
+            screen.blit(text1, (width/2-120,height/6+player*50))
+            player = player +1
+        screen.blit(text2, (width/2-120,height/6-40)) 
+        text3 = font2.render('Result:' , True , white)
+        screen.blit(text3, (width/2-120,height/6))
+        pygame.display.update()
+        
+        
+def print_stats_score(screen, tanks_list , current_map):
+    """ Print the current score of each tank on the game screen """
+
+    player = 1
+    for i in tanks_list:
+        text1 = font1.render(('Player'+str(player)+": "+str(i.points)) , \
+                             True , white)
+        screen.blit(text1,(current_map.width*40+18,\
+                           current_map.height*15+player*15))
+        player = player+1
+
+
+    
+def print_stats_round(screen, var , current_map):
+    """ Print the round number on the game screen. """
+    
+    text1 = font1.render("round nr:"+str(var) , True , white)
+    screen.blit(text1, (current_map.width*40+18,current_map.height*18))
-- 
GitLab