Как вы можете ссылаться на прямоугольник конкретно в массиве или списке - PullRequest
0 голосов
/ 17 февраля 2012

Я пытаюсь создать генератор карт, который будет создавать сетку прямоугольников, а затем заполнять случайные прямоугольники различными свойствами.(Например, в сетке 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 голосов
/ 18 февраля 2012

Проблема с вашим кодом в этой строке:

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

Посмотрите на конструктор для Rectangle ( MSDN ). Обратите внимание, что он запрашивает ширину и высоту прямоугольника. Вы даете ему что-то другое.

...