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