diff --git a/__pycache__/game.cpython-37.pyc b/__pycache__/game.cpython-37.pyc index 5b8432af0d8c5acac0f831247a37219ab050868e..fedd753e2674a8642006a37278bf45f5f8625da6 100644 Binary files a/__pycache__/game.cpython-37.pyc and b/__pycache__/game.cpython-37.pyc differ diff --git a/__pycache__/online_game.cpython-37.pyc b/__pycache__/online_game.cpython-37.pyc index 7d74433ffb4345c231cf44f2afa9be4cc30a94a1..34f52804aa7f095fa97db4b2be76f81ee3868e27 100644 Binary files a/__pycache__/online_game.cpython-37.pyc and b/__pycache__/online_game.cpython-37.pyc differ diff --git a/__pycache__/player.cpython-37.pyc b/__pycache__/player.cpython-37.pyc index 1f9ad5ed24cfe02864f5c9666417d01e2f757f0a..831042e94b4d45bce0e16f983988312040f3c0a4 100644 Binary files a/__pycache__/player.cpython-37.pyc and b/__pycache__/player.cpython-37.pyc differ diff --git a/__pycache__/team.cpython-37.pyc b/__pycache__/team.cpython-37.pyc index 262ff0e70bc7906aed32675318ebda02b1e273fc..112d1f5b1a008c9967e728deb2e09065d591beae 100644 Binary files a/__pycache__/team.cpython-37.pyc and b/__pycache__/team.cpython-37.pyc differ diff --git a/game.py b/game.py index 44dcad8e7ea42a1e98f34a5b7af09ef01b3861fe..7c548e59d26cd487e02c58257d0714810b1ca7e0 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 Binary files a/ias/__pycache__/ia.cpython-37.pyc and b/ias/__pycache__/ia.cpython-37.pyc differ diff --git a/ias/__pycache__/ia_0000001.cpython-37.pyc b/ias/__pycache__/ia_0000001.cpython-37.pyc index b62a8cd8bcd5fa43633b386fde4069f845336e53..581233eb6deea61447149dda820d52908a2c79f6 100644 Binary files a/ias/__pycache__/ia_0000001.cpython-37.pyc and b/ias/__pycache__/ia_0000001.cpython-37.pyc differ diff --git a/ias/ia.py b/ias/ia.py index e125213ce33fcc72bb217fbecabd9d2b3f7f2326..6a7ece1941aee162d9a70c74a7dcc7909edc4d37 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 4ac4d4909f0382937029bf319a009f3822c28495..8cd2775ea90049848cfc361bdadbc2570570bd31 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 1c20d468b6725c1e28a184283b5a77454a9ea49f..996cb4d0d18b144416de41b0a89464892c76d477 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 b912b53499e18e68c160b72ac52be2e6215bc18b..93114eb0accd89e537cf9edd79b08f5c4261b6a5 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 4775bb5ab87067ecd3414a72a17d6925d91a83a0..166c0cf9f066704bb686385adf51100cec5fdc7e 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 aa3d1474869180a6efb92f5147197de8cb2a3fb9..766cc673715cc8e220607f86dd814c1a49d7e2ab 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 fad6d174989953bb538173f843af73862d829737..cf2628c5b4cd2971a1916e4e30ae1fcc902fa02b 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 f23305f592bae432360a020525c91e8284315e85..7c6f15f1decde55cc13b92b843dcb7193f4a3200 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 73fbfb594d5132c07f0fe2be2eea30f5a93f5359..455812bc473deff396f62e0a8d0c4bf4928c166b 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 c0651075c2da7f4e2e08adcd28e7ef2f910b8f3b..e26c2ab84c8b7685230564338143d9dab38a31d6 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