Beispiel #1
0
        public static void Refresh()
        {
            //Decrease any positive Ticks; if next player position is other than zero, game over
            //Otherwise set next player position and set Tick on player position to current Length
            if (!Form1.TimerEnabled)
            {
                return; //Not playing currently
            }
            for (int i = 0; i < GameField.GetLength(0); i++)
            {
                for (int j = 0; j < GameField.GetLength(1); j++)
                {
                    if (GameField[i, j].Tick > 0)
                    {
                        GameField[i, j].Tick--;
                    }
                }
            }
            Point nextcoord = MovePlayerPre(Player, MoveDirection);

            Network.SyncUpdate(NetUpdateType.Move, MoveDirection);
            if (nextcoord.X >= Game.GameSize.X || nextcoord.Y >= Game.GameSize.Y ||
                (Game.GameField[nextcoord.X, nextcoord.Y].Tick != 0 && Game.GameField[nextcoord.X, nextcoord.Y].Type != SquareType.Point))
            {
                Player.Lives--;
                LivesLabel.ForeColor = Color.Red;
                if (Player.Lives <= 0)
                {
                    Stop();
                }
                else
                {
                    Reset(false);
                }
            }
            else
            {
                //LivesLabel.ForeColor = Color.White;
                LivesLabel.ForeColor = Game.Player.Color;
                if (GameField[nextcoord.X, nextcoord.Y].Type == SquareType.Point)
                {
                    Player.Score        += 1000;
                    ScoreLabel.ForeColor = Color.Blue;
                    Game.Length++;
                    Form1.SetTimer(100);
                    Game.AddPoint();
                }
                else
                {
                    //ScoreLabel.ForeColor = Color.White;
                    ScoreLabel.ForeColor = Game.Player.Color;
                }
                if (Player.Score > 0)
                {
                    Player.Score -= new Random().Next(1, 20);
                }
                MovePlayerPost(Player, nextcoord);
            }
            GameRenderer.Render();
        }
Beispiel #2
0
        public static void Reset(bool fullreset)
        {
            if (fullreset)
            {
                Network.Leave();
            }
            Size size = GameRenderer.Panel.Size;

            GameField = new SqCoord[GameSize.X, GameSize.Y];
            //Player.Position = new Point { X = GameSize.X / 2, Y = 1 };
            var       rand = new Random();
            Direction dir  = (Direction)rand.Next(4);

            do
            {
                switch (dir)
                {
                case Direction.Up:
                    Player.Position = new Point(rand.Next(1, GameSize.X - 2), 1);
                    MoveDirection   = Direction.Down;
                    break;

                case Direction.Down:
                    Player.Position = new Point(rand.Next(1, GameSize.X - 2), GameSize.Y - 2);
                    MoveDirection   = Direction.Up;
                    break;

                case Direction.Left:
                    Player.Position = new Point(1, rand.Next(1, GameSize.Y - 2));
                    MoveDirection   = Direction.Right;
                    break;

                case Direction.Right:
                    Player.Position = new Point(GameSize.X - 2, rand.Next(1, GameSize.Y - 2));
                    MoveDirection   = Direction.Left;
                    break;
                }
            } while (GameField[Player.Position.X, Player.Position.Y].Tick > 0);
            if (fullreset)
            {
                Player.Score = 0;
                Player.Lives = 3;
                UpdateTime   = 600;
                Length       = 4;
            }
            Network.SyncUpdate(NetUpdateType.Teleport, Player.Position);
            for (int i = 0; i < GameSize.X; i++)
            {
                for (int j = 0; j < GameSize.Y; j++)
                {
                    if (i == 0 || j == 0 || i == GameSize.X - 1 || j == GameSize.Y - 1)
                    {
                        GameField[i, j].Type = SquareType.Wall;
                        GameField[i, j].Tick = -1;
                    }
                    else if (i == Player.Position.X && j == Player.Position.Y)
                    {
                        GameField[i, j].Type       = SquareType.Player;
                        GameField[i, j].Tick       = Length;
                        GameField[i, j].PlayerName = Player.Name;
                    }
                }
            }
            Game.AddPoint();
            //MoveDirection = Direction.Down;
        }