def test_play_step(self): test_start = (""" ######## # 0 ..# #.. 1 # ######## """) number_bots = 2 teams = [ SimpleTeam(TestPlayer('>>>>')), SimpleTeam(TestPlayer('<<<<')) ] gm = GameMaster(test_start, teams, number_bots, 4) gm.set_initial() gm.play_round() self.assertEqual(gm.universe.bots[0].current_pos, (3, 1)) self.assertEqual(gm.universe.bots[1].current_pos, (4, 2)) self.assertEqual(gm.game_state["round_index"], 0) self.assertTrue(gm.game_state["bot_id"] is None) self.assertFalse(gm.game_state["finished"]) gm.play_step() self.assertEqual(gm.universe.bots[0].current_pos, (4, 1)) self.assertEqual(gm.universe.bots[1].current_pos, (4, 2)) self.assertEqual(gm.game_state["round_index"], 1) self.assertEqual(gm.game_state["bot_id"], 0) self.assertEqual(gm.game_state["finished"], False) gm.play_step() self.assertEqual(gm.universe.bots[0].current_pos, (4, 1)) self.assertEqual(gm.universe.bots[1].current_pos, (3, 2)) self.assertEqual(gm.game_state["round_index"], 1) self.assertEqual(gm.game_state["bot_id"], 1) self.assertEqual(gm.game_state["finished"], False) gm.play_step() self.assertEqual(gm.universe.bots[0].current_pos, (5, 1)) self.assertEqual(gm.universe.bots[1].current_pos, (3, 2)) self.assertEqual(gm.game_state["round_index"], 2) self.assertEqual(gm.game_state["bot_id"], 0) self.assertEqual(gm.game_state["finished"], False) gm.play_step() self.assertEqual(gm.universe.bots[0].current_pos, (5, 1)) self.assertEqual(gm.universe.bots[1].current_pos, (2, 2)) self.assertEqual(gm.game_state["round_index"], 2) self.assertEqual(gm.game_state["bot_id"], 1) self.assertEqual(gm.game_state["finished"], False) gm.play_round() # first call tries to finish current round (which already is finished) # so nothing happens self.assertEqual(gm.universe.bots[0].current_pos, (5, 1)) self.assertEqual(gm.universe.bots[1].current_pos, (2, 2)) self.assertEqual(gm.game_state["round_index"], 2) self.assertTrue(gm.game_state["bot_id"] is None) self.assertEqual(gm.game_state["finished"], False) self.assertEqual(gm.game_state["team_wins"], None) self.assertEqual(gm.game_state["game_draw"], None) gm.play_round() # second call works self.assertEqual(gm.universe.bots[0].current_pos, (6, 1)) self.assertEqual(gm.universe.bots[1].current_pos, (1, 2)) self.assertEqual(gm.game_state["round_index"], 3) self.assertTrue(gm.game_state["bot_id"] is None) self.assertEqual(gm.game_state["finished"], True) self.assertEqual(gm.game_state["team_wins"], None) self.assertEqual(gm.game_state["game_draw"], True) # Game finished because all food was eaten # team 0 finished first but the round was played regularly to the end # (hence round_index == 3 and bot_id is None) # nothing happens anymore gm.play_round() self.assertEqual(gm.universe.bots[0].current_pos, (6, 1)) self.assertEqual(gm.universe.bots[1].current_pos, (1, 2)) self.assertEqual(gm.game_state["round_index"], 3) self.assertTrue(gm.game_state["bot_id"] is None) self.assertEqual(gm.game_state["finished"], True) self.assertEqual(gm.game_state["team_wins"], None) self.assertEqual(gm.game_state["game_draw"], True) # nothing happens anymore gm.play_round() self.assertEqual(gm.universe.bots[0].current_pos, (6, 1)) self.assertEqual(gm.universe.bots[1].current_pos, (1, 2)) self.assertEqual(gm.game_state["round_index"], 3) self.assertTrue(gm.game_state["bot_id"] is None) self.assertEqual(gm.game_state["finished"], True) self.assertEqual(gm.game_state["team_wins"], None) self.assertEqual(gm.game_state["game_draw"], True)
def test_play_step(self): test_start = ( """ ######## # 0 ..# #.. 1 # ######## """) number_bots = 2 teams = [ SimpleTeam(SteppingPlayer('>>>>')), SimpleTeam(SteppingPlayer('<<<<')) ] gm = GameMaster(test_start, teams, number_bots, 4) gm.set_initial() gm.play_round() assert gm.universe.bots[0].current_pos == (3,1) assert gm.universe.bots[1].current_pos == (4,2) assert gm.game_state["round_index"] == 0 assert gm.game_state["bot_id"] is None assert not gm.game_state["finished"] gm.play_step() assert gm.universe.bots[0].current_pos == (4,1) assert gm.universe.bots[1].current_pos == (4,2) assert gm.game_state["round_index"] == 1 assert gm.game_state["bot_id"] == 0 assert gm.game_state["finished"] == False gm.play_step() assert gm.universe.bots[0].current_pos == (4,1) assert gm.universe.bots[1].current_pos == (3,2) assert gm.game_state["round_index"] == 1 assert gm.game_state["bot_id"] == 1 assert gm.game_state["finished"] == False gm.play_step() assert gm.universe.bots[0].current_pos == (5,1) assert gm.universe.bots[1].current_pos == (3,2) assert gm.game_state["round_index"] == 2 assert gm.game_state["bot_id"] == 0 assert gm.game_state["finished"] == False gm.play_step() assert gm.universe.bots[0].current_pos == (5,1) assert gm.universe.bots[1].current_pos == (2,2) assert gm.game_state["round_index"] == 2 assert gm.game_state["bot_id"] == 1 assert gm.game_state["finished"] == False gm.play_round() # first call tries to finish current round (which already is finished) # so nothing happens assert gm.universe.bots[0].current_pos == (5,1) assert gm.universe.bots[1].current_pos == (2,2) assert gm.game_state["round_index"] == 2 assert gm.game_state["bot_id"] is None assert gm.game_state["finished"] == False assert gm.game_state["team_wins"] == None assert gm.game_state["game_draw"] == None gm.play_round() # second call works assert gm.universe.bots[0].current_pos == (6,1) assert gm.universe.bots[1].current_pos == (2,2) assert gm.game_state["round_index"] == 3 assert gm.game_state["bot_id"] == 0 assert gm.game_state["finished"] == True assert gm.game_state["team_wins"] == 0 assert gm.game_state["game_draw"] == None # Game finished immediately once all food for one group was eaten # team 0 finished first and the round was NOT played regularly to the end # (hence round_index == 3 and bot_id == 0) # nothing happens anymore gm.play_round() assert gm.universe.bots[0].current_pos == (6,1) assert gm.universe.bots[1].current_pos == (2,2) assert gm.game_state["round_index"] == 3 assert gm.game_state["bot_id"] == 0 assert gm.game_state["finished"] == True assert gm.game_state["team_wins"] == 0 assert gm.game_state["game_draw"] == None # nothing happens anymore gm.play_round() assert gm.universe.bots[0].current_pos == (6,1) assert gm.universe.bots[1].current_pos == (2,2) assert gm.game_state["round_index"] == 3 assert gm.game_state["bot_id"] == 0 assert gm.game_state["finished"] == True assert gm.game_state["team_wins"] == 0 assert gm.game_state["game_draw"] == None
def test_play_step(self): test_start = """ ###### #0 ..# #.. 1# ###### """ number_bots = 2 gm = GameMaster(test_start, number_bots, 3) gm.register_team(SimpleTeam(TestPlayer(">>>"))) gm.register_team(SimpleTeam(TestPlayer("<<<"))) gm.set_initial() gm.play_round() self.assertEqual(gm.universe.bots[0].current_pos, (2, 1)) self.assertEqual(gm.universe.bots[1].current_pos, (3, 2)) self.assertEqual(gm.game_state["round_index"], 0) self.assertEqual(gm.game_state["bot_id"], 1) self.assertEqual(gm.game_state["finished"], False) gm.play_step() self.assertEqual(gm.universe.bots[0].current_pos, (3, 1)) self.assertEqual(gm.universe.bots[1].current_pos, (3, 2)) self.assertEqual(gm.game_state["round_index"], 1) self.assertEqual(gm.game_state["bot_id"], 0) self.assertEqual(gm.game_state["finished"], False) gm.play_step() self.assertEqual(gm.universe.bots[0].current_pos, (3, 1)) self.assertEqual(gm.universe.bots[1].current_pos, (2, 2)) self.assertEqual(gm.game_state["round_index"], 1) self.assertEqual(gm.game_state["bot_id"], 1) self.assertEqual(gm.game_state["finished"], False) gm.play_round() # first call tries to finish current round (which already is finished) # so nothing happens self.assertEqual(gm.universe.bots[0].current_pos, (3, 1)) self.assertEqual(gm.universe.bots[1].current_pos, (2, 2)) self.assertEqual(gm.game_state["round_index"], 1) self.assertEqual(gm.game_state["bot_id"], 1) self.assertEqual(gm.game_state["finished"], False) gm.play_round() # second call works self.assertEqual(gm.universe.bots[0].current_pos, (4, 1)) self.assertEqual(gm.universe.bots[1].current_pos, (1, 2)) self.assertEqual(gm.game_state["round_index"], 2) self.assertEqual(gm.game_state["bot_id"], 1) self.assertEqual(gm.game_state["finished"], True) # Game finished because all food was eaten # (hence round_index == 2 and bot_id == 1) # nothing happens anymore gm.play_round() self.assertEqual(gm.universe.bots[0].current_pos, (4, 1)) self.assertEqual(gm.universe.bots[1].current_pos, (1, 2)) self.assertEqual(gm.game_state["round_index"], 2) self.assertEqual(gm.game_state["bot_id"], 1) self.assertEqual(gm.game_state["finished"], True) # nothing happens anymore gm.play_round() self.assertEqual(gm.universe.bots[0].current_pos, (4, 1)) self.assertEqual(gm.universe.bots[1].current_pos, (1, 2)) self.assertEqual(gm.game_state["round_index"], 2) self.assertEqual(gm.game_state["bot_id"], 1) self.assertEqual(gm.game_state["finished"], True)
def test_play_step(self): test_start = ( """ ######## # 0 ..# #.. 1 # ######## """) number_bots = 2 teams = [ SimpleTeam(TestPlayer('>>>>')), SimpleTeam(TestPlayer('<<<<')) ] gm = GameMaster(test_start, teams, number_bots, 4) gm.set_initial() gm.play_round() self.assertEqual(gm.universe.bots[0].current_pos, (3,1)) self.assertEqual(gm.universe.bots[1].current_pos, (4,2)) self.assertEqual(gm.game_state["round_index"], 0) self.assertTrue(gm.game_state["bot_id"] is None) self.assertFalse(gm.game_state["finished"]) gm.play_step() self.assertEqual(gm.universe.bots[0].current_pos, (4,1)) self.assertEqual(gm.universe.bots[1].current_pos, (4,2)) self.assertEqual(gm.game_state["round_index"], 1) self.assertEqual(gm.game_state["bot_id"], 0) self.assertEqual(gm.game_state["finished"], False) gm.play_step() self.assertEqual(gm.universe.bots[0].current_pos, (4,1)) self.assertEqual(gm.universe.bots[1].current_pos, (3,2)) self.assertEqual(gm.game_state["round_index"], 1) self.assertEqual(gm.game_state["bot_id"], 1) self.assertEqual(gm.game_state["finished"], False) gm.play_step() self.assertEqual(gm.universe.bots[0].current_pos, (5,1)) self.assertEqual(gm.universe.bots[1].current_pos, (3,2)) self.assertEqual(gm.game_state["round_index"], 2) self.assertEqual(gm.game_state["bot_id"], 0) self.assertEqual(gm.game_state["finished"], False) gm.play_step() self.assertEqual(gm.universe.bots[0].current_pos, (5,1)) self.assertEqual(gm.universe.bots[1].current_pos, (2,2)) self.assertEqual(gm.game_state["round_index"], 2) self.assertEqual(gm.game_state["bot_id"], 1) self.assertEqual(gm.game_state["finished"], False) gm.play_round() # first call tries to finish current round (which already is finished) # so nothing happens self.assertEqual(gm.universe.bots[0].current_pos, (5,1)) self.assertEqual(gm.universe.bots[1].current_pos, (2,2)) self.assertEqual(gm.game_state["round_index"], 2) self.assertTrue(gm.game_state["bot_id"] is None) self.assertEqual(gm.game_state["finished"], False) self.assertEqual(gm.game_state["team_wins"], None) self.assertEqual(gm.game_state["game_draw"], None) gm.play_round() # second call works self.assertEqual(gm.universe.bots[0].current_pos, (6,1)) self.assertEqual(gm.universe.bots[1].current_pos, (1,2)) self.assertEqual(gm.game_state["round_index"], 3) self.assertTrue(gm.game_state["bot_id"] is None) self.assertEqual(gm.game_state["finished"], True) self.assertEqual(gm.game_state["team_wins"], None) self.assertEqual(gm.game_state["game_draw"], True) # Game finished because all food was eaten # team 0 finished first but the round was played regularly to the end # (hence round_index == 3 and bot_id is None) # nothing happens anymore gm.play_round() self.assertEqual(gm.universe.bots[0].current_pos, (6,1)) self.assertEqual(gm.universe.bots[1].current_pos, (1,2)) self.assertEqual(gm.game_state["round_index"], 3) self.assertTrue(gm.game_state["bot_id"] is None) self.assertEqual(gm.game_state["finished"], True) self.assertEqual(gm.game_state["team_wins"], None) self.assertEqual(gm.game_state["game_draw"], True) # nothing happens anymore gm.play_round() self.assertEqual(gm.universe.bots[0].current_pos, (6,1)) self.assertEqual(gm.universe.bots[1].current_pos, (1,2)) self.assertEqual(gm.game_state["round_index"], 3) self.assertTrue(gm.game_state["bot_id"] is None) self.assertEqual(gm.game_state["finished"], True) self.assertEqual(gm.game_state["team_wins"], None) self.assertEqual(gm.game_state["game_draw"], True)
def test_play_step(self): test_start = (""" ######## # 0 ..# #.. 1 # ######## """) number_bots = 2 teams = [ SimpleTeam(SteppingPlayer('>>>>')), SimpleTeam(SteppingPlayer('<<<<')) ] gm = GameMaster(test_start, teams, number_bots, 4) gm.set_initial() gm.play_round() assert gm.universe.bots[0].current_pos == (3, 1) assert gm.universe.bots[1].current_pos == (4, 2) assert gm.game_state["round_index"] == 0 assert gm.game_state["bot_id"] is None assert not gm.game_state["finished"] gm.play_step() assert gm.universe.bots[0].current_pos == (4, 1) assert gm.universe.bots[1].current_pos == (4, 2) assert gm.game_state["round_index"] == 1 assert gm.game_state["bot_id"] == 0 assert gm.game_state["finished"] == False gm.play_step() assert gm.universe.bots[0].current_pos == (4, 1) assert gm.universe.bots[1].current_pos == (3, 2) assert gm.game_state["round_index"] == 1 assert gm.game_state["bot_id"] == 1 assert gm.game_state["finished"] == False gm.play_step() assert gm.universe.bots[0].current_pos == (5, 1) assert gm.universe.bots[1].current_pos == (3, 2) assert gm.game_state["round_index"] == 2 assert gm.game_state["bot_id"] == 0 assert gm.game_state["finished"] == False gm.play_step() assert gm.universe.bots[0].current_pos == (5, 1) assert gm.universe.bots[1].current_pos == (2, 2) assert gm.game_state["round_index"] == 2 assert gm.game_state["bot_id"] == 1 assert gm.game_state["finished"] == False gm.play_round() # first call tries to finish current round (which already is finished) # so nothing happens assert gm.universe.bots[0].current_pos == (5, 1) assert gm.universe.bots[1].current_pos == (2, 2) assert gm.game_state["round_index"] == 2 assert gm.game_state["bot_id"] is None assert gm.game_state["finished"] == False assert gm.game_state["team_wins"] == None assert gm.game_state["game_draw"] == None gm.play_round() # second call works assert gm.universe.bots[0].current_pos == (6, 1) assert gm.universe.bots[1].current_pos == (2, 2) assert gm.game_state["round_index"] == 3 assert gm.game_state["bot_id"] == 0 assert gm.game_state["finished"] == True assert gm.game_state["team_wins"] == 0 assert gm.game_state["game_draw"] == None # Game finished immediately once all food for one group was eaten # team 0 finished first and the round was NOT played regularly to the end # (hence round_index == 3 and bot_id == 0) # nothing happens anymore gm.play_round() assert gm.universe.bots[0].current_pos == (6, 1) assert gm.universe.bots[1].current_pos == (2, 2) assert gm.game_state["round_index"] == 3 assert gm.game_state["bot_id"] == 0 assert gm.game_state["finished"] == True assert gm.game_state["team_wins"] == 0 assert gm.game_state["game_draw"] == None # nothing happens anymore gm.play_round() assert gm.universe.bots[0].current_pos == (6, 1) assert gm.universe.bots[1].current_pos == (2, 2) assert gm.game_state["round_index"] == 3 assert gm.game_state["bot_id"] == 0 assert gm.game_state["finished"] == True assert gm.game_state["team_wins"] == 0 assert gm.game_state["game_draw"] == None