0

我在想出一个关于如何在我的蛇游戏中使用数组的解决方案时遇到了麻烦。我在 400x400 大小的窗口上有一个 20x20 像素的头部。

areaGrid = new Vector2[columns, rows];

for (int x = 0; x < columns; x++)
{
    for (int y = 0; y < rows; y++)
    {
        areaGrid[x, y] = new Vector2(x * 20, y * 20);
        Console.WriteLine("areaGrid[{0},{1}] = {2}", x, y, areaGrid[x, y]);
    }
}

所以很自然,蛇的头加上尾巴就能占据400个“块”。我在 [5, 5] 的数组中绘制了头部,这是网格上的坐标 100, 100。我希望头部一次移动 20 个像素,这是数组中的一个新点。例如,向右移动会将头部放置在数组中的 [5, 6] 和网格中的 120, 100 处。我只是不知道该怎么做。如何在我的更新方法中通过数组实现移动?

4

1 回答 1

0

使用带有块坐标的列表:

List<Vector2> Snake = new List() { {5,5}, {5,6}, {5,7}, {6,7}, {7,7} }

并渲染它:

var transform = Matrix.CreateScale(20) * Matrix.CreateTranslation(offset);
SpriteBatch.Begin(null,null,..., tranform);
foreach (var pos in Snake)
  SpriteBatch.Draw(white_1x1_texture, pos, null, SnakeColor);
SpriteBatch.End();

或者

SpriteBatch.Begin();
foreach (var pos in Snake) {
  var box = new Rectangle(offset.X + pos.X * 20, offset.Y + pos.Y*20, 20,20);
  SpriteBatch.Draw(white_1x1_texture, box, null, SnakeColor);
} 
SpriteBatch.End();
于 2013-05-03T13:56:16.287 回答