这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » Let'sDo第2期任务——《彩屏贪吃蛇》成果帖

共1条 1/1 1 跳转至

Let'sDo第2期任务——《彩屏贪吃蛇》成果帖

菜鸟
2024-08-19 10:52:28     打赏

目录

Let'sDo第2期任务——《彩屏贪吃蛇》开箱帖

Let'sDo第2期任务——《彩屏贪吃蛇》过程帖

Let'sDo第2期任务——《彩屏贪吃蛇》成果帖

Let'sDo第2期任务——《彩屏贪吃蛇》背景音乐及音效-个性化

板子系统图结构如下,PICO插到PIOO OMNIBUS (DUAL EXPANDER)双联扩展板扩展板中间槽位,Waveshare微雪的Pico-LCD-1.14插到扩展板的DECK1,DECK2插针用来扩展音频,27管脚作为PWM输出接到蜂鸣上。

image.png

程序结构如下

程序运行后首先进行初始化,对按键初始化LCD_1IN14_KEY_Init,液晶初始化LCD_1IN14_Init,LVGL 初始化LVGL_Init,LVGL 各页面及部件初始化Widgets_Init。前面三个初始化时demo中自带的未作修改,Widgets_Init中为贪食蛇四个页面的初始化。页面1是logo图片,页面2为选关界面,页面3为贪食蛇游戏页面,页面4为文本显示页面,显示过关,游戏结束画面。

初始化完成后进入主循环,LCD_1IN14_Read_KEY函数读取按键,handle_key_press函数对按键进行处理,游戏主要功能都在这个函数里面。

呼吸灯代码在handle_key_press函数实现,5ms一个周期,每2.5s左右点亮一次,每次亮80ms

    if (16 >= dat->s_hwCounter) {

        gpio_put(PICO_DEFAULT_LED_PIN, 1);

    } else {

        gpio_put(PICO_DEFAULT_LED_PIN, 0);

    }    

    dat->s_hwCounter++;

    dat->s_hwCounter &= 511;

程序开始运行时在页面1显示logo图片,

image.png

按B键进入页面2选关界面,页面2光标移到关卡处按A键可设置关卡1~8,按B键进入页面3游戏页面。

image.png

在游戏界面过关或游戏结束进入页面4显示关卡数及得分情况,停留1秒后跳转到页面2进行下一关或从新开始游戏。

image.png

程序主要难度在页面2游戏部分,包含一个snake_run游戏运行主函数,处理按键方向,正在上下运动的蛇只能左右转向,正在左右运动的蛇只能上下转向。确定运动方向后根据不同关卡的速度来调用snake_move函数来处理蛇的运动,第一关运动速度慢每300ms调用一次,第二关225ms调用一次,依次类推,第八关运行速度最快,80ms调用一次snake_move函数。

image.png

然后调用draw_snake_food及draw_snake函数来处理蛇及食物的图像。

snake_move函数判断蛇头坐标是否与食物、身体及边界一致。如与食物坐标一致则剩余食物数量减1,蛇身体长度加1,随机生产一个新食物的坐标,如果剩余食物数量为0则过关,跳转到页面4显示通过关卡n及分数,延时0.5s后进页面2然后进入下一关。如与身体或边界坐标一致,则游戏结束,跳转到页面4显示GAME OVER及分数,延时0.5s后进页面2从第一关从新开始游戏。

视频地址: https://www.bilibili.com/video/BV1M8pCeQEy6/?share_source=copy_web&vd_source=771c5bc0a24f31639a426bf66cb9e6c1

固件及源代码 RP2040-LCD-LVGL.zip

https://minkai-shi.github.io/  




共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]