设为首页收藏labplus社区产品资料库
151
积分值+2
64
掌控币+1
0  关注
79  粉丝
54  帖子
luyi
2020年03月02日

#基础使用#掌控游戏系列之贪吃蛇1

     由于疫情影响,宅在家里,突然想写一系列掌控板的游戏出来玩玩,于是贪吃蛇,算是入门游戏了。贪吃蛇很常见,看似简单,却蕴含非常丰富的游戏基础知识。

接下来,会继续写一些掌控板的游戏,欢迎大家关注!


重要知识点:

(1)列表

(2)字典

(3)队列(数据结构)

1. 蛇的构成

使用列表she存放一整条蛇,而蛇又有若干节蛇身组成。每一节蛇身都有它的位置和方向,固定义字典sheshen表示一节蛇身,xx表示该节蛇身的横坐标,yy表示该节蛇身的纵坐标,direc表示该节蛇身的运动方向。

当然,整条蛇拥有一个共同的移动速度speed,速度,我们设计游戏关卡的时候在做讨论。

(1)假设一条长5节的蛇,可以分为一下5个部分


蛇头sheshen0,控制着整条蛇的方向,蛇的其他部分依次跟着自己的上一节操作。

(2)蛇身字典


(3)蛇列表


2. 蛇移动的方向

蛇移动的方向有4个,即右上左下,分别用1-4表示。


      实际上,游戏中蛇不能直接后退。因此,蛇只能往前或左右移动。我们设置N、T、P、H这4个按键控制蛇头移动的方向。

列表she的第0项为蛇头,蛇头字典中direc键代表方向,假如需要蛇向右移动,则蛇当前的方向不能向左,即不能为3.


3. 食物

    食物也是一个4*4px的闪动方格,它出现的位置是随机的,但不能出现在蛇头当前位置。

    定义变量foodState表示食物的状态:1显示和0隐藏。

    定义变量xFood作为食物所在的横坐标,数值是0~123之间的随机数。

    定义变量yFood作为食物所在的纵坐标,数值是0~59之间的随机数。

    那么,为什么是123和59这两个数呢,因为食物大小为4,而OLED显示屏的大小为128*64,所以取127-4和63-4。


    设置定时器1,用于显示食物。当前食物状态为1时,才显示食物,并且将其状态修改成0。如果状态为零,直接不显示,并将其状态值修改成1。


4. 游戏主循环控制

      设置gameStart变量,该变量为“真”时,启动游戏主循环,否则停止游戏循环。游戏主循环如下图标志所示。


5. 绘制整条蛇。

先获取蛇的长度,再由蛇头到蛇尾一节一节绘制蛇身。


6. 闯关成功和闯关失败的判定。

建立函数gradeFun,如果成绩大于5,则闯关成功,可以进入下一关。此时,停止游戏主循环,停止计时器1食物的生成。


以上仅仅是贪吃蛇基础内容,接下来还会设置游戏关卡,使贪吃蛇游戏更精彩。欢迎关注

文件名:掌控游戏之贪吃蛇1.zip

5

点赞

1544 次阅读7 条评论5 人赞1 人订阅
7条评论