起初我认为我的问题应该先问过,但我找不到我想要的东西。
我正在开发的这个iOS应用程序的一个元素是将8x8网格分成Tetris个部分(每个部分由4个块组成)。我有两个特别的问题:
在Objective-C中表示俄罗斯方块片段的最佳方法是什么?
将网格呈现为随机俄罗斯方块的算法(以及后来如何检查两个部分是否合在一起)。
01/28版 @livingtech,我认为我实现了你所说的,除了“有一个洞”之外。我的代码在简单阶段没有孔,当俄罗斯方块块只有两个块时(是的,两个正方形,水平或垂直连接),但在3平方的俄罗斯方块,我会得到洞。我只是测试了1000次跑步,我会得到一个没有洞。所以我肯定需要一些机制来检查下一个方格是否是一个单身。
答案 0 :(得分:1)
我一直试图为我的游戏做同样的事情。虽然我是初学者,但我正在使用XNA
和C#。
但我试图解决的方法是:4x6 grid array
--y123456
X1-000000
X2-000000
X3-000000
X4-000000
下面,
<强>算法强>
我的设置有点不同。但这是我随机俄罗斯方块引擎的基础。
我还发现制作它真的有助于制作白板并绘制网格图并用坐标标记。
答案 1 :(得分:0)
因为你的主板是8 * 8,我想你可以使用int64代表主板。 int64的每个位表示特定网格是否已填充。
答案 2 :(得分:0)
实施俄罗斯方块是我的一个爱好。首先在Windows / C中实现它。然后在Perl / Tk!我在Obj-C / Cocoa(Mac)中做的最后一次实现。在所有情况下,游戏逻辑都是相同的。只有UI内容会发生变化。我分别处理每个小盒子,并有一个二维数组,其中包含板上每个“设置”框的存在(和颜色)。我使用的标准板尺寸是10箱宽20箱高。
另外,我会跟踪“掉落”的部分:它的位置和它是什么样的部分。基于计时器,尝试使片断下降。如果已经设置了“掉落”件掉落的任何盒子,则停止掉落片并将片件盒添加到电路板的“设置”部分。创建一个新作品,然后重新开始。
它可能不是实现它的最佳方式,但它在我的头脑中是有意义的。从纯粹的OO角度来看,滴件的每个形状都可以是通用形状类的子类。覆盖检查形状是否可以掉落的函数,形状中各个框的偏移等等。
答案 3 :(得分:0)
我认为还没有人对你的问题#2进行了尝试,所以我将概述我会做什么。
设定:
迭代:
答案 4 :(得分:0)
如果这是实际的,几个月前我在Objective-C上写了测试tetris app https://github.com/SonnyBlack/Test-Demo-Tetris。我认为我的算法不是很好,但它工作。 =)