所在位置:首页 > 手游攻略 > 俄罗斯方块中的基本逻辑非常简单,如何实现方块的移动、旋转、下落等操作

俄罗斯方块中的基本逻辑非常简单,如何实现方块的移动、旋转、下落等操作

发布时间:2022-08-16 21:02:08来源:网络整理浏览:456

日本魔方的核心玩法非常简单,所以制作起来也不是很复杂。我打算用2篇文章详细解释如何制作日本方块。

明天我们是第一篇,主要讲解法文小方块如何定义小方块,以及小方块如何实现连接、旋转、下落等操作。

1.需求分析

日文框的基本逻辑很简单,但是在介绍之前,先对名词进行识别,避免出现单词不表达意思的现象。

这些小方块是构成容器的基本单位,我们称它们为方块。

它由四个方格组成,用于填充容器,我们称之为大方格和小方格。

存放大小块的地方称为容器。

定义这三件事 然后,我们可以这样描述美式方块游戏。日本魔方主要由一个虚拟容器组成,里面存放着圆形魔方和7种实时下落的大小魔方。

容器的宽度为 10 列填充方块,高度为 20 行。列宽和行高相等,所以容器可以看作是平铺200个正圆形正方形的结果。

每个实时下落方块由4个正圆形方块组成,共有7个固定样式,每个样式都可以旋转,所以理论上最多有28个样式,但有大有小。旋转时样式不变。

7种大小方块可以根据图像替换为7种字母,分别是:S、Z、L、J、I、O、T。

这个大小的方块在落到容器顶部或与其他容器中的方块碰撞时会固定在容器中,然后在容器上方形成一个随机大小的方块,重复原来的落下过程。

当容器内有满行时,整行会被清空,行内的所有方块会依次下降。

2.大小方块的定义

虽然日本小方格的基本单位是方格,所有运算对象都是大小方格,所以这里直接定义大小方格的结构类型。

在定义大小块之前,我们需要定义两个结构,大小块的类型和大小块的旋转状态。

使用前两种类型,可以确定当前大小框的样式。除了样式,由于大小块会按照固定的速率连接,所以这里需要定义大小块的位置信息。有了以下两个成员,大块和小块可以定义如下:

这里之所以没有定义大小方块的下降率是因为所有的大小方块都以相同的速率下降,所以不需要在每个大小方块内部定义一个变量,只需需要在外部定义速率变量。 .

确认了大小方块的结构,我们还有一个问题要解决,就是如何得到大小方块的具体形状。

我的世界填充方块_我的世界怎么填充方块_填充方块

虽然在大小方块上已经定义了类型和状态填充方块,并且没有保存当前小方块的形状,但是为了解决这个问题,我们可以定义一个全局静态字段,该字段的每一项表示一个小正方形,包括重复,一共可以存储28个形状。

短[][];

注意这里,链表的每一项都用一个短类型来表示。

因为size block是由4个block组成的,所以每个size block可以用一个4*4的二维链表来表示。

由于二维字段的每一项只有两种状态,所以可以进一步修改,每一项使用一个位,这样16位就可以描述大小正方形的形状,而16位对应C语言中的数据类型,正好是短的。

虽然方案确定了,但我们还需要确定一个表达规则,即16位字符串的低四位是代表大小块的第一行,还是最后一行,还是列在一侧,或左侧列。

方法有很多种,取一个方便的就行,这里我是这样定义的:

即低四位代表第一行。最后,我们可以找到28个形状对应的每个值:

之后,如果需要在程序中获取块当前大小的形状,只需要使用类似下面的语句:

[i][j]

3.大小块的操作

大方和小方的定义确定,连接就是实现大方的操作。首先是初始化操作:

下一步是连接操作。由于我们使用两个变量来确定大小方块的位置,所以代码逻辑很简单:

不光是联通,大小方格也有通用轮换操作。由于我们已经用table的方法定义了所有小方块的旋转状态,可以直接在这里获取:

不只是里面的那些操作,虽然还有碰撞检查和渲染等操作。我们将在下一章为您详细讨论!

如果你也想学编程,可以来我的s:///?_wv=1027&k=">C语言/C++编程学习基地[点击进入]!

还有免费的(源码、零基础教程、项目实战教学)!

涉及:游戏开发、课程设计、常用软件开发、编程基础、黑客等...