如何在数组或列表中专门引用矩形

时间:2012-02-17 17:30:36

标签: arrays c#-4.0 xna-4.0

我要做的是创建一个地图生成器,它将创建一个矩形网格,然后填充具有不同属性的随机矩形。 (例如,在2x2的网格中,1,1在游戏中只是一个正常的'场',1,2将是一个基础并具有不同的属性(如构建单位的能力),2,1将是一个水瓦(并且不能通过单位),2,2将是一座山(与之前类似的属性)。我创建(我认为)是一个网格,但是当我尝试引用数组时我创建它并不像我想的那样工作。我的猜测是我没有正确地做到这一点,但这里有一些代码:

namespace MapGenie
    {
        public class Game1 : Microsoft.Xna.Framework.Game
        {
            GraphicsDeviceManager graphics;
            SpriteBatch spriteBatch;

            GameMap[,] basicMap = new GameMap[10,10]; //I have this done in Initialization normally.
            Rectangle[,] basicGrid = new Rectangle[10,10];
        }
    }

    protected override void LoadContent()
    {
        spriteBatch = new SpriteBatch(GraphicsDevice);

        int GridSize = 20;

        for(int x = 0;x <10;x++)
            for (int y = 0; y < 10; y++)
            {
                basicMap[x, y] = new GameMap(Content.Load<Texture2D>("Textures\\Plains"));
                basicMap[x, y].position.X = x * GridSize;
                basicMap[x, y].position.Y = y * GridSize;
                basicGrid[x, y] = new Rectangle(x, y, x * GridSize, y * GridSize);
            }
    }

    protected override void Update(GameTime gameTime)
    {
        //This is what I use to test reference a specific point on the grid, however whenever the 
        //mouse crosses into any of the 3x3 area starting with 1,1 it closes the program.
        if (mousePoint.Intersects(basicGrid[3, 3]))
            this.Exit();
    }

所以问题很简单:如何让程序只识别数组中的一个矩形?

1 个答案:

答案 0 :(得分:0)

您的代码存在问题:

basicGrid[x, y] = new Rectangle(x, y, x * GridSize, y * GridSize);

查看RectangleMSDN)的构造函数。请注意,它要求矩形的宽度和高度。你给的是不同的东西。