public bool MoveGameObject(GameObject gameObject, GameObject.direction direction) { int[] newPos = new int[2]; newPos[0] = gameObject.X; newPos[1] = gameObject.Y; switch (direction) { case GameObject.direction.Down: newPos[1]++; break; case GameObject.direction.Up: newPos[1]--; break; case GameObject.direction.Left: newPos[0]--; break; case GameObject.direction.Right: newPos[0]++; break; } if (MapGrid[newPos[0], newPos[1]] != '\0') { return(false); } SetCursorPosition(gameObject.X, gameObject.Y); Write('\0'); gameObject.X = newPos[0]; gameObject.Y = newPos[1]; return(true); }
private void HandleMovement() { ConsoleKey key = ReadKey(true).Key; GameObject.direction direction = GameObject.direction.Other; switch (key) { case ConsoleKey.UpArrow: direction = GameObject.direction.Up; break; case ConsoleKey.DownArrow: direction = GameObject.direction.Down; break; case ConsoleKey.LeftArrow: direction = GameObject.direction.Left; break; case ConsoleKey.RightArrow: direction = GameObject.direction.Right; break; case ConsoleKey.Z: if (!CurrentWorld.HasGameObject(CurrentTreasure)) { if (CurrentWorld.HasGameObject(CurrentLaser)) { return; } Beep(466, 52); if (!CurrentWorld.HasGameObject(CurrentLaser) && CurrentWorld.HasGameObject(CurrentEnemy)) { CurrentLaser = new Laser(CurrentPlayer.X, CurrentPlayer.Y, CurrentGame, CurrentPlayer, CurrentWorld, CurrentEnemy); CurrentWorld.AddGameObject(CurrentLaser); } } break; case ConsoleKey.S: CurrentPlayer.Y++; CurrentPlayer.Y++; CurrentWorld.DrawWorld(); break; case ConsoleKey.W: CurrentPlayer.Y--; CurrentPlayer.Y--; CurrentWorld.DrawWorld(); break; case ConsoleKey.D: CurrentPlayer.X++; CurrentPlayer.X++; CurrentWorld.DrawWorld(); break; case ConsoleKey.A: CurrentPlayer.X--; CurrentPlayer.X--; CurrentWorld.DrawWorld(); break; } if (direction != GameObject.direction.Other) { CurrentWorld.MoveGameObject(CurrentPlayer, direction); CurrentEnemy.EnemyMoveToTarget(); CurrentLaser?.MoveLaser(); } }