投稿  收藏 
Scratch版俄罗斯方块

俄罗斯方块是由阿列克谢·帕基特诺夫于1984年6月发明的休闲游戏。俄罗斯方块原名是俄语Тетрис(英语是Tetris),这个名字来源于希腊语tetra,意思是“四”,而游戏的作者最喜歡网球(tennis)。于是,他把两个词tetra和tennis合而为一,命名为Tetris,这也就是俄罗斯方块名字的由来。玩法主要是由不同形状的方块从上面不断落下,填满一排时就会消除并增加分数,方块摞到顶时游戏结束。这次我们用Scratch制作俄罗斯方块游戏,感受自己成为这款游戏的创造者的兴奋吧!

一、程序思路


  1.角色背景绘制与背景格的生成
  2.角色控制与运动以及判断输赢
  3.消除方块与方块回填

二、制作过程


  1.角色背景绘制与背景格的生成角色“底板格”大小是24×24,由3个造型组成,绿色、黄色两个相同大小的格子造型;一条横线的造型,3个造型的轮廓粗细为10。
  角色“方块”采用黄色填充,大小也是24×24,本文总共由7个造型组成,根据24×24的大小的格子来组合成7个不同的造型图案。
  角色“下一步”是复制角色“方块”,然后改了填充颜色为黑(如图1)。
Scratch版俄罗斯方块
 

  背景格生成程序定义了两个函数:分别为“行”和“游戏背景”。
  角色“底板格”的“行”函数,因为角色“底板格”绿底背造型为24×24的大小,所以往x轴的方向移动24步为一个格子距离,背景的大小为10×15格,一行格子的数量为10个。由此可以把函数“行”定义为:换成角色“底板格”绿底背的造型,图章一次后将x坐标增加24重复10次。
  角色“底板格”的“游戏背景”函数:每开始一次游戏,我们需要把上次游戏的图章部分删除掉,给角色“底板格”一个起始坐标值,同时隐藏该角色“底板格”,因为我们只需要看到图章部分,角色在舞台显示有点格格不入,所以隐藏掉。开始执行函数“行”,那么一排就生成好了,然后回到x轴方向的原点,把y轴增加-24,和函数“行”一起重复执行15次,10×15的大小的背景格就瞬间生成了。
  线程:点击绿旗后执行函数“游戏背景”,背景瞬间生成(如图2)。
Scratch版俄罗斯方块
 

  2.背景绘制
  绘制背景时注意背景的黄色边框线颜色跟角色“方块”颜色要相同,给角色“方块”控制左右移动,旋转,到达底部时图章的判断(如图3)。
Scratch版俄罗斯方块
 

  3.角色控制与运动
  新建三个全局变量:“造型”“游戏控制”“分数”。
  角色“方块”:方块从正中间向下掉,掉落的造型是角色“下一步”显示的造型,利用键盘方向键控制角色“方块”的左右移动以及水平翻转。
  方块的下落:方块面向90度的方向,隐藏方块,换成1到7的随机造型,本文角色固定在(-48,172)坐标值上,将变量“造型”设为角色“下一步”的造型编号;重复执行以下脚本:等待0.5秒,显示,将y坐标增加-24,换成变量“造型”的造型。如果碰到舞台底部的黄色,就把y坐标增加24,盖下图章,再次把变量“造型”设为角色“下一步”的造型编号,广播“判断消除”的消息(注:此消息是在角色“背景格”作消格和填充的用途),再次回到原点起始坐标值隐藏该角色(如图4)。
Scratch版俄罗斯方块
 

  方块的移动水平翻转:按下键盘方向键左对应x轴方向,按下就增加-24,如果碰到左边颜色黄那么x轴就增加24;按下键盘方向键右对应x轴方向增加24,如果碰到右边颜色黄那么x轴就增加-24;按下键盘方向键上右旋转90度,碰到颜色黄,说明不够翻转距离,返回90度抵消,相当于减去90度回到原来的度数;按下键盘方向键下主要是给角色“方块”下落速度,y坐标增加-24,一直按达到快速下降的原理,如果碰到舞台底部或者角色“方块”的颜色为黄色就把y轴增加24图章该角色造型(如出现bug可以参考下图给一个角色下落区间)(如图5)。
Scratch版俄罗斯方块
 

  角色“下一步”:作用是游戏区域下落的方块提前在舞台的右下方“下一步”那里显示出来。
  具体实现:我们给变量“游戏控制”赋值为0,把角色“下一步”固定在舞台右下方下一步的区域,面向90度的方向,换成1到7的随机造型;重复执行以下脚本——等待角色“方块”的y坐标等于172,换成1到7的随机造型,将变量“游戏控制”增加1,等待0.5秒。(注:本文角色“方块”的y坐标起始值在舞台的y坐标172高度。)
重复执行等待一秒,将变量“游戏控制”设为0。变量具体作用是控制游戏的结束(如图6)。
Scratch版俄罗斯方块
 

  4.判断输赢
  根据变量“游戏控制”来判断。因为角色“方块”是从y坐标172向下掉落的,遇到黄色就会图章自己,自己的颜色也是黄色,如果一直图章到顶部了,变量“游戏控制”就会增加到2(因为变量“游戏控制”重复执行设为0的时间是1秒,而该变量增加1的条件是角色“方块”y坐标值等于172,获取变量“游戏控制”增加的时间是0.5秒,该变量增加到2理论逻辑也就成立)。也就是大于1,那么我们在背景脚本写当变量“游戏控制”大于1时停止所有脚本运行达到游戏结束的功能(如图7)。
Scratch版俄罗斯方块
 

  5.消除方块与方块回填
  当方块填满背景格一排以及多排的时候及时消除填满区域,剩余的方块会落到消除的区域,且X轴的方向不变。
  消除原理——建立变量分数,利用角色“底板格”判断线造型从下往网上侦测,必须要从背景左边x,底部y的方向重复侦测判断15次,因为背景是10×15的大小。如果没有碰到绿色,代表这一排是方块格满的,把变量“分数”增加24,然后用函数“行”把这一排用角色“底板格”的绿底背造型图章完这一排变成背景的底色绿色。
  回填原理——如果碰到绿色,X轴方向增加24,一行是10个格子,重復10次换成角色“底板格”黄色格的造型去背景10×15的区域侦测碰到黄色,如果侦测到有碰黄色一次,就将现有的y坐标值减去变量“分数”的值,回落到消除的地方图章黄色格达到现有方块回填的效果。变量“分数”增加值条件为消除一行增加24,y坐标同时也增加24同步进行,以此类推,所以回填图章的逻辑就是当前y左边值减去变量“分数”值去回填。再次把y坐标增加变量“分数”值上去继续侦测;同理侦测到绿色,那么就要换成“绿底背”的造型,减去y坐标的变量分数值,图章绿底背造型(说明侦测的地方没有黄色格子填充,所以下去图章绿色格子)。又返回上次坐标继续侦测。
  “判断消除”函数,角色“方块”掉落碰到黄色图章后发送判断消息,当角色“底板格”接到角色“方块”消息后执行函数判断消除。角色“方块”每图章一次,角色“底板格”就判断一次消除和回填。达到游戏消除和回填功能。

关 键 词

Scratch

相关教程

提示声明

  • 免责声明:本站资源均来自网络或者用户投稿,仅供用于学习和交流:如有侵权联系删除!

猜你喜欢