2012-02-17 34 views
0

我想要做的是創建一個地圖生成器,它將創建一個矩形網格,然後填充具有不同屬性的隨機矩形。 (例如在一個2×2的網格中,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(); 
    } 

所以,問題很簡單:我怎麼能讓程序識別陣列中的一個矩形?

回答

0

您的代碼出現問題在這一行上:

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

看的構造RectangleMSDN)。請注意,它要求矩形的寬度和高度。你正在給它不同的東西。

+0

完全有意義。在切換值之後(所以它乘以位置位中的GridSize),並且它只有一個設定的GridSize長度,它也可以工作,而且我看到我忘記它從原點運行,所以初始點將是0,0而不是1 1。謝謝oodles。 – JFoxx64 2012-02-18 14:43:37

相關問題