From 71b9104333919c2322fccfc9ee104f0c76f6aedd Mon Sep 17 00:00:00 2001 From: Faruk Hammoud <farukhammoud@gmail.com> Date: Mon, 23 Mar 2020 22:07:17 +0100 Subject: [PATCH] ia now modify game's variable --- __pycache__/game.cpython-37.pyc | Bin 1902 -> 1924 bytes __pycache__/online_game.cpython-37.pyc | Bin 2426 -> 2736 bytes __pycache__/player.cpython-37.pyc | Bin 1219 -> 1602 bytes __pycache__/team.cpython-37.pyc | Bin 1476 -> 1759 bytes game.py | 7 +++--- ias/__pycache__/ia.cpython-37.pyc | Bin 567 -> 540 bytes ias/__pycache__/ia_0000001.cpython-37.pyc | Bin 960 -> 998 bytes ias/ia.py | 2 +- ias/ia_0000001.py | 10 ++++----- online_game.py | 26 +++++++++++++++++----- player.py | 12 +++++++++- stadium/ball.pde | 7 +++++- stadium/game.pde | 18 ++++++++++++++- stadium/player.pde | 1 + stadium/socket.pde | 2 +- stadium/team.pde | 4 ++-- team.py | 8 +++++++ 17 files changed, 75 insertions(+), 22 deletions(-) diff --git a/__pycache__/game.cpython-37.pyc b/__pycache__/game.cpython-37.pyc index 5b8432af0d8c5acac0f831247a37219ab050868e..fedd753e2674a8642006a37278bf45f5f8625da6 100644 GIT binary patch delta 762 zcmaFI*TT>1#LLUYz`(#TMY%F=_C(%Sj2aVvD2XuDFvPQ^Fa$GbGW)r`{Qv*|e@*tu z%8V-Fw>Wb$^RiP@;!E;18E>%^r{<)sWGLd99L(qoF^8Fh5d_&LuV%DX;$&c8&}1y) zW?*0_;(-&q3=9mnSc^*%i%NJWb1+#dfuwLLD@sjFsT7!;%;cuW0n*1@RGO#B1U52? zJtZ}#Br(1O&FmsU1_lP<$=8|8bnuwWUzS>wnN}H}oS&0foSB~|HrbLn!juhU2Om@_ zDZeNswWzp=9j7;ngc%qZBqtwZE;k43WGhZBiO)=g=wJrB@)k=;YGUp!rp!ciXNoZ} zFvw0WVezeJWT;_GVajGIGN@t5V$Nb*z*NJK!nBZykpUV9MIxZk69u`0r3hqGkp#%0 z>;*-sDVfP75c?pZQX~#i3i3F_K2T^ENir}nC^IlH6obN$fsunzfRTf-ipM=MH&w5o zhy`TGWH;8EjBJw?*p&4_{w)Hj)P#D0H8ZcEwB#0JCd5dv;b3#+KrWhG#1>G`2eOqP zL<oQgP!tpifmomrDgt>G?1&<e4kS|$MzJt3FffCh2-3yD$id0M423KlY#eMwAbCGc sR*3hQKqiA+SOn5i#KNG9lEUDo-r}&y%}*)KNws4H84WUnhmnU704)89lK=n! delta 718 zcmZqSf5*q`#LLUYz`(%p`e$KW_e9=Tj7k%KC~-0bGiWmTxoNUZ)?-xR(PX^EQk<HT zwvwTUYjP%|FE<BB2QvpF2P4Pi!;IESAigGJ5hnu!LlMX{2*J(3z;KJTxFoTtglDn> zlcf?!3YW5?)WnoZ{>jx$ZhGt>eauCrd74aMBcs?;QgccY<4YjMf=np_nO(%sz`!6h z`8|`F4oD1#$^2!hMVV=p@yYo)nZ=p;d7_g8nIlYDL3Z##rIPZCQc{bGi`W<#7_ggC zB*?(PATjwKbGbQKCtGo9NqlA^L<ck2mA6<*QWJA;F=ZyAJ5z*#fk9?+4~uVoFhdPv z3R5;ykwFbZ7IPNk0;U><6sCnt!3-&&5NGx)5&{LGFvuM&MIf7s#26SDqSy<HQd2UM zOCa_^LZwI)q!i?Fh<%_Cxy6=WT2fG2qQt<!Pz;I`21X7>0Y(nSDsK10+*CF_u=L~@ z)|-s1lg-$a^+7%^0)@9G)Dx_kc?G2<w-_@ahJuX;nOr2pz`&p}xq~gBo(E(vFNoj+ z5uivY5&*G4VN?Y2Y>_yK3(|pP3c@HB1_lOZkPAVc<zVFC;9!PA77jKJwjz+cpC&8B bgG?Z!KrSo-X(?i15JpL35K|{-u}c8}xDbD| diff --git a/__pycache__/online_game.cpython-37.pyc b/__pycache__/online_game.cpython-37.pyc index 7d74433ffb4345c231cf44f2afa9be4cc30a94a1..34f52804aa7f095fa97db4b2be76f81ee3868e27 100644 GIT binary patch delta 824 zcmew*v_X{5iI<m)fq{X+L%A|;9_L2Boh*zeCZAxDVLUSVDa!(Z8m1IpNroDRc#af? zU<OUT$=$4z)s+47ax(K$-4k<D^$JRJa`bF+@{<#DitY4lax#lclJj#5>|Tmb_GD8G zdMU=hz@W)lB*VbKaErCLASbir7Hd&rUV7>+wvyDu+<3!V>;*ZAm8nI=Q9Q+|CGiFM z#hE3U`FT)jqbQc7#GITc&YaA=?9`O_lKjbQ*tF_dK-Q`-FfbI0fE>@r!N>*1VvKx@ z8jL24VvJS%XpT%~1gT_TU|?ZjU|?lnU~mR$zrn!3kj_xcSi_LTkiwYFR1{NTQ^J_S z)XeC@5NlA&RKvJ{sfHnoIg6!+Ns?g!>q3TwjEoHRXu@m|;X;XU2AIqOc8D0*VCHP5 zqAger=0G(Vsv9N>Gq(V4E(h3LOGZY96qXWBkm1dYC7d;k&5S9mbC_$HYZw-A)i8tH z2#zl{zao%#i_{qy7>YC)7#Jo;v1=!D7jc95dZ0LAODrfz%}XiL2Z<OkFfc^%q^Fj| zm!;<9Cuf#aMsb38iFxTcsZo3&W_D(Bc6@STNpeP!AxMiThycZ|CQA`7h;0HQlqb() zmjK05aR$iDVkuDAGqNypG4e5rF-kECAXrQoaaEiFk1J4|F~j1@hJk^hgdv5onURs9 zLal}&i?K+rhG7BILIy^L8iobTH4IrSAfMNO<B5@BvLc6$0$Y(d$U!_H!WiT|_JX3+ zl+5H3NEnz+j^~gUasVX-kP-$)4lv}I+{fX?4N_lZ2GVIh`7wt*GY^NrWL3^k0K##= AHUIzs delta 559 zcmdlW`b&t<iI<m)fq{X+_D^A48v91Roh*#|CZAxDVca$ODa!)36oz01P2R~<Sto02 z_~+$h=B2tP=BDbUr<TNL<`tBd=-K4tCnx3<+v(ZlWEPhs=jRsKy%d}5$EN6{$x$T3 zz`$^ewYVTBv*Z?QQDR<tY7|>ZYGQ7@VHA5oPGV(hQE?PcacW6?L4I*&NoIZ?RN5$t zB`Gl{XYxTdt$I$lT`CL=48=kq$1-v-a)GfJBOjv%qX}b`2sXzhGlCQ|FfcGNFfgz& zFfcfSOweIqU`SysVW?rqVr&M}3z$Icg^bONDNJ*iYZ+@87BJT^E@Wh6NMT?NX3%8z zo2<m4Ey+?O%D})-#0?@0Km^EpnoLE!lQ(ck)N>c7=B32vmzETimgs}*VF6jrD92bO zhU7LRMR3=FTnTa^*mWR-OBhlZn;97yDx^T}DpIOpSirQ9fsp~^E)ZSF70yt?kirB~ z1CAhOzpBa6oDz;KMdBcL@qh@B8;T4W7#K7ei+Di-0&qeQ6fG>E2rvdY6deDI93VLP Y2&We}TxXHdWJxZ2W^N9a$<bV)04LvprT_o{ diff --git a/__pycache__/player.cpython-37.pyc b/__pycache__/player.cpython-37.pyc index 1f9ad5ed24cfe02864f5c9666417d01e2f757f0a..831042e94b4d45bce0e16f983988312040f3c0a4 100644 GIT binary patch delta 770 zcmX@id5DM4iI<m)fq{X+RH-sfk$EDY8)L}CP+OH0z7~ck&J_L>ffj}+t`xx(p%#WH z?iAr*22GJ$Yymlmm8nIO^BKi-WEdD2QW$F(;u&f{Bx4Fw4MRK=m}E|22xib^_PfRK z5@drW%fwq!Vz-#fQgbw!Zm|@n=A;#|GB7Z#WGLdC%*yD`&H+-z$Tm5W(Om_^E@ER~ zU?}2*6Ciiq;w(-riBHT+&q?K+e2_^P!JT}UNlgu;LzA%xtQ%cpI!q(a<bzD&tY9-H z=QC>gvNJF+Xfi=Gf!OF)@_?)?OU=no&Mc|qXJB9`W&*pkN*EFjddTu1XLx{2!Ql)Z zkTYP031Kk|S$^^hMh6|RX9Pf@AP6GRyaje#L4I*&NoIbY=;RP4cQue&9JX_UOfSeU zj<1lMe2~dW4P+uArIj+14>Czlc44kG0GV8bM-N|FYEfodWqeY8QA%o2vHaw>%!Z6S zljT`d>$yR0=K&GCAc7A>fWoo}6b41YAg&0A5C;(mKZ04Hh%aJfU|;~@Vvq(7CJr_Z nW+-F<(O`K$O-3+{6oXI$L>U-vaoFVMr<CTT+JTJu42nVk_h6e4 delta 538 zcmX@abC{FQiI<m)fq{X6sVFF}m}w%P8>7v{P+OK@22H++>*NB(7#J8*7;6~f8EQZz zV+vCZLp)OoLokCTv)?U-mmsa0%(qzb5_3~;ai`}e=EP^GrWT|Y-C|A5OV3HwWV*#t zoSKtX#LB?Hu#%yOW3mRLKPwwZ+vGY%cMo<328JRKw}=D80u!7J3=Fq;i&IPDQ!<NE zlS?x5^FZRoOdws1RU!d7iIu5EdMFAe2QfS7fDPjTnZpYrK$;-Nf=%QBX(-4q&IB3A zJ$WCqyBbKXCSws;ADU{;^wg60g8bt63jWD~OyZNBShUqZrV>(KDFjx&ilx>7WO@-E zJ$z-UMVV=p@k#kbDXB%pqLaf}4H-Ence1M1gQBE}8{`Q-5Wx>31VDr^h(I_M%mVqY zh>?MT0fdV|wsJ6WuyQbSuy8PQFoR|MG#SA(BsjpjzywI^Ee@O9{FKt1R6CIV&!9jC E0Am1Z^#A|> diff --git a/__pycache__/team.cpython-37.pyc b/__pycache__/team.cpython-37.pyc index 262ff0e70bc7906aed32675318ebda02b1e273fc..112d1f5b1a008c9967e728deb2e09065d591beae 100644 GIT binary patch delta 625 zcmX@YeV>=liI<m)fq{X+Ql&CZfMp_IF{97KCR@W4z7~ck&J_L>ffj}+t`xyw22G(` zEFr0hxyg(m<qQlAObiSRtPBhc&I}9;#ZeO<gvhhjFvN4DFa$GbviXI)1gU!oQs7nu zVrp_u_GPq}zQvWDnVcP;oLG{ap~-ZMr8qSw?G|I^N`@kV$+H=Kg#|#SGqN#qFbXgV zFp4m8FtSbl$>^xa$H2f)!~r5eDvH2_AOi!#Ew<v+lK9L-fyvQKwqCpp3=Eo#MPS8X zC13)qjxRm6BpzY6Fv!&)FEB7x34{ElhbljrlS#`TY#bBBI1n3REs~iayAfuJVVH?3 zKe>oWS00<&I6-z7C+8QXN>1L#6oFk$VoFLpSdGkNQ|2d<Sj;KnW?*2DpKQd^CkK}0 z#|*9_IR*v>waNEblo`1vGqI`$3xU*t0;5O-#1aJ&Ab%8zgIFK~!CH`f4)=Z$3j+fK e2p5BdIG8xNIG90jat^DW07wW)li=i4tWp4{40U<{ delta 441 zcmcc5dxV?MiI<m)fq{YH*~`MXDCUWL#f&x+n`{+>88rEBv4o^1<|Z?Oq!}0(m>3us zSQ!`?oEaDxibE!T2$5t6X3%8w3wa4r@e(BERs>>da!gKUwCC4ky2VnQnv-^mF>@tD z5&z`9jJ|?=AhQ_R7&#aP7zG$b7&#`(GC3;pGB7X{aexSZI3d8mz;KJLIJG1`Gm(FC zJ(H~(4+8^(CSws;F`7Eg^wg60;^h3IRKdxonIq(}s!2>qfv6Fg?8Nd!5{sH5ZUzPh z@yYhAeR5z~kZX%jttygcU|^7&{F+snk#jOXo2siI$i+e+LKsAdfC!K=V1-DU!N!0* zRm8%;zyQL<AP;dcad2`lO>Sq?(*mnN5FoX;IBatBQ%ZAE?LgsL4ARBJ$ioBx=MhQ8 diff --git a/game.py b/game.py index 44dcad8..7c548e5 100644 --- a/game.py +++ b/game.py @@ -8,6 +8,7 @@ class Game: self.team_2 = Team() self.ball = Ball() self.on = False + self.linked_to = -1 def start(self): self.on = True @@ -31,11 +32,11 @@ class Game: if team == 2: self.team_2.set_ia(ia) - def output(self,team): + def predict(self,team): if team == 1: - return self.team_1.ia.predict(self,1) + self.team_1.ia.predict(self,1) if team == 2: - return self.team_2.ia.predict(self,2) + self.team_2.ia.predict(self,2) def input(self): input = [] diff --git a/ias/__pycache__/ia.cpython-37.pyc b/ias/__pycache__/ia.cpython-37.pyc index 3216aa425a1e9073ef7ffa850512f172c6f53510..f96065371a06dd696407566e10c94493593aecb2 100644 GIT binary patch delta 61 zcmdnaGKYoNiI<m)fq{XcUb!-^Ya;Jn#^i~ovqcyg7#N%x7#NCK7#J8*7=jrz8T}@w RGL|rMP3C11pZt;04FH<94N?FA delta 84 zcmbQkvYmz3iI<m)fq{WR_;X?0(uur#8J#Dd&erE<U|?`&U|=YgVqjoMVZ;X0xq}%r WnfzWdGB7Yq_F^ny<et2rF%|$3juJ)y diff --git a/ias/__pycache__/ia_0000001.cpython-37.pyc b/ias/__pycache__/ia_0000001.cpython-37.pyc index b62a8cd8bcd5fa43633b386fde4069f845336e53..581233eb6deea61447149dda820d52908a2c79f6 100644 GIT binary patch delta 350 zcmX@W{*0Z^iI<m)fq{X+O{Fr9gLxyL3?pOmWNpU$dQJug1{MYe24@BahT=I43=9?1 zN*GcYn;BggV!LXYYnW1)vYCnuY8bN^vzTg_B^hd2K<ov~DNG9)85!~vYM4@(vzdwl zY8bOvkW{e1RMaqLvDUKIur6R*$WX%qA|)7V*=kr9u!HzcAWDLvmc4|dhP{TZnW>he zhGhXK#PAxH1za^8AZrS_!WmK+f*CYf{9dv$FfhDi1QARO3=EpwlLMI~`T2@dOX9OL zle6QK6HAgaCTB8fS@3|w%2IRklQT;yZ*hWniFxTcshXTc91IK$w^-5>b5n1zl%yu+ z-eSzW#a57$SeaT>Bs_U9ldhZ;D6|;)7&#bupd=3?8<PN|023Dz7vp3uW*bJC$?nXR E0Og@k=>Px# delta 312 zcmaFHet@0NiI<m)fq{X+NVX{MI@3lz8Ae9u$=Zzh^&n9e1_lOa1_p-WNem1O=?t~Z z6?G*HDU8jGE)20nwJbGEDNNZ+MH)4XS&UgsH7t@0wXAs}HB2eY*-S+?HH=xzFwq*u zES6ff8ny+j3mIxyL8JsjEqe{y0yZ$8Z6SjMLoG)MdkseodoxolXAQH(0*(}>g^Y|0 zHOvb*YB)ixLcVY?4<;VWpvmI*l9hph;Uy!8U}9ik(BzyP%_KRwg-KJ3EwP{=H7`Yz ztB8Yvf#DWQdSY(sEtZnh#N1nqIky-yZ?P5RBvz&t6$wp#%A~6x0}2I37Dhfs4lw3n dWMdLw6ky_F;$q}u;$oU?z-+@PJvo=T5&)yWMCkwk diff --git a/ias/ia.py b/ias/ia.py index e125213..6a7ece1 100644 --- a/ias/ia.py +++ b/ias/ia.py @@ -3,5 +3,5 @@ class IA: self.name = '' self.author = '' def predict(self,game,team): - return [1,1,1,1,1,1,1,1,1,1,1] + pass \ No newline at end of file diff --git a/ias/ia_0000001.py b/ias/ia_0000001.py index 4ac4d49..8cd2775 100644 --- a/ias/ia_0000001.py +++ b/ias/ia_0000001.py @@ -7,12 +7,13 @@ class my_ia(IA): self.author = 'faruk' def predict(self,game,team): - l = [] for i in range(5): if team == 1: player = game.team_1.players[i] + game.team_1.set_kick_catch(1) elif team == 2: player = game.team_2.players[i] + game.team_2.set_kick_catch(1) ball = game.ball dx = ball.get_pos_x() - player.get_pos_x() @@ -20,9 +21,6 @@ class my_ia(IA): ang = atan2(dy,dx) - l.append(1) - l.append(ang) - - l.append(1) + player.set_velocity(1) + player.set_angle(ang) - return l diff --git a/online_game.py b/online_game.py index 1c20d46..996cb4d 100644 --- a/online_game.py +++ b/online_game.py @@ -33,26 +33,40 @@ class OnlineGame(Game): self.connected = True print('Connected as team '+str(self.team)) - def get_input(self): + def pull(self): d = {'msg_type':'[GET] Game State Request'} r = self.send_message(d) if (not r is None): r = r.split(';') - input = [float(r[i]) for i in range(22)] + input = [float(r[i]) for i in range(23)] for i in range(5): self.team_1.players[i].set_position(input[2*i],input[2*i+1]) self.team_2.players[i].set_position(input[10+2*i],input[10+2*i+1]) self.ball.set_position(input[20],input[21]) + self.linked_to = input[22] - def send_output(self): - d = {'msg_type':'[POST] Refresh State','team':str(self.team),'output':str(self.output(self.team))} + def push(self): + output = [] + if self.team == 1: + for i in range(5): + output.append(self.team_1.players[i].get_velocity()) + output.append(self.team_1.players[i].get_angle()) + output.append(self.team_1.get_kick_catch()) + if self.team == 2: + for i in range(5): + output.append(self.team_2.players[i].get_velocity()) + output.append(self.team_2.players[i].get_angle()) + output.append(self.team_2.get_kick_catch()) + + d = {'msg_type':'[POST] Refresh State','team':str(self.team),'output':str(output)} self.send_message(d) def play(self): print('Playing ...') while(self.connected): - self.get_input() - self.send_output() + self.pull() + self.predict(self.team) + self.push() print('Finished.') diff --git a/player.py b/player.py index b912b53..93114eb 100644 --- a/player.py +++ b/player.py @@ -4,9 +4,19 @@ class Player: self.name = "" self.goal_keeper = goal_keeper self.angle = 0 + self.vel = 0 - def set_direction(self,angle): + def set_angle(self,angle): self.angle = angle + + def get_angle(self): + return self.angle + + def set_velocity(self,vel): + self.vel = vel + + def get_velocity(self): + return self.vel def set_position(self,pos_x, pos_y): self.pos_x = pos_x diff --git a/stadium/ball.pde b/stadium/ball.pde index 4775bb5..166c0cf 100644 --- a/stadium/ball.pde +++ b/stadium/ball.pde @@ -3,9 +3,14 @@ class Ball { float pos_y; float vel_x; float vel_y; - int linked_to = -1; + int linked_to; Ball() { + this.reset(); + } + void reset(){ + this.set_position(0,0); this.set_velocity(0,0); + this.linked_to = -1; } void set_position(float pos_x, float pos_y) { this.pos_x = pos_x; diff --git a/stadium/game.pde b/stadium/game.pde index aa3d147..766cc67 100644 --- a/stadium/game.pde +++ b/stadium/game.pde @@ -12,6 +12,20 @@ class Game { this.team_2 = new Team(2); this.ball = new Ball(); } + void verify_goal(){ + if(this.ball.get_pos_x()>100){ + this.team_1.score += 1; + this.team_1.reset(); + this.team_2.reset(); + this.ball.reset(); + } + if(this.ball.get_pos_x()<-100){ + this.team_2.score += 1; + this.team_1.reset(); + this.team_2.reset(); + this.ball.reset(); + } + } 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; @@ -54,7 +68,7 @@ class Game { } } float[] input() { - float[] input = new float[22]; + float[] input = new float[23]; 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(); @@ -63,6 +77,7 @@ class Game { } input[20] = this.ball.get_pos_x(); input[21] = this.ball.get_pos_y(); + input[22] = float(this.linked_to); return input; } void ball_mechanic(float delta_t) { @@ -130,6 +145,7 @@ class Game { this.team_2.run(delta_t); this.ball_mechanic(delta_t); this.verify_colision(); + this.verify_goal(); } void show() { this.team_1.show(); diff --git a/stadium/player.pde b/stadium/player.pde index fad6d17..cf2628c 100644 --- a/stadium/player.pde +++ b/stadium/player.pde @@ -11,6 +11,7 @@ class Player { this.goal_keeper = goal_keeper; this._color = color(0); this.angle = 0; + this.vel = 0; } void set_direction(float angle) { this.angle = angle; diff --git a/stadium/socket.pde b/stadium/socket.pde index f23305f..7c6f15f 100644 --- a/stadium/socket.pde +++ b/stadium/socket.pde @@ -58,7 +58,7 @@ class Socket { void send_input(Client c) { String s = ""; float[] input = game.input(); - for (int i = 0; i<22; i++) { + for (int i = 0; i<23; i++) { s += str(input[i])+";"; } c.write(s); diff --git a/stadium/team.pde b/stadium/team.pde index 73fbfb5..455812b 100644 --- a/stadium/team.pde +++ b/stadium/team.pde @@ -12,7 +12,7 @@ class Team { for (int i = 1; i<5; i++) { this.players[i] = new Player(false); } - this.initialize_players(); + this.reset(); this.set_color(color(random(255), random(255), random(255))); } void refresh_team(float[] output) { @@ -22,7 +22,7 @@ class Team { } this.kick_catch = output[10]; } - void initialize_players() { + void reset() { int s = 1; if (this.team == 2) { s = -1; diff --git a/team.py b/team.py index c065107..e26c2ab 100644 --- a/team.py +++ b/team.py @@ -11,9 +11,17 @@ class Team: self.players.append(Player(False)) self.initial_position() self.score = 0 + self.kick_catch = 0 def set_ia(self,ia): self.ia = ia + + def get_kick_catch(self): + return self.kick_catch + + def set_kick_catch(self,kick_catch): + self.kick_catch = kick_catch + def get_score(self): return self.score -- GitLab