贪吃蛇小游戏大全(贪吃蛇下载链接官方)

一个贪吃蛇,就着上下左右按键已经模糊的按键就能玩一个下午,那是童年美好的记忆。或许我们再也找不回当初那简单的快乐,但愿你长成一个优秀的大人,也愿你永远保有童真,今天给大家分享一下制作过程!

贪吃蛇小游戏大全(贪吃蛇下载链接官方)

为了最简洁化复刻贪吃蛇游戏,此次使用ST语言编程,将GX Work3缓存存储器监视界面当作游戏界面,使用初始化赋值功能,语句也尽量简略,最终八行代码实现完整的贪吃蛇游戏体验。

效果展示

图中展示为倍速播放后效果,触摸屏只当作方向按键使用,也可以直接再GX Work3中更改方向软元件的值来调整方向,不过这操作就很反人类了。

实现原理

贪吃蛇程序核心逻辑如下:

2.1、游戏界面分辨率是16*21,蛇和食物都是由1个bit点表示,食物会闪烁;

2.2、初始化时蛇的长度是1,蛇初始的移动的方向是上,用一个一维数组aSnakeData代表蛇身数据,用wSnakeLength表示蛇身长度,数组的第一个坐标是蛇头位置,aSnakeData[wSnakeLength]表示蛇尾位置;

2.3、正常移动时根据移动方向将新蛇头位置置位,将蛇尾位置复位,如果蛇吃到了食物,即蛇头的坐标等于食物的坐标,此次不复位蛇尾,就产生了蛇长度增加的效果;

2.4、食物被吃掉后,随机在空的位置再生成一个;

2.5、当蛇撞上自身或墙壁,游戏结束,用新蛇头的位置是否已被置位来判断的。

程序调试

//蛇身移动MOVP(SM415,(aSnakeData[0]-K16)*BOOL_TO_WORD(wDirection=0)+(aSnakeData[0]+K16)*BOOL_TO_WORD(wDirection=1)+(aSnakeData[0]+K1)*BOOL_TO_WORD(wDirection=2)+(aSnakeData[0]-K1)*BOOL_TO_WORD(wDirection=3),wSnakeHead);WSFLP(SM415,wSnakeHead,K50,K1,aSnakeData[0]);//是否吃到果实DMOVP(SM415ANDwSnakeHead=wFruitCache,WORD_TO_DWORD(wSnakeLength+K1),D31);//果实新生FMOV(MEF(SM415)ANDINV(aDisplay[ABS(SD420)MODK304])ANDwFruitCache=K0,ABS(SD420) MOD K304,K2,D32);//重新开局,是否吃到墙壁自己BMOV(SM402ORMEP(SM415ANDaDisplay[wSnakeHead]ANDwFruitCache>K0),D100,K90,D0);//蛇尾消除RST(MEF(SM415)ANDwFruitCache>K0,aDisplay[aSnakeData[wSnakeLength]]);//蛇头置位SET(MEF(SM415),aDisplay[wSnakeHead]);//果实闪烁OUT(wFruitCache>K0 AND SM412,aDisplay[wFruitCache]);

免责声明:本文转自网络,版权归原作者所有,如涉及作品版权问题,请及时与我们联系删除,谢谢!

本文(图片)由作者(投稿人)自主发布于本网站 ,其内容仅代表作者个人观点,并不代表本站同意其说法或描述,其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性和及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容(包含文中图片的版权来源),本站仅提供信息存储服务,不承担前述引起的任何责任。根据《信息网络传播权保护条例》,如果此作品侵犯了您的权利,请在第一时间通知我们(文章来源下方“侵权申诉”按钮)或将本侵权页面网址发送邮件到xyyseo@qq.com,我们会及时做删除处理。

评论