Example #1
0
        private void connectionHandler_OnMessageReceived(object source, string requestMessage)
        {
            var clientConnectionHandler = source as ClientConnectionHandler;
            var responseMessage         = _requestResolver.Resolve(requestMessage);

            var clientSerializedResponseMessage = responseMessage.Serialize();

            clientConnectionHandler.Send(clientSerializedResponseMessage);

            if (responseMessage.Status == MessageStatus.Success)
            {
                if (responseMessage.Broadcast)
                {
                    if (responseMessage.Hidden)
                    {
                        responseMessage.Data = string.Empty;
                    }
                    var serializedResponseMessage = responseMessage.Serialize();
                    foreach (var connection in _activeConnections)
                    {
                        if (connection.Id != clientConnectionHandler.Connection.Id)
                        {
                            var userConnectionHandler = new ClientConnectionHandler(connection);
                            userConnectionHandler.Send(serializedResponseMessage);
                        }
                    }
                }
            }
        }
Example #2
0
        static void Main(string[] args)
        {
            Console.WriteLine("Welcome in Console.TicTacToe v.0.1 by Michal Jasiak...\r\n");
            Console.WriteLine("Please give your name...");
            var name = Console.ReadLine();

            Console.WriteLine(string.Format("Hello {0},\r\ndo you want X or O?", name));
            var mark = Console.ReadLine();

            Console.WriteLine("Connecting...");

            var connection        = ClientConnection.Connect(_listeningAddress, _listeningPort);
            var connectionHandler = new ClientConnectionHandler(connection);

            connectionHandler.OnMessageReceived += connectionHandler_OnMessageReceived;
            var requestMessage = new RequestMessage
            {
                Data = JsonConvert.SerializeObject(new Player
                {
                    Name = name,
                    Mark = char.Parse(mark)
                }),
                Method = "player/add"
            };

            connectionHandler.Send(JsonConvert.SerializeObject(requestMessage));
            connectionHandler.StartListening();

            string message = string.Empty;

            message = Console.ReadLine();
            while (!message.Equals("exit"))
            {
                var choose = message.Split(' ')[0];
                switch (choose)
                {
                case "newgame":
                {
                    requestMessage = new RequestMessage
                    {
                        Data   = string.Empty,
                        Method = "game/start"
                    };
                    connectionHandler.Send(requestMessage.Serialize());
                    break;
                }

                case "continue":
                {
                    if (_currentGame != null)
                    {
                        Console.Clear();
                        BuildMap(_currentGame.Map);
                        IsYourTurn();
                    }
                    else
                    {
                        Console.WriteLine("You haven't started game yet. Write 'newgame' to start it.");
                    }
                    break;
                }

                case "move":
                {
                    var isNumeric = int.TryParse(message.Split(' ')[1], out int destination);
                    if (isNumeric)
                    {
                        bool isNumber1to9 = Enumerable.Range(1, 9).Contains(destination);
                        if (isNumber1to9)
                        {
                            Move move = new Move
                            {
                                GameId      = _currentGame.Id,
                                Player      = _currentPlayer,
                                Destination = destination - 1
                            };
                            requestMessage = new RequestMessage
                            {
                                Data   = JsonConvert.SerializeObject(move),
                                Method = "game/move"
                            };
                            connectionHandler.Send(requestMessage.Serialize());
                            break;
                        }
                    }
                    Console.WriteLine("First parameter of 'move' should be number from 1-9");
                    break;
                }

                case "help":
                {
                    Console.Clear();
                    Console.WriteLine("--- TicTacToe Help Menu ---");
                    Console.WriteLine("  - newgame | Starts new game.");
                    if (_currentGame != null)
                    {
                        Console.WriteLine("  - continue | Continue game.");
                        Console.WriteLine("  - move field_number | Set your mark on specified field.");
                    }
                    Console.WriteLine("  - help    | Shows help menu");
                    Console.WriteLine("  - exit    | Close game.");
                    break;
                }

                default:
                {
                    Console.WriteLine("Command doesn't exist");
                    break;
                }
                }
                message = Console.ReadLine();
            }

            connectionHandler.Close();
            Console.WriteLine("* Client has exited... *");
            Console.Clear();
        }