Пример #1
0
        public void Connect()
        {
            IPEndPoint ipPoint = new IPEndPoint(IPAddress.Parse(serverIP), serverPort);

            Socket ClientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            ClientPlayer = new Player();

            ClientSocket.Connect(ipPoint);
            SendPlayerPos(ClientSocket);

            Server.LobbyInfo LobbyInfo = ReceiveGameInfo(ClientSocket, false) as Server.LobbyInfo; //Creating Lobby

            string[] NullArray = new string[0];
            string   Title     = $"Waiting for Players to connect - {LobbyInfo.NumberOfPlayers - 1 - LobbyInfo.ConnectedPlayers.Count}";

            Interface.AnswerInterface(Title, NullArray);//Lobby Initialization
            Console.CursorTop += 2;
            int OrigTop = Console.CursorTop;

            for (int i = 0; i < LobbyInfo.ConnectedPlayers.Count; i++)
            {
                Console.SetCursorPosition(6, OrigTop + 2 * i);
                Console.Write("\x4 {0} - is connected.", (char)(i + 1));
            }

            int NumOfPlayersToConnect = LobbyInfo.NumberOfPlayers - 1 - LobbyInfo.ConnectedPlayers.Count;

            for (int i = 0; i < NumOfPlayersToConnect; i++)
            {
                LobbyInfo = ReceiveGameInfo(ClientSocket, false) as Server.LobbyInfo;
                Title     = $"Waiting for Players to connect - {NumOfPlayersToConnect - i}";
                Interface.AnswerInterfaceTitleChange(Title);
                Console.SetCursorPosition(6, OrigTop + 2 * LobbyInfo.ConnectedPlayers.Count - 1);
                Console.Write("\x4 {0} - is connected.", (char)LobbyInfo.ConnectedPlayers.Count);
            }
            Console.Clear();                                                                         //End of Lobby stage

            ClientPlayer = ReceiveGameInfo(ClientSocket, false) as Player;                           //Player registration

            GameInfo = ReceiveGameInfo(ClientSocket, false) as Multiplayer.MultiplayerGame.GameInfo; //Game registration
            while (true)
            {
                GameInfo = ReceiveGameInfo(ClientSocket) as Multiplayer.MultiplayerGame.GameInfo;

                ClientPlayer.MovementAsync(GameInfo.Map);
                SendPlayerPos(ClientSocket);

                Interface.MultiplayerMapDraw(GameInfo.Map, GameInfo.Players, GameInfo.Food);
                Interface.MultiplayerShowPoints(GameInfo.Map, GameInfo.Players);
            }
        }
Пример #2
0
        private void SendGameInfo()
        {
            Message message = new Message();

            Multiplayer.MultiplayerGame.GameInfo Info = Game.GetGameInfo();

            message.PacketWrapper(Foo.Serialize(Info).Data);

            for (int i = 0; i < ConnectedPlayers.Count; i++)
            {
                ConnectedPlayers.Keys.ToArray()[i].Send(message.Data);
            }
        }