gpt4 book ai didi

c# - 如何制作俄罗斯方 block 克隆?

转载 作者:可可西里 更新时间:2023-11-01 07:50:47 26 4
gpt4 key购买 nike

我正在使用 XNA C# 编写俄罗斯方 block 的克隆代码,但不确定在高层次上处理游戏数据结构方面的最佳方法。

我对碰撞检测、旋转、动画等完全没问题。我需要知道存储“掉落的方 block ”的最佳方法——即不再受玩家控制的方 block 。

我认为每个 Tetromino block 都应存储在其自己的类中,该类由 4x4 数组组成,以便可以轻松旋转 block 。那么问题是如何将四联骨牌的最终位置存储到游戏网格中,方法是将四联骨牌切割成单独的 block (对于每个单元格),然后设置主游戏网格的相应位置以容纳这些相同的 block ,然后将四联骨牌消失一次它已经到达了它的最终位置。也许我的方法有一些缺点。

我是否应该为主游戏网格创建一个 10x20 的矩阵以便存储?或者我应该使用堆栈或队列以某种方式存储丢弃的 block 。或者也许有更好的方法/数据结构来存储东西?

我确信我的方法行得通,但我想看看是否有人知道更好的方法或者我的方法是否足够好?

附言不是家庭作业,这将是我作品集中的一个项目。谢谢。

最佳答案

一旦一个方 block 是不可移动的,就没有什么可以将它与任何其他现在不可移动的方 block 区分开来。在这方面,我认为将整个网格存储为矩阵是最有意义的,其中每个方 block 要么被填充,要么不被填充(如果是,还有 block 的颜色)。

我觉得矩阵有很多优点。它将使碰撞检测变得简单(不必与多个对象进行比较,只需与矩阵上的位置进行比较)。将其存储为矩阵还可以更轻松地确定何时创建了整行。最重要的是,当一条线消失时,您不必担心拼接不动的 Tetromino。当一个移动时,您可以一下子将整个矩阵向下移动。

关于c# - 如何制作俄罗斯方 block 克隆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/566159/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com