Пример #1
0
        private async Task ReceiveStonesAsync(string stone)
        {
            JArray array = new JArray();

            array.Add("ReceiveStones");
            array.Add(stone);

            PlayerRequestPacket packet = new PlayerRequestPacket(JsonConvert.SerializeObject(array));
            await _serverConnectionContainer.TCP_Connections[0].SendAsync <PlayerResponsePacket>(packet);
        }
Пример #2
0
        private async Task <string> GetNameAsync()
        {
            JArray array = new JArray();

            array.Add("GetName");

            PlayerRequestPacket  packet   = new PlayerRequestPacket(JsonConvert.SerializeObject(array));
            PlayerResponsePacket response = await _serverConnectionContainer.TCP_Connections[0].SendAsync <PlayerResponsePacket>(packet);

            return(JsonConvert.DeserializeObject <string>(response.Response));
        }
Пример #3
0
        private async Task <string> MakeAMoveAsync(string[][][] boards)
        {
            JArray array = new JArray();

            array.Add("MakeAMove");
            array.Add(JToken.Parse(JsonConvert.SerializeObject(boards)));

            PlayerRequestPacket  packet   = new PlayerRequestPacket(JsonConvert.SerializeObject(array));
            PlayerResponsePacket response = await _serverConnectionContainer.TCP_Connections[0].SendAsync <PlayerResponsePacket>(packet);

            return(JsonConvert.DeserializeObject <string>(response.Response));
        }
Пример #4
0
        private void PlayerRequestReceived(PlayerRequestPacket packet, Connection connection)
        {
            //Console.WriteLine($"Request received {packet.Request}");

            JArray requestArray = JsonConvert.DeserializeObject <JArray>(packet.Request);
            PlayerResponsePacket response;

            switch (requestArray[0].ToObject <string>())
            {
            case "Register":
                string register = _player.Register(
                    requestArray[1].ToObject <string>(),
                    requestArray[2].ToObject <string>(),
                    requestArray[3].ToObject <int>());
                response = new PlayerResponsePacket(JsonConvert.SerializeObject(register), packet);
                connection.Send(response);
                return;

            case "ReceiveStones":
                _player.ReceiveStones(requestArray[1].ToObject <string>());
                return;

            case "MakeAMove":
                string move;
                try
                {
                    move = _player.MakeAMove(requestArray[1].ToObject <string[][][]>());
                }
                catch (PlayerException e)
                {
                    move = e.Message;
                }
                response = new PlayerResponsePacket(JsonConvert.SerializeObject(move), packet);
                connection.Send(response);
                return;

            case "GetStone":
                string stone = _player.GetStone();
                response = new PlayerResponsePacket(JsonConvert.SerializeObject(stone), packet);
                connection.Send(response);
                return;

            case "GetName":
                string name = _player.GetStone();
                response = new PlayerResponsePacket(JsonConvert.SerializeObject(name), packet);
                connection.Send(response);
                return;
            }

            throw new PlayerClientException("Invalid operation sent to PlayerClient");
        }
Пример #5
0
        private async Task <string> RegisterAsync(string name, string aiType, int n)
        {
            JArray array = new JArray();

            array.Add("Register");
            array.Add(name);
            array.Add(aiType);
            array.Add(n);

            PlayerRequestPacket  packet   = new PlayerRequestPacket(JsonConvert.SerializeObject(array));
            PlayerResponsePacket response = await _serverConnectionContainer.TCP_Connections[0].SendAsync <PlayerResponsePacket>(packet);

            return(JsonConvert.DeserializeObject <string>(response.Response));
        }