Пример #1
0
        private static void SendDecision(Player.Decision decision)
        {
            Console.WriteLine("Player decided: " + decision);

            switch (decision)
            {
            case Player.Decision.MOVE_NORTH:  SendMove("N"); return;

            case Player.Decision.MOVE_SOUTH:  SendMove("S"); return;

            case Player.Decision.MOVE_WEST:   SendMove("W"); return;

            case Player.Decision.MOVE_EAST:   SendMove("E"); return;

            case Player.Decision.PICKUP_PIECE: SendPickup(); return;

            case Player.Decision.TEST_PIECE: SendTestPiece(); return;

            case Player.Decision.DESTROY_PIECE: SendDestroyPiece(); return;

            case Player.Decision.PLACE_PIECE: SendPlacePiece(); return;

            case Player.Decision.DISCOVER: SendDiscover(); return;

            case Player.Decision.KNOWLEDGE_EXCHANGE: SendKnowledgeExchange(); return;
            }
        }
Пример #2
0
        private static void AnalyzeMessage(string json)
        {
            dynamic magic  = JsonConvert.DeserializeObject(json);
            string  action = magic.action;

            switch (action.ToLower())
            {
            case "start":
            {
                ReadStartGame(json);
                // Send Discover as soon as the game begins,
                // so player knows something... could be move later somewhere else...
                Player.SendDiscover = true;
                SendDecision(Player.MakeMove());
                break;
            }

            case "state":
            {
                ReadDiscover(json);
                SendDecision(Player.MakeMove());
                break;
            }

            case "move":
            {
                // Nothing is ready for this stage, but once "state" is working successfully, the rest would be easier
                ReadMove(json);
                Player.SendDiscover = true;
                SendDecision(Player.MakeMove());
                break;
            }

            case "pickup":
            {
                ReadPickup(json);
                SendDecision(Player.MakeMove());
                break;
            }

            case "test":
            {
                //Whenever ReadTestPiece reads false from test response, it resends TestPiece again
                ReadTestPiece(json);
                SendDecision(Player.MakeMove());
                break;
            }

            case "destroy":
            {
                ReadDestroyPiece(json);
                SendDecision(Player.MakeMove());
                break;
            }

            case "place":
            {
                ReadPlacePiece(json);
                Player.Decision decision = Player.MakeMove();
                SendDecision(decision);
                if (decision == Player.Decision.KNOWLEDGE_EXCHANGE)
                {
                    Receive();
                }
                break;
            }

            case "exchange":
            {
                // Receive Authorize Knowledege Exchange
                // Accept it
                PlayerRequestHandler.sendAcceptKnowledgeExchange(socket, Player.ID);
                break;
            }

            case "send":
            {
                // Read KE data
                ReadKnowledgeExchangeSend(json);
                SendDecision(Player.MakeMove());
                break;
            }

            case "end":
            {
                ReadGameOver(json);
                break;
            }

            default: break;
            }

            // row column
            for (int i = Player.BoardHeight - 1; i >= 0; i--) // row
            {
                string line = "" + i + ". ";
                for (int j = 0; j < Player.BoardWidth; j++)
                { // col
                    Console.Write("" + Player.Board[i, j] + " ");
                    line += " ";
                }
                Console.WriteLine(line);
            }
        }