コード例 #1
0
        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);
            }
        }
コード例 #2
0
 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);
     }
 }
コード例 #3
0
 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;
         }
     }
 }
コード例 #4
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);
                 }
             }
         }
     }
 }