10岁小伙自学C++制作俄罗斯方块游戏,厉害到让你怀疑人生!

俄罗斯方块经典版是一款由俄罗斯人休闲游戏。它于阿列克谢·帕基特诺夫于1984年6月发明的,游戏规则简单,但想玩高分确实很有挑战,也许在现在看来,这款游戏算不得什么,但在当时俄罗斯方块真的是世界闻名!这款经典版也继承了经典的内涵!

先说思路,游戏主要有这么几个功能:

游戏主界面是10*20的格子,每轮随机创建一个形状的方块,总共有6种形状,方块每秒下降1格,遇到障碍无法下降时进入下一轮。方块可以旋转、移动、加速下落,格子界面有一行放满时可消除。游戏的主体是格子界面和6种不同形状方块的交互。编程就是用逻辑处理数据,要先有数据才能处理,因此我们先用数据把格子界面和方块描述出来。

格子界面很简单,是一个10 * 20的整型二维数组,空格子用0表示,否则用1表示。

10岁小伙自学C++制作俄罗斯方块游戏,厉害到让你怀疑人生!_第1张图片

#define BG_WIDTH 10

#define BG_HEIGHT 20

int backGround[BG_HEIGHT][BG_WIDTH] = { 0 };

10岁小伙自学C++制作俄罗斯方块游戏,厉害到让你怀疑人生!_第2张图片

每个方块的数据也是一个二维数组,根据方块的形状可知,用4*4的数组即可放下所有形状的所有方向数据。同样空格用0表示,否则用1表示。例如:

10岁小伙自学C++制作俄罗斯方块游戏,厉害到让你怀疑人生!_第3张图片

主要内容:

  程序中有一个board数组,其中有要显示的部分,也有不显示的部分,不显示的部分都存储1。

  如下图:

10岁小伙自学C++制作俄罗斯方块游戏,厉害到让你怀疑人生!_第4张图片

  shape采用4*4数组(shape)保存。如:

0 0 0 0

0 1 0 0 

1 1 1 0

0 0 0 0

  另外用变量row和column保存shape数组左上角在board中的位置。

  每次下落或左右移动,先对row和column做出改变,然后检测当前row和column下,shape是否重合了为1的格子,如果有重合,就说明shape出界了或者到达下落最低点,则要恢复row和column值。另外,如果是下落,还要将shape放在board上,并产生新的shape。

  旋转时,先对shape数组进行旋转操作,然后检测重合,如果有重合,则反向旋转回来。

声明:本文内容来源于网络,如有侵权请联系删除

 

你可能感兴趣的:(C)