Beispiel #1
0
        /* *
         * Player sends KE after placing a piece on the Goal Area notifying others about discoverd goal/non-goal
         */
        private static void SendKnowledgeExchange()
        {
            /* sends authorise */
            foreach (string p in Player.Mates)
            {
                PlayerRequestHandler.sendAuthorizeKnowledgeExchange(socket, Player.ID, p);
            }

            /* sends data */
            foreach (string p in Player.Mates)
            {
                string  json   = PlayerRequestHandler.stringKnowledgeExchangeSend(socket, Player, p);
                JObject magic  = JObject.Parse(json);
                JField  jField = new JField
                {
                    x = Player.X,
                    y = Player.Y
                };
                jField.value = new JFieldValue();
                jField.value.manhattanDistance = null;
                jField.value.contains          = "goal";
                jField.value.timestamp         = GetTimestamp().ToString();
                jField.value.userGuid          = null;
                var jArray = new List <JField>();
                jArray.Clear();
                jArray.Add(jField);
                magic["fields"] = (JArray)JToken.FromObject(jArray);

                Broadcast(socket,
                          JsonConvert.SerializeObject(magic));
            }

            Player.KnowledgeExchange = false;
            return;
        }
Beispiel #2
0
        private static void ConnectCallback(IAsyncResult ar)
        {
            try
            {
                Socket client = (Socket)ar.AsyncState;
                client.EndConnect(ar);

                Console.WriteLine("Socket connected to {0}",
                                  client.RemoteEndPoint.ToString());

                connectDone.Set();

                // Request to Join the game
                PlayerRequestHandler.sendJoinGame(socket);
                // Response to join the game
                Receive();
                // Receive BeginGame message
                Receive();

                Console.WriteLine("Player begins the game");
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
        }
Beispiel #3
0
        private static void SendPlacePiece()
        {
            // send DestroyPiece action
            PlayerRequestHandler.sendPlacePiece(socket);

            // After every send command, player expect the response
            // Receive() is called  at the end of Send() method
            // use ctrl+F to find lable RSP_LBL
        }
Beispiel #4
0
 private static void SendMove(string direction)
 {
     Player.ApplyiedDirection = direction;
     // Send Move action
     PlayerRequestHandler.sendMove(socket, direction);
     // Receive Move Reponse
     // Receive();  check Send() method, it calls Receive()
     // use ctrl+F to find lable RSP_LBL
 }
Beispiel #5
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);
            }
        }