2012-09-03 60 views
0

我正在尝试构建一个小游戏,在那里我有一个大网格。 (10x20)空间和一个小网格(3x3)。我想将小网格映射到大网格上。映射大网格上的小网格

我必须能够指定一个y /行的位置和网格放置的x/cell位置。

我该怎么做?

实施例:

small grid: 
    |0|1|0| 
    |1|1|1| 
    |0|1|0| 

    large grid 
    |0|0|0|0|0|0|0|0|0|0 
    |0|0|0|0|0|0|0|0|0|0 
    |0|0|0|0|0|0|0|0|0|0 
    |0|0|0|0|0|0|0|0|0|0 
    |0|0|0|0|0|0|0|0|0|0 
    |0|0|0|0|0|0|0|0|0|0 
    |0|0|0|0|0|0|0|0|0|0 
    |0|0|0|0|0|0|0|0|0|0 
    |0|0|0|0|0|0|0|0|0|0 
    |0|0|0|0|0|0|0|0|0|0 
    |0|0|0|0|0|0|0|0|0|0 
    |0|0|0|0|0|0|0|0|0|0 
    |0|0|0|0|0|0|0|0|0|0 
    |0|0|0|0|0|0|0|0|0|0 
    |0|0|0|0|0|0|0|0|0|0 
    |0|0|0|0|0|0|0|0|0|0 
    |0|0|0|0|0|0|0|0|0|0 
    |0|0|0|0|0|0|0|0|0|0 
    |0|0|0|0|0|0|0|0|0|0 
    |0|0|0|0|0|0|0|0|0|0 

    result: 
    |0|0|0|0|0|0|0|0|0|0 
    |0|0|0|0|0|0|0|0|0|0 
    |0|0|0|0|0|0|0|0|0|0 
    |0|0|0|0|0|0|0|0|0|0 
    |0|0|0|0|0|0|0|0|0|0 
    |0|0|0|0|0|0|0|0|0|0 
    |0|0|0|0|0|0|0|0|0|0 
    |0|0|0|0|0|0|0|0|0|0 
    |0|0|0|0|0|0|0|0|0|0 
    |0|0|0|0|0|0|0|0|0|0 
    |0|0|0|0|1|0|0|0|0|0 
    |0|0|0|1|1|1|0|0|0|0 
    |0|0|0|0|1|0|0|0|0|0 
    |0|0|0|0|0|0|0|0|0|0 
    |0|0|0|0|0|0|0|0|0|0 
    |0|0|0|0|0|0|0|0|0|0 
    |0|0|0|0|0|0|0|0|0|0 
    |0|0|0|0|0|0|0|0|0|0 
    |0|0|0|0|0|0|0|0|0|0 
    |0|0|0|0|0|0|0|0|0|0 

UPDATE 游戏是俄罗斯方块。我有一个小格子(砖)不能从大格子边界出来的检查。

 A brick holds: 
     X: cell position on the large grid 
     Y: row position on the large grid 
     Width: the width of the small grid 
     Height: the height of the small grid 
     Fields: the small grid where some fields are 0 (unmarked), and some are 1 (marked) 

我已经试过这样的事情:但不能让它的工作

 for (var row = brick.y; row < brick.y + brick.height; row++) { 
      for (var cell = brick.x; cell < brick.x + brick.width; cell++) { 
       for (var fieldRow = 0; fieldRow < brick.type.fields.length; fieldRow++) { 
        for (var fieldCell = 0; fieldCell < brick.type.fields[fieldRow].length; fieldCell++) { 
         console.log(brick.type.fields[fieldRow][fieldCell]); 
         if (brick.type.fields[fieldRow][fieldCell] == 1) { 
          this.grid[row][cell] = 1; 
         } 
        } 
       } 
      } 
     } 
+0

你试过了什么?小网格点服从哪些不等式?边界条件如何(大网格的小网格边界)? –

+0

如果你不想计算边界穿透,你应该使用一些额外的缓冲背景 –

+0

我已经更新了这个问题.. – TryingToImprove

回答

1

假设你正在使用2个数组来构建你的游戏,你的3x3的阵列是总部设在中间你的大网格。

小阵的中心是smallGrid [1] [1] 大阵的中心是bigGrid [4] [11]。 让我们建立传输算法

for(i=0; i<=2; i++){ 
for(j=0; j<=2; j++){ 
    if(smallGrid[i][j] == 1) 
    { 
     bigGrid[i+3][j+10]=1; 
    } 
} 
} 
+0

是的,我认为这是正确的..谢谢。 (var fieldCell = 0; fieldCell TryingToImprove