这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 【贪吃蛇小游戏】成果贴-贪吃蛇小游戏

共2条 1/1 1 跳转至

【贪吃蛇小游戏】成果贴-贪吃蛇小游戏

工程师
2024-08-18 20:51:37     打赏

基于彩屏驱动函数(已经实现贪吃蛇向右移动),实现贪吃蛇上下左右移动和 实现贪吃蛇吃食物增加长度和撞边界结束游戏的功能,实际上都是属于贪吃蛇游戏的具体功能的实现了,在这里我们需要首先了解一下现有资源,课程提供的里面主要已经实现的功能包括,屏幕的的初始化和贪吃蛇向右移动。

屏幕的初始我们简单了解一下:

图片.png

通过SPI进行的通信,这种通信方式在屏幕控制中还是比较常见的,不知道屏幕的具体资料,不过这种小屏幕一般用的比较多的就是7735系列的芯片,这方面就简单了解一下,因为一般的驱动工程中已经实现了,大点的绘制是通过LCD_draw_block(uint16_t x,uint16_t y,uint16_t w,uint16_t h,uint16_t color)进行了,这个函数实际上绘制就是一个单色的矩形(本次贪吃蛇的身体是个10*10的正方形)连在一起的时候不太方便看到的个体,所以这里准备弄个空心的回来表示单节身体:

void draw_snake(){
        uint16_t i;
        LCD_1IN3_Clear(GLCD_COLOR_BLACK);
        for(i = 0; i < eat_snake.snake_body_len; i++){
                LCD_draw_block(eat_snake.snake_body[i].iX ,eat_snake.snake_body[i].iY,eat_snake.snake_body_width,eat_snake.snake_body_width,eat_snake.snake_body[i].color);
                LCD_draw_block(eat_snake.snake_body[i].iX+2 ,eat_snake.snake_body[i].iY+2,eat_snake.snake_body_width-4,eat_snake.snake_body_width-4,GLCD_COLOR_BLACK);
        }
        LCD_draw_block(eat_snake.snake_food.iX ,eat_snake.snake_food.iY,eat_snake.snake_body_width,eat_snake.snake_body_width,eat_snake.snake_food.color);

}

实际上就是在绘制完正方形在其中回个其他颜色的小正方形:

如何实现速度的变化呢,这里是通过:

if(timer_cnt >= eat_snake.snake_speed){
    snake_run();
    timer_cnt = 0;
}

也就是贪吃蛇的刷新速度,这里是通过1ms的延时进行各种判断,这样也会兼顾按键判断的需求;

然后在贪吃蛇的吃食物的操作中进行:

if(eat_snake.snake_body_len >= 10){
    snake_init();
    if(eat_snake.snake_speed >= 200)
    eat_snake.snake_speed -=100;

}

初始是1s,然后每一回合减少0.1s,当然了也不能无限制减少的。

咱们看一下成果视频吧!

        【Let's doDIY第二期成果视频】 https://www.bilibili.com/video/BV1quWPedE6H/?share_source=copy_web&vd_source=2176e73645ba9710d1c29e12a1f03ada





关键词: 成果贴    

专家
2024-08-19 08:56:34     打赏
2楼

弄得挺快!赞!


共2条 1/1 1 跳转至

回复

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