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; } }
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); } }