예제 #1
0
파일: Game1.cs 프로젝트: samoKrajci/Sake
        protected async override void Initialize()
        {
            tcpClient.ConnectToServer();
            await tcpClient.ReceiveResponseAsync();

            state = "game";
            InitialInfoPacket initialInfo = new InitialInfoPacket(tcpClient.LastResponse);

            snakeUser = new SnakeUser(initialInfo.id, initialInfo.snakes[initialInfo.id]);

            HEIGHT   = initialInfo.height;
            WIDTH    = initialInfo.width;
            CELLSIZE = initialInfo.cellSize;
            map      = new Map(HEIGHT, WIDTH, CELLSIZE);

            for (int i = 0; i < initialInfo.snakeCount; i++)
            {
                map.AddSnake(new Snake(initialInfo.snakes[i], initialInfo.initialInvincibility));
            }

            graphics.PreferredBackBufferHeight = map._height * map._cellSize;
            graphics.PreferredBackBufferWidth  = map._width * map._cellSize;
            graphics.ApplyChanges();

            _ = tcpClient.RunTaskAfterResponseLoopAsync(() => ResponseWrapper());

            base.Initialize();
        }
예제 #2
0
        static void PrepareGame()
        {
            map = new MasterMap(HEIGHT, WIDTH, CELLSIZE);
            for (int i = 0; i < users.Count; i++)
            {
                map.AddSnakeRandomPosition(initialInvincibility);
            }

            List <Vector2> snakesPositions = new List <Vector2>();

            foreach (Snake s in map.snakes)
            {
                snakesPositions.Add(s.position);
            }

            Console.WriteLine(String.Format("Map created.\nDimensions: {0}x{1}\nCell size: {2}\nPlayers: {3}", WIDTH, HEIGHT, CELLSIZE, map.snakes.Count));
            Console.WriteLine();

            for (int i = 0; i < users.Count; i++)
            {
                User user = users[i];
                InitialInfoPacket initialInfo = new InitialInfoPacket(HEIGHT, WIDTH, CELLSIZE, users.Count, i, snakesPositions, initialInvincibility);
                byte[]            data        = Encoding.ASCII.GetBytes(initialInfo.serialized);
                try
                {
                    user.SendData(data);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }

                Console.WriteLine(String.Format("Initial info sent to {0}", user.username));
            }

            Console.WriteLine();
        }