首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从给定的网格生成俄罗斯方块

如何从给定的网格生成俄罗斯方块
EN

Stack Overflow用户
提问于 2013-01-26 04:06:43
回答 5查看 2.5K关注 0票数 1

一开始我认为我的问题应该被问到,但我没有找到我想要的。

我正在开发的这个iOS应用程序的一个元素是将一个8x8网格分解成俄罗斯方块块(每个块由4个块组成)。我有两个特别的问题:

  1. 在目标C中表示俄罗斯方块的最佳方法是什么?
  2. 将网格呈现为随机的俄罗斯方块的算法是什么(以及以后如何检查两块是否合在一起)。

01/28 @livingtech的版本,我想我实现了你所说的,除了“有一个洞”的意义。我的代码在简单的阶段没有孔,当俄罗斯方块只是两个块(是的,两个正方形,水平或垂直连接),但在3平方俄罗斯方块,我会得到洞。我刚刚测试了1000次跑步,我会得到一个没有洞。所以,我肯定需要一些机制来检查下一个正方形是否是一个单例。

EN

回答 5

Stack Overflow用户

发布于 2013-03-13 03:08:40

我一直在努力为我的比赛做同样的事。虽然我是一个完全的初学者,我使用的是XNA和C#。

但我尝试的方式是:4x6 grid array

代码语言:javascript
运行
复制
--y123456
X1-000000
X2-000000
X3-000000
X4-000000

这里,

  • 0表示没有块。
  • 1定义一个块

算法

  1. 首先取数组中的前0(左上角),然后随机选择0或1。
  2. 根据x1/x2-y1/y2随机选择坐标,决定1还是0。
  3. 如果为1,则根据放置该1的位置确定协调一致。
  4. 如果是x2 y1上的1,那么决定1是否应该继续下一个接触坐标。
  5. 如果您只需要在哪个坐标下进行代码处理,而哪个坐标没有,那么逻辑就会滚过。

我的设置有点不同。但这是我的随机俄罗斯方块引擎的基本基础。

我还发现,这样做确实有助于有一个白板,并绘制网格和标签与您的坐标。

票数 1
EN

Stack Overflow用户

发布于 2013-01-26 05:24:29

既然你的板是8*8,我想你可以用int64来表示这个板。int64的每个位表示是否填充了特定的网格。

票数 0
EN

Stack Overflow用户

发布于 2013-01-26 07:46:38

实施俄罗斯方块是我的爱好。首先在Windows/C中实现它,然后在Perl/Tk中实现它!最后一次实现是在Obj/Cocoa (Mac)中完成的。在任何情况下,游戏逻辑都是一样的。只有UI才会改变。我分别对待每个小盒子,并有一个二维数组,其中包含每个“设置”盒的存在(和颜色)在板上。我使用的标准板尺寸是10盒宽20箱高。

另外,我会跟踪“掉落”的部分:它的位置和它是什么类型的。在计时器的基础上,试着让碎片掉下来。如果已经设置了“丢弃”部分的任何框,则停止丢弃该段,并将该块框添加到板的“设置”部分。创建一个新的片段,然后重新开始。

这可能不是实现它的最佳方式,但在我的头脑中是有意义的。从纯OO的角度来看,每一个丢弃片段的形状都可以是泛型形状类的子类。重写函数,这些函数检查形状是否可以拖放,形状中单个框的偏移量等等。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14533762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档