查看: 4521|回复: 11

[原创] RT1064 + LVGL 打地鼠游戏

[复制链接]
  • TA的每日心情
    无聊
    2021-12-29 19:06
  • 签到天数: 47 天

    连续签到: 1 天

    [LV.5]常住居民I

    49

    主题

    188

    帖子

    21

    金牌会员

    Rank: 6Rank: 6

    积分
    1392
    最后登录
    2025-3-4
    发表于 2022-3-27 22:54:19 | 显示全部楼层 |阅读模式
    (一)屏幕
    自从之前从海鲜市场淘到一些便宜好用的屏幕,现在一看到图形界面就来劲。这次就用一个50+20运费淘来的7寸屏搞个打地鼠游戏。
    RGB接口,之前自行摸索了一番,搞清楚了引脚定义,画了个转接板,把触控也引出来了。


    捡屏幕第一弹——5寸480x854 ST7701屏

    这里面提到了还有一个7寸屏幕没有分享出来,今天就拉它出来遛遛。
    IMG_20220327_225058_2.jpg IMG_20220327_225026_2.jpg

    (二)界面
    素材直接从gitee上搬了这个老哥的程序;不过他是QT C++写的,除了图片之外没有其他可借鉴的地方:


    图片来源

    2022-03-27_22-48-43.png
    用gui-guider简单创建个框架
    六个坑位用来打地鼠;
    下面进度条用来控制地鼠冒头的速度;
    把图片加进gui-guider直接生成位图,不需要自己操心矢量图的问题。

    (三)动作
    在gui-guider里增加两个event,一个是图片按下的event,一个是进度条调整的event;
    从littlevgl_support里面把点击位置引出来,让锤子跟随点击走。

    1. static void screen_img_1event_handler(lv_obj_t * obj, lv_event_t event)
    2. {
    3.     int i=0;
    4.     lv_obj_t *pressImg;
    5.     for(i=0; i<6; i++)
    6.     {
    7.         if(obj==g_imagePoint[i])
    8.         {
    9.             pressImg = g_imagePoint[i];
    10.             break;
    11.         }
    12.     }
    13.     if(i==6) return;


    14.     switch (event)
    15.     {
    16.     case LV_EVENT_PRESSED:
    17.     {
    18.         if(g_isFlag[i]==1)
    19.             lv_img_set_src(pressImg, &_beat_alpha_100x100);
    20.         lv_img_set_src(g_screen_img_pg, &_chui_down_alpha_100x100);

    21.         lv_obj_set_pos(g_screen_img_pg, g_touch_x-50, g_touch_y-50);
    22. //        lv_obj_set_pos(g_screen_img_pg, last_x, last_y);
    23.     }
    24.         break;
    25.     case LV_EVENT_RELEASED:
    26.     {
    27.         lv_img_set_src(g_screen_img_pg, &_chui_up_alpha_100x100);
    28.     }
    29.         break;
    30.     default:
    31.         break;
    32.     }
    33. }


    34. static void screen_slider_1event_handler(lv_obj_t * obj, lv_event_t event)
    35. {
    36.     switch (event)
    37.     {
    38.     case LV_EVENT_VALUE_CHANGED:
    39.     {
    40.         g_delay_time = lv_slider_get_value(obj);
    41. //        printf("Value: %d\n", g_delay_time);
    42.     }
    43.         break;
    44.     default:
    45.         break;
    46.     }
    47. }

    48. void events_init_screen(lv_ui *ui)
    49. {
    50.     for(int i=0; i<6; i++)
    51.     {
    52.         lv_obj_set_event_cb(g_imagePoint[i], screen_img_1event_handler);
    53.     }
    54.     lv_obj_set_event_cb(ui->screen_slider_1, screen_slider_1event_handler);
    55. }
    复制代码


    (四)效果
    首先搞个仿真,在QT上把lv_game加进去,main函数里面设置初始化:
    1.     lv_ui guider_ui;
    2.     setup_ui(&guider_ui);
    3.     events_init_screen(&guider_ui);
    复制代码


    循环里:
    1.     int t_counter=0;

    2.     while(1) {
    3.         /* Periodically call the lv_task handler.
    4.          * It could be done in a timer interrupt or an OS task too.*/
    5.         lv_task_handler();
    6.         usleep(5 * 1000);

    7.         t_counter++;
    8.         if(t_counter>=20*get_delay_time())
    9.         {
    10.             set_img();
    11.             t_counter = 0;
    12.         }
    13. }
    复制代码


    运行效果:
    2022-03-27_22-48-12.png
    仿真工程:Lvgl_Simulator_Qt


    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2025-8-8 16:43
  • 签到天数: 1504 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    97

    主题

    4692

    帖子

    12

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    10093
    最后登录
    2025-8-8
    发表于 2022-3-27 23:22:54 | 显示全部楼层
    楼主这个真棒啊

    唉,我又只能争第二了
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    4 天前
  • 签到天数: 1868 天

    连续签到: 2 天

    [LV.Master]伴坛终老

    203

    主题

    3万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    112694
    最后登录
    2025-8-17
    发表于 2022-3-28 08:29:41 | 显示全部楼层
    不错哦~~
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 10:40
  • 签到天数: 2402 天

    连续签到: 111 天

    [LV.Master]伴坛终老

    84

    主题

    2万

    帖子

    3

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    22319
    最后登录
    2025-8-20
    发表于 2022-3-28 10:07:08 | 显示全部楼层
    不错不错,向大佬学习,我也去搞个打地鼠
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 10:39
  • 签到天数: 1194 天

    连续签到: 2 天

    [LV.10]以坛为家III

    6

    主题

    7129

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    9301
    最后登录
    2025-8-20
    发表于 2022-3-28 10:22:12 | 显示全部楼层
    66666,支持支持
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-7-11 08:53
  • 签到天数: 301 天

    连续签到: 2 天

    [LV.8]以坛为家I

    3920

    主题

    7538

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    39928
    最后登录
    2025-8-20
    发表于 2022-3-28 10:27:46 | 显示全部楼层
    打地鼠都出来了,哈哈哈,厉害
    qiandao qiandao
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-5-7 08:45
  • 签到天数: 279 天

    连续签到: 1 天

    [LV.8]以坛为家I

    114

    主题

    1314

    帖子

    29

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    11066

    热心会员

    最后登录
    2025-8-17
    发表于 2022-3-28 14:07:46 | 显示全部楼层
    老哥手上官板不少啊,1064也有,游戏好评
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2021-12-29 19:06
  • 签到天数: 47 天

    连续签到: 1 天

    [LV.5]常住居民I

    49

    主题

    188

    帖子

    21

    金牌会员

    Rank: 6Rank: 6

    积分
    1392
    最后登录
    2025-3-4
     楼主| 发表于 2022-3-28 19:43:06 | 显示全部楼层
    az158 发表于 2022-3-28 14:07
    老哥手上官板不少啊,1064也有,游戏好评

    还有个LPC54628,不过跑800x480的LVGL就有些吃力了
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    昨天 11:43
  • 签到天数: 2105 天

    连续签到: 3 天

    [LV.Master]伴坛终老

    65

    主题

    8451

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    14288
    最后登录
    2025-8-20
    发表于 2022-3-29 09:18:15 | 显示全部楼层
    大佬带我飞。。。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-7-11 08:53
  • 签到天数: 301 天

    连续签到: 2 天

    [LV.8]以坛为家I

    3920

    主题

    7538

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    39928
    最后登录
    2025-8-20
    发表于 2022-3-29 09:32:36 | 显示全部楼层
    day_day 发表于 2022-3-28 19:43
    还有个LPC54628,不过跑800x480的LVGL就有些吃力了

    那LPC54628最高能跑多少的LVGL
    qiandao qiandao
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-8-21 06:50 , Processed in 0.115543 second(s), 28 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表