示例#1
0
        public void Consume()
        {
            while (true)
            {
                RefreshGameBoard gameboard = null;
                lock (myQueue)
                {
                    while (myQueue.Count == 0)
                    {
                        Monitor.Wait(myQueue);
                    }
                    if (myQueue.Count > 0)
                    {
                        try
                        {
                            gameboard = JsonConvert.DeserializeObject <RefreshGameBoard>(myQueue.First());
                            myQueue.RemoveAt(0);
                        }
                        catch (Exception)
                        {
                            myQueue.RemoveRange(0, myQueue.Count);
                        }
                    }
                }

                if (gameboard != null)
                {
                    form.PrintGameBoard(gameboard.players);
                }
            }
        }
示例#2
0
        public RefreshGameBoard MoveLogic(Player player, Move move)
        {
            switch (move.direction)
            {
            case Enums.direction.Up:
                if (player.y > 0)
                {
                    player.y--;
                }
                break;

            case Enums.direction.Down:
                if (player.y < 9)
                {
                    player.y++;
                }
                break;

            case Enums.direction.Left:
                if (player.x > 0)
                {
                    player.x--;
                }
                break;

            case Enums.direction.Right:
                if (player.x < 9)
                {
                    player.x++;
                }
                break;

            default:
                break;
            }

            RefreshGameBoard x = new RefreshGameBoard(players);

            return(x);
        }
示例#3
0
        public void Run()
        {
            try
            {
                string message = "";

                while (tcpclient.Connected)
                {
                    NetworkStream n = tcpclient.GetStream();
                    // Slipp Patrik

                    /*if ((IPAddress)tcpclient.Client.RemoteEndPoint() == "127.0.0.1")
                     * {
                     *  tcpclient.Close();
                     * }*/
                    message = new BinaryReader(n).ReadString();

                    Message msg = JsonConvert.DeserializeObject <Message>(message);

                    switch (msg.type)
                    {
                    case "Move":
                        Move myMove = JsonConvert.DeserializeObject <Move>(message);

                        RefreshGameBoard result = myServer.MoveLogic(thisPlayer, myMove);

                        string json = JsonConvert.SerializeObject(result);
                        myServer.Broadcast(this, json);

                        break;

                    case "SetUserName":
                        SetUserName username = JsonConvert.DeserializeObject <SetUserName>(message);

                        thisPlayer = new Player(5, 5, 4 /*username.username*/);
                        myServer.players.Add(thisPlayer);

                        RefreshGameBoard currentGameBoard     = new RefreshGameBoard(myServer.players);
                        string           currentGameBoardJson = JsonConvert.SerializeObject(currentGameBoard);
                        myServer.Broadcast(this, currentGameBoardJson);
                        break;

                    case "SetUserImage":
                        SetUserImage userImage = JsonConvert.DeserializeObject <SetUserImage>(message);


                        thisPlayer = new Player(5, 5, userImage.userImageIndex /*username.username*/);
                        myServer.players.Add(thisPlayer);

                        RefreshGameBoard refreshedGameBoard     = new RefreshGameBoard(myServer.players);
                        string           refreshedGameBoardJson = JsonConvert.SerializeObject(refreshedGameBoard);
                        myServer.Broadcast(this, refreshedGameBoardJson);
                        break;

                    default:
                        // ++ i failed attemps vid 5 failures addera ip till shitlist.
                        break;
                    }

                    Debug.WriteLine(message);
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine("Här är vårt message: " + ex.Message);
            }
            finally
            {
                myServer.players.Remove(thisPlayer);
                myServer.clients.Remove(this);
                //myServer.DisconnectClient(this);
                tcpclient.Close();

                RefreshGameBoard refreshedGameBoard     = new RefreshGameBoard(myServer.players);
                string           refreshedGameBoardJson = JsonConvert.SerializeObject(refreshedGameBoard);
                myServer.Broadcast(this, refreshedGameBoardJson);
            }
        }