大家好,我是你的好朋友思创斯。今天说一说scratch小游戏2048[通俗易懂],希望您对编程的造诣更进一步.
大家好久不见..这段时间太忙一直没有时间码字,让大家久等了,今天给大家带来的是scratch版的2048。这篇推文有点难,大家慢慢看,可以加我微信(cyz20092347)获取源程序。废话不多说,视频见
是的,就是这样,几年前很火的小游戏2048,游戏的规则很简单,你需要控制所有方块向同一个方向运动,两个相同数字方块撞在一起之后合并成为他们的和,每次操作之后会随机生成一个2或者4,最终得到一个“2048”的方块就算胜利了。
一、流程梳理
-
需要4*4的格子
-
开始时会有三个随机的数字(2、4)出现在不同的位置
-
按方向键控制对应的移动
格子这里很简单,不建议大家直接去使用网上的图片,因为后面数字的移动需要通过坐标去完成,只需要通过画笔画出线条就行了,这个之前的已经讲过啦,不会的可以去翻翻,我们将格子的大小设置为80。
二、数字初始化
接下来我们就要让数字随机的出现在屏幕中,但是这步需要解决三个问题:a、数字的造型
b、三个随机数字,随机为2、4
c、位置随机,且每一个数字位置不同
首先解决a问题,我们可以通过scratch的造型编辑添加数字造型。在添加时,需注意所有的方格大小一致且角色中心位置保持一致。且造型名改为“造型 数字”方便后面使用
接下来解决b问题数字随机范围,因为最开始的数字只会是2或4,那怎么样可以通过随机数得到呢,我们可以使用2*1到2的随机数,然后存到对应的列表中储存,方面后面使用
最后1个也就是问题c位置的随机且位置不重复,我们就需要将每一个数字的坐标记录下来存到列表,然后判定列表中是否有重复:如果没有,则添加进列表,换成合适造型移动到对应的位置,印章;如果重复则再重新添加新的随机位置
三、方向移动控制
这里逻辑比较复杂,以上按键为例:当我按上按键时,所有的数字会向上移动,但是肯定会有个先后顺序,我们暂且规定,上方的数字先进行移动。那么问题又来了,我怎么确定数字所在位置的高低呢?那就需要对数列y进行排序呢,由大到小进行排列。
又因为数列y表示的是格子的坐标,为了保证坐标的准确性,在修改数列y时,也得依据数列y的序号更改数列x及已存在坐标数列,和存储数字的数列
排序后接下来,就是对序号1的数字进行移动了,那么此时还需要判定,是否数字已处于最上方1格:如果是则不移动,跳转到序号2数字;如果不是则需要将数字擦除后移动到上一格。我们可以在当前角色造型里在新建一个有着白色矩形的造型,这样就可以遮盖住数字。移动到上一个也很简单,在原y坐标的基础上加80(格子大小),然后添加到对应的列表中,并保证列表顺序不变。
移动到上方后就可以显示了吗?不不,还需要判断移动到的格子内是否有数字:如果有则继续判断数字是否一致,如果没有则印章
那怎么判断数字是否一致呢?一致时,那么会数字数列中会存在相同的数字,且相同数字的两个序号对应的坐标也相同。那么我们可以先找到我们判定的坐标,然后在找到和坐标相同数字的序号
为什么是第一个?因为我们是从y的高低进行依次判定的,移到上方后碰到数字,那么肯定是在序号在前。找到后再判定两个序号对应的数字数列是否相同:相同则表示两个数字可以相加然后印章,不同则需要回退到原来位置印章。
数字相加时,需要将上方的数字改为,然后重新图章,重新更改数字数列,删除下方数字对应的所有列表项
回退时,需要恢复到原来的坐标位置,更改好之前的对应数列,换成对应造型,图章
四、新增数字
当数字移动后,就会有新的数字出来,但是此时也需要注意,数字大大小范围,以及出现的位置,以及当数字有16个时,就不会有新的数字出现了。
好了,此篇推文就讲到这了,更多的是帮大家梳理思路,大家不用照着我上图片写,我有些程序模块没放全,如果大家对程序有疑问或者想获取源程序可以加我微信交流哦,喜欢可以帮忙点个在看
文章由思创斯整理,转载请注明出处:https://ispacesoft.com/77271.html