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(); }
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; }