示例#1
0
    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)
示例#2
0
    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
示例#3
0
    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)
示例#4
0
    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)
示例#5
0
    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