public bool shoot(Game1.Direction dir) { if (MyPlayer.getArrows() >= 1) { Room NextRoom = MyCave.getConnectedRooms(MyMap.getPlayerRoom().getDecimalForm())[(int)(dir)]; MyPlayer.setArrows(MyPlayer.getArrows() - 1); if (NextRoom != null) { won = MyMap.ShootArrow(NextRoom); if (won) { GameState = Gstate.EndGame; } return(true); } else { return(false); } } else { return(false); } }
public void Move(Game1.Direction direction, GameLand gameLand, GameObject[,] block, int height, int width, Bonuses bonuses, int[,] bonusBoard, GameTime gameTime) { bushSpeed = speed - 0.8f; if (direction == Game1.Direction.UP) { Position.Y = Position.Y - velocity.Length(); CheckLandCollision(direction, gameLand, block, height, width); CheckBonuseCollision(bonuses, bonusBoard, height, width, gameTime); checkForGameLandAnd(direction, height, width); } if (direction == Game1.Direction.Down) { Position.Y = Position.Y + velocity.Length(); CheckLandCollision(direction, gameLand, block, height, width); CheckBonuseCollision(bonuses, bonusBoard, height, width, gameTime); checkForGameLandAnd(direction, height, width); } if (direction == Game1.Direction.Right) { texture = content.Load <Texture2D>("heroright"); Position.X = Position.X + velocity.Length(); CheckLandCollision(direction, gameLand, block, height, width); CheckBonuseCollision(bonuses, bonusBoard, height, width, gameTime); checkForGameLandAnd(direction, height, width); } if (direction == Game1.Direction.Left) { texture = content.Load <Texture2D>("heroleft"); Position.X = Position.X - velocity.Length(); CheckLandCollision(direction, gameLand, block, height, width); CheckBonuseCollision(bonuses, bonusBoard, height, width, gameTime); checkForGameLandAnd(direction, height, width); } }
public void checkForGameLandAnd(Game1.Direction direction, int height, int width) { if (direction == Game1.Direction.UP) { if (Position.Y < 0) { Position.Y = Position.Y + velocity.Length(); } } if (direction == Game1.Direction.Down) { if (Position.Y > height * 30 - 60) { Position.Y = Position.Y - velocity.Length(); } } if (direction == Game1.Direction.Right) { if (Position.X > width * 30 - 30) { Position.X = Position.X - velocity.Length(); } } if (direction == Game1.Direction.Left) { if (Position.X < 0) { Position.X = Position.X + velocity.Length(); Position.Y = Position.Y - 0; } } }
public void CheckLandCollision(Game1.Direction direction, GameLand gameLand, GameObject[,] block, int height, int width) { int[,] gameBoard = gameLand.GameBoard; block = gameLand.Block; for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { if (gameBoard[y, x] == 30) { if (BoundingBox.Intersects(block[y, x].BoundingBox)) { if (direction == Game1.Direction.UP) { Position.X = Position.X + 0; Position.Y = Position.Y + velocity.Length(); } if (direction == Game1.Direction.Right) { Position.X = Position.X - velocity.Length(); Position.Y = Position.Y + 0; } if (direction == Game1.Direction.Down) { Position.X = Position.X + 0; Position.Y = Position.Y - velocity.Length(); } if (direction == Game1.Direction.Left) { Position.X = Position.X + velocity.Length(); Position.Y = Position.Y + 0; } } } else if (gameBoard[y, x] == 20) { if (BoundingBox.Intersects(block[y, x].BoundingBox)) { velocity = new Vector2(bushSpeed); } } else if (gameBoard[y, x] != 30 && gameBoard[y, x] != 20) { if (BoundingBox.Intersects(block[y, x].BoundingBox)) { velocity = new Vector2(constantSpeed); } } } } }