c# - 基于二维图 block 的 map - 如何在边缘重复 map ?

标签 c# algorithm xna-4.0

我正在制作一款平台游戏,带有基于图 block 的 map (就像很多人一样)。我开始从事视频游戏的开发,所以有点困难。我不想自己学习,但在这个问题上我被困住了。

我的 map 是用这样的列表制作的:

mapList[x][y] = tile

有了这个列表,我可以遍历所有的 Tiles 并绘制它们。

我想做的是“循环”(重复) map 。我的意思是,当角色到达右极限(或左极限)时, map 会重复。我不明白该怎么做,我搜索了所有论坛和所有问题,但我一无所获:(

For instance

我不知道我是否表达清楚了,但英语不是我最好的语言,对此我深表歉意:p。

在此先感谢您尝试帮助我或阅读我的问题。

最佳答案

当您的网格是 WxH 单元格时,X 的有效范围是 0..W-1

所以作为第一种方法:

 int nextX = (X+1) % W;   // wraps around to 0

但您还需要一些用于 prevX (X-1) 的东西,也许还需要用于 X+d 的东西,其中 d 可以是正数或负数。
你不想弄乱负数的模数,所以

 int MoveX(int d) { return (X+W+d) % W; }

关于c# - 基于二维图 block 的 map - 如何在边缘重复 map ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9684910/

相关文章:

c# - 如何动态填充 CheckedListBox?

c# - 在c#中检查线程是否正在运行

c# - 对于 C#,是否有替代 xml 文档注释的好方法?

c# - 内存泄漏处理 Xamarin.Forms

c++ - SPOJ 370 - 一和零 (ONEZERO)

python - 左旋转数组

c# - XNA 4.0 SpriteBatch.Draw 抛出内存不足异常

algorithm - 为什么以下算法的运行时间是 O(1) 而不是 Θ(1)?

c# - 更改图形设置调用 `LoadContent`

c# - xna 4.0 加载texture2d时出错