Пример #1
0
    def test_craft(self):
        socket = GameSocket(None, None)
        socket.send('map1,0,0,10,4,20')
        socket.send(json.dumps({
            '1': 5,
            '2': 5,
            '3': 5,
            '4': 5,
        }))

        data = json.loads(socket.receive())
        self.assertDictEqual(
            {
                'players': [{
                    'playerId': playerId,
                    'posx': 0,
                    'posy': 0,
                    'score': 50,
                    'energy': 5,
                    'status': 0,
                    'lastAction': 5,
                    'freeCount': 0,
                } for playerId in [1, 2, 3, 4]],
                'golds': [{
                    'posx': 0,
                    'posy': 0,
                    'amount': 250
                }],
                'changedObstacles': []
            }, data)
Пример #2
0
    def __init__(self, host, port):
        self.socket = GameSocket(host, port)
        self.state = State()

        self.score_pre = (
            self.state.score
        )  # Storing the last score for designing the reward function
Пример #3
0
 def __init__(self, host, port):
     self.socket = GameSocket(host, port)
     self.state = State()
     self.pre_x = 0
     self.pre_y = 0
     self.pre_energy = 0
     #self.pre_action = ''   
     self.score_pre = self.state.score#Storing the last score for designing the reward function
Пример #4
0
    def __init__(self, host, port):
        self.socket = GameSocket(host, port)
        self.state = State()

        self.score_pre = self.state.score  #Storing the last score for designing the reward function
        self.decay = 27
        self.area_affect = 3
        self.affect_eff = 0.92
        self.view = None
        self.energy_view = None
        self.current_action = None
        self.gold_map = None
        self.gold_map_origin = None
Пример #5
0
    def test_reset(self):
        socket = GameSocket(None, None)
        socket.reset(['map1', '0', '0', '10', '3', '20'])

        self.assertEqual(0, socket.userMatch.posx)
        self.assertEqual(0, socket.userMatch.posy)
        self.assertEqual(10, socket.userMatch.energy)
        self.assertEqual(3, socket.userMatch.gameinfo.numberOfPlayers)
        self.assertEqual(20, socket.userMatch.gameinfo.steps)
        self.assertEqual(2, socket.userMatch.gameinfo.width)
        self.assertEqual(2, socket.userMatch.gameinfo.height)
        self.assertEqual(1, len(socket.userMatch.gameinfo.golds))
        self.assertEqual(3, len(socket.userMatch.gameinfo.obstacles))
        self.assertEqual(3, len(socket.users))
Пример #6
0
    def __init__(self, host, port):
        self.socket = GameSocket(host, port)
        self.state = State()

        # define action space
        self.INPUTNUM = 198  # The number of input values for the DQN model
        self.ACTIONNUM = 6  # The number of actions output from the DQN model
        # define state space

        self.gameState = None
        self.reward = 0
        self.terminate = False
        
        self.score_pre = self.state.score   # Storing the last score for designing the reward function
        self.energy_pre = self.state.energy # Storing the last energy for designing the reward function

        self.viewer = None
        self.steps_beyond_done = None
Пример #7
0
    def test_send_reset_receive(self):
        socket = GameSocket(None, None)
        socket.send('map1,7,9,10,4,20')

        data = json.loads(socket.receive())
        self.assertDictContainsSubset({
            'posx': 7,
            'posy': 9,
            'energy': 10,
        }, data)
        self.assertDictContainsSubset(
            {
                'numberOfPlayers': 4,
                'width': 2,
                'height': 2,
                'steps': 20,
                'golds': [{
                    'posx': 0,
                    'posy': 0,
                    'amount': 450,
                }],
            }, data['gameinfo'])
        self.assertListEqual([{
            'type': 0,
            'posx': 1,
            'posy': 0,
            'value': -1
        }, {
            'type': 2,
            'posx': 0,
            'posy': 1,
            'value': -10
        }, {
            'type': 1,
            'posx': 1,
            'posy': 1,
            'value': 0
        }], data['gameinfo']['obstacles'])
Пример #8
0
    def test_send_update(self, mock_reset):
        socket = GameSocket(None, None)
        socket.send('1')

        mock_reset.assert_not_called()
Пример #9
0
    def test_send_reset(self, mock_reset):
        socket = GameSocket(None, None)
        socket.send('map1,0,0,10,3,20')

        mock_reset.assert_called_with(['map1', '0', '0', '10', '3', '20'])
Пример #10
0
    def test_mixed_actions(self):
        socket = GameSocket(None, None)
        socket.send('map1,0,0,10,4,20')
        socket.send(json.dumps({
            '1': 0,
            '2': 3,
            '3': 4,
            '4': 5,
        }))

        data = json.loads(socket.receive())
        self.assertDictEqual(
            {
                'players': [
                    {
                        'playerId': 1,
                        'posx': -1,
                        'posy': 0,
                        'score': 0,
                        'energy': 10,
                        'status': 1,
                        'lastAction': 6,
                        'freeCount': 0,
                    },
                    {
                        'playerId': 2,
                        'posx': 0,
                        'posy': 1,
                        'score': 0,
                        'energy': 0,
                        'status': 2,
                        'lastAction': 6,
                        'freeCount': 0,
                    },
                    {
                        'playerId': 3,
                        'posx': 0,
                        'posy': 0,
                        'score': 0,
                        'energy': 10,
                        'status': 0,
                        'lastAction': 4,
                        'freeCount': 1,
                    },
                    {
                        'playerId': 4,
                        'posx': 0,
                        'posy': 0,
                        'score': 50,
                        'energy': 5,
                        'status': 0,
                        'lastAction': 5,
                        'freeCount': 0,
                    },
                ],
                'golds': [{
                    'posx': 0,
                    'posy': 0,
                    'amount': 400
                }],
                'changedObstacles': [{
                    'type': 0,
                    'posx': 0,
                    'posy': 1,
                    'value': -1,
                }]
            }, data)