From 731f3ba0c9f729ab8d33d212368c7c651776e813 Mon Sep 17 00:00:00 2001
From: Faruk Hammoud <farukhammoud@gmail.com>
Date: Wed, 18 Mar 2020 11:55:16 +0100
Subject: [PATCH] ia implementation changed

---
 __pycache__/ball.cpython-37.pyc           | Bin 0 -> 1432 bytes
 __pycache__/game.cpython-37.pyc           | Bin 0 -> 1902 bytes
 __pycache__/online_game.cpython-37.pyc    | Bin 0 -> 2426 bytes
 __pycache__/player.cpython-37.pyc         | Bin 0 -> 1219 bytes
 __pycache__/team.cpython-37.pyc           | Bin 0 -> 1476 bytes
 automafut_2.py                            |  10 -------
 game.py                                   |   8 +++---
 ias/__init__.py                           |   0
 ias/__pycache__/__init__.cpython-37.pyc   | Bin 0 -> 152 bytes
 ias/__pycache__/ia.cpython-37.pyc         | Bin 0 -> 567 bytes
 ias/__pycache__/ia_0000001.cpython-37.pyc | Bin 0 -> 960 bytes
 ias/__pycache__/ia_1900251.cpython-37.pyc | Bin 0 -> 909 bytes
 ias/ia.py                                 |   7 +++++
 ias/ia_0000001.py                         |  28 +++++++++++++++++++
 ias/ia_1900251.py                         |  19 +++++++++++++
 automafut_1.py => online_example.py       |   9 +++---
 online_game.py                            |   7 ++++-
 stadium/game.pde                          |  32 ++++++++--------------
 stadium/player.pde                        |   3 ++
 stadium/team.pde                          |  30 ++++++++++++++------
 team.py                                   |   4 ++-
 21 files changed, 106 insertions(+), 51 deletions(-)
 create mode 100644 __pycache__/ball.cpython-37.pyc
 create mode 100644 __pycache__/game.cpython-37.pyc
 create mode 100644 __pycache__/online_game.cpython-37.pyc
 create mode 100644 __pycache__/player.cpython-37.pyc
 create mode 100644 __pycache__/team.cpython-37.pyc
 delete mode 100644 automafut_2.py
 create mode 100644 ias/__init__.py
 create mode 100644 ias/__pycache__/__init__.cpython-37.pyc
 create mode 100644 ias/__pycache__/ia.cpython-37.pyc
 create mode 100644 ias/__pycache__/ia_0000001.cpython-37.pyc
 create mode 100644 ias/__pycache__/ia_1900251.cpython-37.pyc
 create mode 100644 ias/ia.py
 create mode 100644 ias/ia_0000001.py
 create mode 100644 ias/ia_1900251.py
 rename automafut_1.py => online_example.py (52%)

diff --git a/__pycache__/ball.cpython-37.pyc b/__pycache__/ball.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..11b71f198abec0ead762c7b20172c70e0be9a756
GIT binary patch
literal 1432
zcmZ?b<>g{vU|?X+kBqy<%)sy%#DQUE1_lNP1_p*=AqEBpcZL*(6vh^Y6vk$zD25cK
zU<OU*WSB}2%>+~J!oa|g$`Hkv!Vtxj!kEI;!Vtxr!kog=!Vtxh!kWU?!Vtxp!k)s>
z!Vtxl!kNO=!Vtxt!kxm?!Vtxg!kfa^!Vtxo!XM0_DR7I$DKRG}nGs|>0|NtyW?^7p
za0a<afPsObhG78%$cBYXj0`CZAQ$<)1gU-b|NsC0nvA!2ic?GC%TjallQT;yH5qTQ
z6sP8-tz;--V_;zTWtnUh6Iz^FR2<`$SX7!F<C0pOU6NlAlboND8k1OBlAoJcl9*Rg
z3}vU4mc%3_=H%!VRNmr<kI&4@EQyZ?`MDTGFfdl}g50VHlSu{z9>^^q8l(c@XvP|b
zc!nCL8isgAu%j9MG?{L(7UUPlS3syrP39t21_p*AP7nc#AFzud1Umx*1H@wm`Nf$f
znfZAjrNy9dVPIrqtP%t}1LSd-JjqTeOU(f}1w_G}!UJ*&FNgpI9>OU_Ad5ln#O4B6
z&?kce02CM?8l(Xn7$)EtWMRl+sA0%rtYH*kFlS%_1q}lWLl#pFLl!e!jH!lU0n0)L
zXe=}OX|h7X2J9+u0D+u#i?1xTC^M}xJ}JK_CAFwnlL;J*x7brsb4n89OCYWWyB{2i
z%tfVnAbrIkAqGYfMiIs;4sh@lmFA(OI*_};Zq5O_Ig25MF`J=CDg_di3|Wla44~+&
zVaQ@gVajGHGD!hNFW6sj8KxBGY=$Dg6y_R+c(CulGR!p$SxhM`*(^mFDJ-Zm;Kae|
zmpSME|Nk#j7#J8b&w*G*3=9mKEZF?7$q4o@nm3F17#J8pIk;E?6a|c2jBJctOz32l
zFxca$0f-U?pxg%z15jvzd>YK4$>^ua2zCi}t8a0pr<TNnQ?@cF&w_%Hfw77YY!zIJ
zI9oumOvsi>HJr9o`e|~3@@-yXZfbn|Ew1?Z-29Z%91xo)KEALtF$W@3!~sg<+#mv!
zP>Vpt3^)Xfgh65=AOaKs=z$Ch9S|-Cg*FEx2Qvo?2MY%)had-Y5l9>qP#_vfAJ`ah
QLgcW4IK~d7;xj0g0J<9!g#Z8m

literal 0
HcmV?d00001

diff --git a/__pycache__/game.cpython-37.pyc b/__pycache__/game.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..5b8432af0d8c5acac0f831247a37219ab050868e
GIT binary patch
literal 1902
zcmZ?b<>g{vU|@LtvoNlkm4V?ghy%mS3=9ko3=9m#S_}*fDGVu$ISjdsQH+crHd78$
zE^`z!BZE6b3Udle3quM^GgA~x3TrTfCfiGp37U+zSVB@0b3wFIVopvnNDzjZU`B^9
zFfgPtL@}l?L@}i>rZBZIL@`4Q1R0jX*1{0Qn!=vK(ZUeLmcp6B)xr?Pp2D5N)4~wN
zk;0q8*TN9RnZlnU(83VKl_HoT)WQ(Oogy5}peb^T#XT`MHJK4=C5Q&u>J0Lb5(5K6
z2}3hO4MRL5lx8Yn2J=}`7;6~fSyLE-88n&v+%(yWK)P<Rm82%-#v4Luqask)++s;e
z%*naMl%EIkV{vLu+De8ZP;maTOty*%Elw>ej&VyYD$R~@NiEJU$uEdW&QD2=Nh~eN
z&rK{z%quB|veQaSV$u_HQ}qfeZ*j!OXXa&=#K*IM9LfQ5Ju?R*2v+feJfsJc$L=$b
z^<W<`Kz$IR$yfw3MU%0JlYs%^KCmN;xEUB2Zm|}ZBo>wMfb0VKlYy~{3v3Hm7{v-u
z0D=P#<ggS*NbrD7!ew+(YGO(yKZem@;bgFF3=9k)8WfmdqXifk7-|@@7#1+rFfIfq
zv|t8JMn6raB6g5tnTtyEG?~Euh+<Dk%_&KYF9Ev%LV!F}1hP*E$xaTicZy2$@OTCk
z*NlE(LvZ+ozbv&VGp#Z{IX@?}I5R&_6v+k=unlMmP;3MF5$rz+xc?S1FoJx_w15%B
z0>>4jpC)q=E6AUGP{We)i&9dHii_A77#OfStVoc7fdOP{F(_6T7`Yg$gpr*CH6a-k
z!r-LDz`y`vgI%Koat&h&V>VNf2sG50K%rj4n8K9JRHRYEkj1osu?8##b|JIhOHe9!
z3Gxrjt!%}qCGnYw5H~V|<K`9%D6`yR%1i_YDTDw=jtBz-gA6F>Kq-=ek%N(kk%O^{
z8|-3;IVkA@<R`F8O%N`X0J$`aaRE~eLki<UreFrBYYl1`vY4UbOdxTni;F;sp-31M
zf-K<BEfQm3V2ENbC`wJqOfG@A8<M7qK(PvOEhrm7G6-9KX-Pq838=&<hPhe*;cAF1
zJhnk$3yMOptCuh^Fr+ioGFI4>Fr+XxGrBOu8q_k?FfL#Og=`jc4U;6p0+xjgkT6FP
zWrc_q@`W>C)y;-gH%t_!+b5g>Y8yM6J?smhYHA=E`6bBFnjE)SixTtFQ*W^)78IoB
zrGUfh7JETXVr6PkaTI5IYDs)SesO#Sf>{X;KydcdgvLH=W?n&Q$t}iAw4f{k#k>Y6
z_Cd*jfsuugk5P<K3Q7tv3c$)9uzo*Ho?9I8@p*~4sqyi*xZ>k;^HWN5Ky04)_`=e}
z9EeO2sOT!<1(j@kAOe*Ai$KK)IA;`rY$_55Nq{Uzau7U%i$IAC6m7+zgu=nd!NI`{
tg)AIw9Bg2DKTTFh;sB+5uxG&)09X#2p|?0}AkMV|<ri??<YDAt1ONq=X(s>x

literal 0
HcmV?d00001

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

literal 0
HcmV?d00001

diff --git a/__pycache__/player.cpython-37.pyc b/__pycache__/player.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..1f9ad5ed24cfe02864f5c9666417d01e2f757f0a
GIT binary patch
literal 1219
zcmZ?b<>g{vU|?V>3W_UcVqka-;=nL70|SEt0|P^`5Ca2)J3|UX3S$dH3S%=<6hjJA
zFoPy@GE60iW`e1<VPIfLWr$)-VTfW%VN79aVTfW*VNPLbVTfW$VNGFcVTfW)VNc;`
zVTfW&;Y{IbVTfW+;ZEUcVTj^L;SFZc<h#Wdkds)MT9gbj6J|Du?F@2_7y|=C3S$jJ
zJVOnLWK3bIVTfl+VF0<v?-s*LkOocWTP%5rxv96f)AJK^;<Hmz3sQ@2u_orF=cH;f
z-C`+D%}Fa_Wnf@f$xy_>z`*d!I@u~Fv^ce>IL0lps5CpqCAB!aB)=dgIX@*eCb6_6
zKR2-?F|VW;%1$dSi75cPQLmu#7Ds%1W?p7Vd^{+`irGL8U}R%tW31wb_(KmSkKIF{
z7yx^P0qhAzKTXCWkRh5(MeGa=3}80cl@NlHfq~%`Z*gi#d`f0fYH~?tejdmRpy*>@
zV5|~>+KHkd8RRmMyFfHNBn224AYsT*0}4Y%nDtDzSPSxt<0~Lkr6x1P9Xue%@PY`C
zeMpYs0ohfMUz`bY3pXf^SU`4xLO>YFH82&)j38MC1_lrf!r*8H`M8E53lxpu5CGYx
z$q2C-%|6cb)RK6x3;98of&9b3SS0|p3NA^UJs=MevZoT117HD+ZcinOJs`(`{o?`(
zT!t)$6vk|ZA^~WE1@W1(S&9_EiI$;;A&W7EIh&!#AceVxA)XP;XUS$Ma!6qT@xc+o
z>X$j^|Ns9lQy3T+GS7inMhpxLnoLEY5Gumse7>^OqRh0)_@w-zl+>bPQBYWcqMU(|
zi;;~9fvZHJA&08oPm>drvO(D>KK>S0e0*+xN@-4NeEcn*`1r!o#2koB5h(c<fnvRg
z50o}QQBnl5rbrmXMMNE#1xma{pg0HNVvr9wm^fHDm^oNDm^qliGN9xSl7%ENur4qG
S(t3--2I2}kkc!WsbOZoDWB0iL

literal 0
HcmV?d00001

diff --git a/__pycache__/team.cpython-37.pyc b/__pycache__/team.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..262ff0e70bc7906aed32675318ebda02b1e273fc
GIT binary patch
literal 1476
zcmZ?b<>g{vU|@LmvM?@+nStRkhy%mS3=9ko3=9m#S_}*fDGVu$ISjdsQH+crHd78$
zE^`z!BZE6b3Udle3quM^GgA~x3TrTfCfiGp37U+z*aC7AD^rU!8E-LpIwpezVVDVK
zv<(9TLn=cQV+unQQwn1WQwu{BGsHlUVJU1a3{k8p>?s^A3{h+;oGDx_3{mVU+$lUQ
z3{e~@yul2be79IaQWJBN8KFjlOlD<ZU~mRGJcNOPA)TRyA)cXxu^B`&)i7i+EMP8S
zNnvbeT*%1CP@z=9n!=RA+|1;{5Gzv42$yGp$QNpbGt@9FU|Yz*$dJNX!w}D&!T|E3
zU&u?4jW0n~xfOw!njE*-3&8#@E&_$zEvC%GTWpC11*v%{MIcw*Vl7I{OHaKekeQcR
zl9`wjUyxs%S(2HbcZ;<+Ilm}Xlj#;qacWN5Eym213`P753=F?4ldWPxi&Kk=W84yp
zO0#2JQj4=o@(W^;^HWk|5=%?+a}!Gv^Gb@L?6lI7n3B}QT)l$ITO9H6AbaBD*+2oo
z2MQfVHbxFc0Y(8v5k?NiDqc{q>A_SbgIoww1foG09Dbm*QNsudKd`SE{WKYiI2afh
zG?|Kc85kJAY_Llqga88r!!5Sr)ROqjM3DQ7K?X4}R&j%^f{4Q-3KV7_47Ld5NKnuR
zGiZV>;Q?8~2(biY5|a6x>8U00-~bZ@`3!0WAJ_`G6pAgN*Z|ui#K6E%!@$Cj#gM{i
z&cMVF&j9uolV1@i8Z{Y<@L8Lfk^-?-1jAam6pFPhuv8cawiaZmB*Oy66s8o$g-nbL
zAn&FygGE?USm7dUP!V>x2nSe%Gldf_!UYxK28n>Zz~cu_gP9xt|Njs6Oy;@&|Nmz`
z`v3p`OHc^Clw)9EcnJ!K%r_u0klS8@Jfg`|#14uz9#HJS5~L>9kT2q9U|<jjc^;H3
z7#M}1uu2ph_Mp^;oT}kr0kR)tGdK!V7#J8T<VqMo`Ok$RRtTKq7;6|M85S^s@>n5P
zI6P87i9(aP2xJ??k$h#TMVV=p@k#kbDXB%puv7?2+>itUPAZ^OSR~EBzyR`dG03M3
zjC_n$!eCdTn&79&3CbvWiMgrq@wd3*<8$*<N^?MLp7{8}(!?ByOc5xh6@gMukuWIP
zg8~j58enUXtVY-mvKEAkK}m{(iG!1aiG!JgnS;FuB<iQh8pQ@FEWkxW6kBFuv0i2(
axZnV*z-H(z4jYL3>_GVj>@yxl9wq>XDl9Sp

literal 0
HcmV?d00001

diff --git a/automafut_2.py b/automafut_2.py
deleted file mode 100644
index d84b8a1..0000000
--- a/automafut_2.py
+++ /dev/null
@@ -1,10 +0,0 @@
-from online_game import OnlineGame
-
-def naive_ia(game):
-    return [1,1,1,1,1,1,1,1,1,1,1]
-
-game = OnlineGame('127.0.0.1',12345) # Server's address
-game.connect()
-game.set_ia(game.team,naive_ia)
-
-game.play()
\ No newline at end of file
diff --git a/game.py b/game.py
index 23593ff..44dcad8 100644
--- a/game.py
+++ b/game.py
@@ -33,9 +33,9 @@ class Game:
 
     def output(self,team):
         if team == 1:
-            return self.team_1.ia(self)
+            return self.team_1.ia.predict(self,1)
         if team == 2:
-            return self.team_2.ia(self)
+            return self.team_2.ia.predict(self,2)
 
     def input(self):
         input = []
@@ -43,8 +43,8 @@ class Game:
             input.append(self.team_1.players[i].get_pos_x())
             input.append(self.team_1.players[i].get_pos_y())
         for i in range(5):
-            input.append(self.team_1.players[i].get_pos_x())
-            input.append(self.team_1.players[i].get_pos_y())
+            input.append(self.team_2.players[i].get_pos_x())
+            input.append(self.team_2.players[i].get_pos_y())
         input.append(self.ball.get_pos_x())
         input.append(self.ball.get_pos_y())
         return input
diff --git a/ias/__init__.py b/ias/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/ias/__pycache__/__init__.cpython-37.pyc b/ias/__pycache__/__init__.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..185d59954407db9115ed14b0a678ef231514fb4a
GIT binary patch
literal 152
zcmZ?b<>g{vU|_iXtS}BlKL!yn%*epN;K0DZP|U)>z>vZa%%I8Wx00a<B#a<_IVM}h
zgche3700+G7L{hlxTF?mm*f}3B<H83#w3=O<mV=qB<7VAL)mGiB{7+a#WC^mnR%Hd
Z@$q^EmA5!-a`RJ4b5iX<Mt=rb4*;QxC)5A{

literal 0
HcmV?d00001

diff --git a/ias/__pycache__/ia.cpython-37.pyc b/ias/__pycache__/ia.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..3216aa425a1e9073ef7ffa850512f172c6f53510
GIT binary patch
literal 567
zcmZ?b<>g{vU|<mbTo|{Mfq~&Mhy%mS3=9ko3=9m#LJSNH?hGjmDU2-)DU8ibQ4A?e
z!3>(r$uN~5nhB;_hJk@0l_82Tg&~S5g)xPxg&~SLg*k<#g&~S1g*BK#lkFChr(-fB
zND~7C1BeFcbq3iaz`($e!dSx)4<Q*-7=jrznfz`sXfoYm$xF;ljbckIEy>6)(qz2F
zQk<HTwvwTUm4Sibm$kE1OlWaxQE`l0Vo_;!j7w^9c1eCgOmcooYD{8jNq%l(Nn&0}
zF_fKFS`w3)SR9j?s8>*Viz7ZhGcU6wJ|5(bViu6Y7}*%BxIG>9U^2;|zyL{rXl@1u
z2C#Fbz|Ku!#DwYGV28g1`3~$tP39ty!M9k_6LV8<v6Q4H=7Pl`1RDbb!!7oLqSTbk
z<PwmFia}0cV65Wubku_i`)RU*TnY+>`1o5~@$tF&DWy57@$t8K;^PZT6LTOkMeGa=
y3`HO(LW~BP24R6LDFQhNgu&kAVB}y1i}-0Wf@z3CR4unSY#=t-f%JU_1p)wv@pLc%

literal 0
HcmV?d00001

diff --git a/ias/__pycache__/ia_0000001.cpython-37.pyc b/ias/__pycache__/ia_0000001.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..e02aa5a2def2e8e1079fdb021a4b0ed2bd45f74a
GIT binary patch
literal 960
zcmZ?b<>g{vU|{I{Q5bifiGkrUhy%kc3=9ko3=9m#It&a9DGVu$ISjdsQH+crHd78$
zE^`z!BZE6b3Udle3quM^Dq}Nq6iW(gFoP!BOOP3wjJKFP9W@zmu_l%z<{2e}#9){S
zX0{9i14Al96k`fQ6jKUg3R4S16f?v`m|3@2b1UOB6O$RCdO<WZ0|SFI$Z1jx3=Aa<
z3m9t{7J?kcSi=y{l)_ZQ5YL>#5X_*->{rE~mY<W8U#?J+k*biCn3EI5nwD5pnytxF
z1aiYIj`;Y@yv&mL_**P_iMgq_*b+-iGV+Tw8E>%^r{<)sWGLcfU|{&=>}(YiTAW%`
z9ODMk9pjQ(oL!P%5R;srk{Xj(T9Tg&@?%Lcl$};u5|f!&9Fv(CZvX~{dIgn5tPBhc
zpg=8V19^p!i;<17iVy5LJ(w$!K|TY?f}#ba7VOJO3=9nE47JP^btMcbjLnQL46#ME
zEHz9iOxa9D8a0erj9E-IERqbhta&0eOexISOhq;|j9JVu(Hh1qmRhzNwgs#U8ERNT
zqy$4PdkxzHHZY%UA%g@%Ek_A^4Mz=oGgB>R4f6ty6eduJf><@2AXXt?I0J|W6Axz4
zWbu0m^3qFCjJyPerY7et)}q9`^we8yC8>$I@rJk93vv=GQ;UkB0!Fu3Kyh%3Gd;B=
zz97Fiz5>ClECTuc7F%LLL26!#CRY&$0|Ub?mUK|8uz-xa#h7!8G4mE1#K<Bc1_n@?
zsfc1qsf=Py%u5Hy6odeU-YxcmqSTbk<PuN>7K73m10xF~A0r1C^Dwe82`~yUaWQc*
z@-cBSRq;Y10;<PPlNFRSKuID#{uWn!d~SY9X-;Z<{4JjN_`=e}9Ec1!N{gf!7$C_6
zVmZjZB9IG;KoJP?R56Ib!N|c176F;fmYG<rmzfAjgDkm;B^hAfgXNJ-fg5#;!v^94
OJ5XSQ&EsL@VFUnHkKV-q

literal 0
HcmV?d00001

diff --git a/ias/__pycache__/ia_1900251.cpython-37.pyc b/ias/__pycache__/ia_1900251.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..f59562ac17635910b207210e89fd8ccbd5c6708d
GIT binary patch
literal 909
zcmZ?b<>g{vU|>jkTNua6#K7<v#DQTJ1_lNP1_p*=1qKF&6owSW9EM!RC`LvGcZL+E
z6y_F&6y{XMX67iS6qaBHP1ctneVUB7m^>YmK};BCf*GU2z`&5o5XG3n5XF?jn8MV;
z5XGFroWjz=5XF+hn!?t?5XG9p9?YQ0af>y#GCnggnGtFRh-PMBU~q=Hri5VuV-3SX
zMn;Ad#u|orrWB?chIr-_<{E~0mK26y22B>fD(>Qf)Z~()(p-h2oG8|`#G=yd%nU{b
z22Iu?kdtn4#K&jmWtPOp-(ty2%uT(;mRMSnkzaI6peQjVGchMVC9^EEI5R)5Sd;M<
zOL1yW+De8ZP6h^sU(U`}F`>n&Ma400AVXtZQj4=o@(W^;^HWk|5=%?+a}!Gv^Gb@L
z?6lI7n9RiDn9Rg@LrVh#BU3}Yg32OL;DT^52gr|%T#RgtY>ZWWV1MhuT$T*-G)SI}
zfq?;}8XN!y3=9nE47JP^Y9$Oc3|WlLj4lkZ616NfEFhjVLoI6!^8%(6Mo{n+3WPJ%
zFb6YeGWkWZrRL?O=2mJl-(oFF%u7!#VrO7rxW$%OP>`CJqRCbSa>*^0bZ}S{<Rn(6
z7Tw~2h2bs6%qZr>ymW8~KnPI6DdJ~fU;r_SK?DOM3!?xd7ZV@cBQWjBpb!Un1VnSg
zVp0l}t{6c{Aq7Mt;dJg`22Ezam!OD$`Tzg_|6nUMnZRx=;$>ifL<Ly12xRpw_JX3+
zl+5H3Ay5(l*}}kB#R~~dsEnT`8z{~}aUCCjiz_}pH$SB`CpA9)7EgS9VQFFxL<Sr)
zV1E?}quK+Ce6VFjplAW%Vo<zrFmkYQaDc`9G?{O)WhNHuWhR2t7+4VENU&xw0d_8j
Q4a9akkPnMN?&V<u0BW<wBme*a

literal 0
HcmV?d00001

diff --git a/ias/ia.py b/ias/ia.py
new file mode 100644
index 0000000..e125213
--- /dev/null
+++ b/ias/ia.py
@@ -0,0 +1,7 @@
+class IA:
+    def __init__(self):
+        self.name = ''
+        self.author = ''
+    def predict(self,game,team):
+        return [1,1,1,1,1,1,1,1,1,1,1] 
+    
\ No newline at end of file
diff --git a/ias/ia_0000001.py b/ias/ia_0000001.py
new file mode 100644
index 0000000..4ac4d49
--- /dev/null
+++ b/ias/ia_0000001.py
@@ -0,0 +1,28 @@
+from ias.ia import IA
+from math import atan2
+class my_ia(IA):
+    def __init__(self):
+        IA.__init__(self)
+        self.name = 'follow the ball'
+        self.author = 'faruk'
+            
+    def predict(self,game,team):
+        l = []
+        for i in range(5):
+            if team == 1:
+                player = game.team_1.players[i]
+            elif team == 2:
+                player = game.team_2.players[i]
+            ball = game.ball
+
+            dx = ball.get_pos_x() - player.get_pos_x()
+            dy = ball.get_pos_y() - player.get_pos_y()
+
+            ang = atan2(dy,dx)
+            
+            l.append(1)
+            l.append(ang)
+       
+        l.append(1)
+
+        return l
diff --git a/ias/ia_1900251.py b/ias/ia_1900251.py
new file mode 100644
index 0000000..758faba
--- /dev/null
+++ b/ias/ia_1900251.py
@@ -0,0 +1,19 @@
+from ias.ia import IA
+
+class my_ia(IA):
+    def __init__(self):
+        IA.__init__(self)
+        self.name = 'spectrum rl'
+        self.author = 'faruk'
+        self.radial_divisions = 360
+
+    def spectrum(self,game,player):
+        spectrum = []
+        for i in range(self.radial_divisions):
+            ang = i/self.radial_divisions
+            #...
+            spectrum.append('ennemy')
+        return spectrum
+            
+    def predict(self,game,team):
+        return [1,1,-1,1,1,1,1,1,1,1,1]
diff --git a/automafut_1.py b/online_example.py
similarity index 52%
rename from automafut_1.py
rename to online_example.py
index d84b8a1..6645fea 100644
--- a/automafut_1.py
+++ b/online_example.py
@@ -1,10 +1,9 @@
 from online_game import OnlineGame
-
-def naive_ia(game):
-    return [1,1,1,1,1,1,1,1,1,1,1]
+from ias.ia_0000001 import my_ia
 
 game = OnlineGame('127.0.0.1',12345) # Server's address
 game.connect()
-game.set_ia(game.team,naive_ia)
+game.set_ia(game.team,my_ia())
+
+game.play()
 
-game.play()
\ No newline at end of file
diff --git a/online_game.py b/online_game.py
index 86d7463..1c20d46 100644
--- a/online_game.py
+++ b/online_game.py
@@ -12,6 +12,7 @@ class OnlineGame(Game):
         self.port = port 
         self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
         self.team = 1
+        self.connected = False
     
     def send_message(self,d):
         try:
@@ -22,12 +23,14 @@ class OnlineGame(Game):
             return st
         except socket.error as err: 
             print ("socket creation failed with error",err) 
+            self.connected = False
             return None
 
     def connect(self):
         self.sock.connect((self.server_ip, self.port)) 
         d = {'msg_type':'[GET] Connection Request'}
         self.team = int(self.send_message(d))
+        self.connected = True
         print('Connected as team '+str(self.team))
 
     def get_input(self):
@@ -46,9 +49,11 @@ class OnlineGame(Game):
         self.send_message(d)
     
     def play(self):
-        while(True):
+        print('Playing ...')
+        while(self.connected):
             self.get_input()
             self.send_output()
+        print('Finished.')
 
 
         
diff --git a/stadium/game.pde b/stadium/game.pde
index fa7b106..e5c6227 100644
--- a/stadium/game.pde
+++ b/stadium/game.pde
@@ -4,30 +4,23 @@ class Game {
   Team team_2;
   Ball ball;
   Game() {
-    this.team_1 = new Team();
-    this.team_2 = new Team();
+    this.team_1 = new Team(1);
+    this.team_2 = new Team(2);
     this.ball = new Ball();
   }
-  void keep_distance(Player player_1, boolean inverted_1, Player player_2, boolean inverted_2) {
-    int s1 = 1;
-    int s2 = 1;
-    if (inverted_1){
-       s1 = -1; 
-    }
-    if (inverted_2){
-       s2 = -1; 
-    }
-    float xm = s1*player_1.get_pos_x()/2.0 + s2*player_2.get_pos_x()/2.0;
+  void keep_distance(Player player_1, Player player_2) {
+    
+    float xm = player_1.get_pos_x()/2.0 + player_2.get_pos_x()/2.0;
     float ym = player_1.get_pos_y()/2.0 + player_2.get_pos_y()/2.0;
-    float dx = s1*player_1.get_pos_x() - xm;
+    float dx = player_1.get_pos_x() - xm;
     float dy = player_1.get_pos_y() - ym;
     float  n = sqrt(pow(dx, 2)+pow(dy, 2));
     
     if (n < 6) {
       dx *= 6/n;
       dy *= 6/n;
-      player_1.set_position(s1*(xm+dx), ym+dy);
-      player_2.set_position(s2*(xm-dx), ym-dy);
+      player_1.set_position(xm+dx, ym+dy);
+      player_2.set_position(xm-dx, ym-dy);
     }
   }
   void verify_colision() {
@@ -39,7 +32,7 @@ class Game {
     for (int i=0; i<10; i++) {
       for (int j=0; j<10; j++) {
         if (i != j) {
-          keep_distance(players[i], i>=5, players[j],j>=5);
+          keep_distance(players[i], players[j]);
         }
       }
     }
@@ -61,8 +54,8 @@ class Game {
     for (int i=0; i<5; i++) {
       input[2*i] = this.team_1.players[i].get_pos_x();
       input[2*i+1] = this.team_1.players[i].get_pos_y();
-      input[10+2*i] = this.team_1.players[i].get_pos_x();
-      input[10+2*i+1] = this.team_1.players[i].get_pos_y();
+      input[10+2*i] = this.team_2.players[i].get_pos_x();
+      input[10+2*i+1] = this.team_2.players[i].get_pos_y();
     }
     input[20] = this.ball.get_pos_x();
     input[21] = this.ball.get_pos_y();
@@ -76,10 +69,7 @@ class Game {
   }
   void show() {
     this.team_1.show();
-    pushMatrix();
-    scale(-1, 1);
     this.team_2.show();
-    popMatrix();
     this.ball.show();
   }
 }
diff --git a/stadium/player.pde b/stadium/player.pde
index 571e6ae..88c9cbc 100644
--- a/stadium/player.pde
+++ b/stadium/player.pde
@@ -29,6 +29,9 @@ class Player {
     this.pos_x = pos_x;
     this.pos_y = pos_y;
   }
+  void set_angle(float angle){
+     this.angle = angle; 
+  }
   float get_pos_x() {
     return this.pos_x;
   }
diff --git a/stadium/team.pde b/stadium/team.pde
index 5d4ed71..5d7cea5 100644
--- a/stadium/team.pde
+++ b/stadium/team.pde
@@ -1,14 +1,17 @@
 class Team {
-
+  
+  int team = 1;
   Player[] players = new Player[5];
   int score = 0;
+ 
 
-  Team() {
+  Team(int team) {
+    this.team = team;
     this.players[0] = new Player(true);
     for (int i = 1; i<5; i++) {
       this.players[i] = new Player(false);
     }
-    this.initial_position();
+    this.initialize_players();
     this.set_color(color(random(255), random(255), random(255)));
   }
   void refresh_team(float[] output) {
@@ -17,12 +20,21 @@ class Team {
       this.players[i].set_direction(output[i*2+1]);
     }
   }
-  void initial_position() {
-    this.players[0].set_position(-80, 0);
-    this.players[1].set_position(-50, -30);
-    this.players[2].set_position(-50, 30);
-    this.players[3].set_position(-20, -20);
-    this.players[4].set_position(-20, 20);
+  void initialize_players() {
+    int s = 1;
+    if(this.team == 2){
+       s = -1; 
+    }
+    this.players[0].set_position(-80*s, 0);
+    this.players[0].set_angle((PI-(s*PI))/2.0);
+    this.players[1].set_position(-50*s, -30);
+    this.players[1].set_angle((PI-(s*PI))/2.0);
+    this.players[2].set_position(-50*s, 30);
+    this.players[2].set_angle((PI-(s*PI))/2.0);
+    this.players[3].set_position(-20*s, -20);
+    this.players[3].set_angle((PI-(s*PI))/2.0);
+    this.players[4].set_position(-20*s, 20);
+    this.players[4].set_angle((PI-(s*PI))/2.0);
   }
   int insert_names(String[] names) {
     for (int i = 0; i<5; i++) {
diff --git a/team.py b/team.py
index d6e795c..c065107 100644
--- a/team.py
+++ b/team.py
@@ -1,9 +1,11 @@
 from player import Player
+from ias.ia import IA
+
 class Team:
 
     def __init__(self):
         self.players = []
-        self.ia = lambda x: None
+        self.ia = IA()
         self.players.append(Player(True))
         for i in range(1,5):
             self.players.append(Player(False))
-- 
GitLab