Scratch贪吃蛇游戏制作关键笔记.docx
- 文档编号:15431272
- 上传时间:2023-07-04
- 格式:DOCX
- 页数:13
- 大小:535.01KB
Scratch贪吃蛇游戏制作关键笔记.docx
《Scratch贪吃蛇游戏制作关键笔记.docx》由会员分享,可在线阅读,更多相关《Scratch贪吃蛇游戏制作关键笔记.docx(13页珍藏版)》请在冰点文库上搜索。
Scratch贪吃蛇游戏制作关键笔记
Scratch贪吃蛇游戏制作笔记
由于信息技术课程采用了新教材,开始涉及Scratch内容,被迫开始学习Scratch使用。
作为编程入门小软件,上手还是比较容易,但像玩出些花样还是有点难度。
使用脚本控制角色办法,与按键精灵有点相似。
上了一次培训课后,萌生了做一种贪吃蛇游戏想法。
本文记述了本次制作游戏过程。
一、初探
本来觉得这样小游戏应当还是蛮简朴。
蛇头:
通过“事件”中按键模块使用上下左右来控制蛇头面向090180-90四个角度。
在碰触苹果颜色时,做一次广播get。
苹果:
通过“事件”中接受广播模块,使用“动作”中“移动到x y ”,在x和y中加入“数字和逻辑运算”中“在 到 间随机选一种数”,分别填入舞台宽度和长度:
“-240 240”、“-180 180”。
通过这些感觉,这个游戏大某些就完毕了,基本上就已经可以玩了。
瞬间,很有成就感。
然而,真正麻烦才刚刚开始。
蛇身某些才是本游戏真正难点,难到主线就没有想法。
二、各种想法
1.在不知所措点来点去时,看到了一种叫“克隆”模块,觉得这个或许有用,蛇头克隆自己跟随,或许就可以实现了。
在蛇头接受“get”广播时,克隆自身。
然后跟随自己。
2.也在网上找了找,发现这个贪吃蛇游戏,出当前初中课程中,简朴瞄了几眼,在其中一种网页中有提到使用“画笔”。
或许有用吧
3.在Scratch官网上还看到了,已经做好实例,很完整,并且尚有三种难度可选。
但是看到茫茫多角色和茫茫多脚本就不想看下去了。
还是自己再研究研究吧。
三、跟随
蛇头
“如何让一种角色跟着另一种角色”这个问题
我想了好久。
得出第一种结论是“延迟执行动作”。
因此初期想法是,在按下方向按键时,第二个角色延迟执行。
初期脚本如上面两个图,设定了全局变量delay调节延迟时间,局部变量t预期作用是在克隆之后加1,以增长延迟时间(其实,还没有拟定克隆之后t是初始值还是当前值,日后试过才懂得是当前值)。
蛇身脚本中,在按下方向键后,延迟了一会儿。
在只有这两个角色时候,跟随效果还是不错。
但是问题多多,例如无法适应迅速操作,特别是日后增长了克隆模块后,经常会有某些蛇身,提前或者延迟了拐弯时间,以至于蛇身支离破碎。
第二个想法是,跟随就是“面向主体移动”。
直接使用“动作”中“面向”这一模块,免除延迟,让蛇身与蛇头保持同样速度,只在蛇身太接近蛇头时候,让蛇身放慢速度再次拉开距离(拐弯时会缩短距离)。
蛇头蛇身
食物
同样有局部变量t在克隆之后加1,但是本来全局变量delay延时,在这里变成了全局变量d距离。
由于无法通过“面向”这一模块跟着前一种蛇身,因此只能是所有蛇身都跟着蛇头,只是距离不同。
其实,我是蛮喜欢这个效果,在转弯时候,蛇身弧线跟着蛇头,看起来自然一点。
但是,同样也有问题:
在蛇身增长时,蛇头直线运动时,背面蛇身都是歪着平移,整体看起来像是在水上漂,而不是爬;此外,可以想象当蛇身数量增长到一定期候,最后一截蛇身到蛇头距离超过了舞台宽度一半时,就会浮现各种重叠。
如果能让后一段蛇身跟着前一段蛇身就好了,哎~
第三个想法,跟随是“再一次走过前任走过路”。
这样状况下,一方面要做就是记录前任走了哪些路。
直线路,没什么好记录,重点记录是在哪里拐弯,拐向了哪边。
于是这里就用到了链表。
要保存数据有拐弯时X坐标、Y坐标及方向,因此用了三个链表。
蛇头在拐弯时写入链表,最后一截蛇身(蛇尾)在拐弯后删除链表第一项。
局部变量t(相称于是蛇身编号),及全局变量tail(每多一截蛇身就加1)来判断与否是蛇尾。
同步为了以便控制,增长了一种flag变量,这样就可以只用空格键来控制游戏开始和结束。
蛇头
在这里尝试了使用新建模块功能,新建了一种模块用来储存拐弯点X、Y坐标及方向。
蛇身
蛇身在移动过程中判断与否到达了蛇头拐弯点,如果到达就开始拐弯。
同步,蛇身也通过对比局部变量t和全局变量tail来判断自己与否是蛇尾,如果是,那么就删除三个链表第一项。
在接受到广播get之后同样通过比对t和tail来判断与否蛇尾,仅蛇尾克隆自身。
做到这里开始自以为已经完毕了所有规定。
但是在运营过程中,还是浮现了某些问题:
在某个条件下会浮现蛇头和蛇身分离状况。
自以为脚本没有错误,把这个问题归结为软件性能和自家破电脑性能问题。
在参观了网上例子之后,发现游戏中运营了60各种角色,茫茫多脚本都毫无压力时,才开始思考“自家脚本是不是有问题?
”。
其实,问题很明显地存在着:
每次判断蛇身与否到达拐弯点,都是通过比对链表第一项,因此当第一节蛇身已经完毕了第一次拐弯而蛇尾未完毕时,此时链表第一项仍存储着第一次拐弯信息,如果此时已经开始了第二次拐弯(信息储存在链表第二项),第一节蛇身会由于无法比对到第二次拐弯点而脱离。
解决这个问题,其实很简朴,只要在蛇身脚本中增长一种局部变量记录每一种蛇身拐弯次数就可以。
只是这样就不能删除链表里信息了,看着链表越来越长,不爽。
犯这个错误因素,也大概是一心想着要删除链表里信息。
蛇身
但是,当前依然无法死心,想着要删除链表里信息。
固然还是有办法:
1.在删除链表信息后做一次广播,让所有局部变量c都减1。
2.再加几种变量。
下面图展示是第二种办法,增长全局变量l代表蛇头拐弯次数,局部变量c代表每一种蛇身拐弯次数。
在保持删除链表里项状况下,l-c永远都不大于链表长度。
由于是在链表末尾增长数据,而在链表首部删除数据。
因此只要每一种蛇身都是比对(链表长度-(l-c)+1)项即可。
得出这个式子后,再去想为什么是这样一种式子就再也想不清晰了。
反正这样游戏就正常运营就是了。
蛇头
蛇身
在每一次拐弯时,全局变量l加1,记录拐弯次数;蛇身成功拐弯后局部变量c加1,记录蛇身拐弯次数。
在l到达数值上限之前都没有什么问题了,但是l也许到达数值上限吗?
这样一种贪吃蛇游戏就算是完毕了。
至于那些什么,碰撞死亡某些,已经没什么心情去做,就这样吧。
虽然最后还是有某些小问题,例如:
在0.2秒内持续迅速地多按几次方向键,蛇身就会脱离蛇头。
但这属于恶意玩家行为,“我做不是游戏,是情怀”这种小事不予考虑。
四、画笔涂抹身段
在自以为已经完毕贪吃蛇游戏,而对问题不论不顾阶段,也尝试过运用画笔来制作。
总还说还是用画笔来实现比较以便呀。
只要在移动过程中,添加一种“落笔”,小蛇就可以无限增长了。
但是咱并不需要一种无限长小蛇。
缩短它才是一种问题。
依照上边研究跟随经验,我办法是:
在后边跟随一种蛇尾运用背景色来擦除蛇身。
蛇头
蛇尾
同样运用链表来控制蛇尾跟随,每次接受到广播get,延时一次。
用画笔话虽然小蛇整个看起来像一条大青虫,但是制作简朴了诸多,毕竟不用考虑这样多克隆体联动问题。
五、最后
展示一下制作出来效果图
两个图分别是克隆版和画笔版,用了内置beachball做蛇头,beaeball做蛇身和蛇尾。
两个版本都隐藏了链表,其她变量都显示着(链表很长会遮住苹果),可以看到克隆版里有更多变量。
画笔版中某些残影,那是由于两个ball中心也许有点不同,在擦除过程中会留下一点,看起来还是蛮带感,因此没有改。
在设想中还想自己做几种矢量图,做一种颜色特异蛇吐信来吃苹果。
当前,只存在于设想中了。
尚有某些不完整地方,例如:
容许调头,碰撞了边沿没有解决……
想传到官网去但是网络不太好使。
两个源文献XX盘地址:
自从做了小学信息技术教师,基本上就与编程隔绝了。
弄来弄去都是和office打交道,只是偶尔运用按键精灵作弊,写某些异常简朴脚本。
因此,遇到这个小游戏制作成了一种不小挑战。
怎么说还是比较有成就感,以至于无法抑制地写了这篇笔记。
制作过程中还是遇到了诸多其她小问题,想起大学期间编程也有类似感觉,主体算法什么都不是大事,反倒是各种小细节惹人烦躁不安,有时一种分号都能让人纠结半天。
在制作过程中,本来是想直接克隆蛇头,但是广播出了问题;刚开始没有考虑只克隆蛇尾,成果吃一种苹果就长了好多……
除了声音模块,也算是体验了各种各样模块,有各种各样功能。
但是,有时候有些模块功能确是不尽人意,如果能自己添加或修改模块就更好了。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Scratch 贪吃 游戏 制作 关键 笔记