ST MCU Finder
安装免费手机应用,
寻找理想的ST MCU

[GUI] ST自由学习+用TouchGFX做个打地鼠游戏

[复制链接]
1784|21
 楼主 | 2019-4-12 23:34 | 显示全部楼层 |阅读模式
    学习了几天TouchGFX,我就想着做个打地鼠的游戏出来玩玩。说干就干,我先网上找了几张打地鼠的图片资源,然后开始了设计。    首先对游戏规划,计划2个场景,第一个背景图片,加按钮进入游戏。第2个场景设计游戏过程。

    创建项目,第一个场景图片增加个button开始游戏。如图:
QQ截图20190412230253.jpg

    第二个场景找了一个12洞的图片,如图:
QQ截图20190412230859.jpg
   每个洞加一个地鼠图片的按钮Button控件,共12个按钮。通过控制按钮控件的显示和隐藏来模拟地鼠进出。如图:
QQ截图20190412231005.jpg QQ截图20190412231642.jpg QQ截图20190412232101.jpg
QQ截图20190412232558.jpg

增加的代码:
  1. void Screen2View::handleTickEvent()
  2. {
  3.     static int count;  
  4.     static int MouseHole[12];  
  5.     int Hole;

  6.     for(int i=0;i<12;i++)
  7.     {
  8.         if(MouseHole[i])
  9.         {
  10.              MouseHole[i] --;
  11.              if( MouseHole[i] == 0)
  12.              {
  13.                 switch(i)
  14.                 {
  15.                     case    0:
  16.                     button1.setVisible(false);            
  17.                     break;
  18.                     case    1:
  19.                     button2.setVisible(false);
  20.                     break;
  21.                     case    2:
  22.                     button3.setVisible(false);
  23.                     break;
  24.                     case    3:
  25.                     button4.setVisible(false);
  26.                     break;
  27.                     case    4:
  28.                     button5.setVisible(false);
  29.                     break;
  30.                     case    5:
  31.                     button6.setVisible(false);
  32.                     break;
  33.                     case    6:
  34.                     button7.setVisible(false);
  35.                     break;
  36.                     case    7:
  37.                     button8.setVisible(false);
  38.                     break;
  39.                     case    8:
  40.                     button9.setVisible(false);
  41.                     break;
  42.                     case    9:
  43.                     button10.setVisible(false);
  44.                     break;
  45.                     case    10:
  46.                     button11.setVisible(false);
  47.                     break;
  48.                     case    11:
  49.                     button12.setVisible(false);
  50.                     break;
  51.                 }
  52.                 Screen2ViewBase::button1.invalidate();
  53.                 Screen2ViewBase::button2.invalidate();
  54.                 Screen2ViewBase::button3.invalidate();
  55.                 Screen2ViewBase::button4.invalidate();
  56.                 Screen2ViewBase::button5.invalidate();
  57.                 Screen2ViewBase::button6.invalidate();
  58.                 Screen2ViewBase::button7.invalidate();
  59.                 Screen2ViewBase::button8.invalidate();
  60.                 Screen2ViewBase::button9.invalidate();
  61.                 Screen2ViewBase::button10.invalidate();
  62.                 Screen2ViewBase::button11.invalidate();
  63.                 Screen2ViewBase::button12.invalidate();   
  64.              }
  65.         }
  66.         
  67.     }
  68.    
  69.     count++;
  70.     if(count==30)
  71.     {
  72.         Hole=rand()%12;
  73.         //Unicode::itoa(Hole,textScoresBuffer,5,10);//snprintf(textScoresBuffer,5,"S=%d",Hole);
  74.         //Screen2ViewBase::textScores.invalidate();
  75.         if(MouseHole[Hole])
  76.         {
  77.             Hole = 12;
  78.         }else      MouseHole[Hole] = 50;

  79.         switch(Hole)
  80.         {
  81.             case    0:
  82.             button1.setVisible(true);            
  83.             break;
  84.             case    1:
  85.             button2.setVisible(true);
  86.             break;
  87.             case    2:
  88.             button3.setVisible(true);
  89.             break;
  90.             case    3:
  91.             button4.setVisible(true);
  92.             break;
  93.             case    4:
  94.             button5.setVisible(true);
  95.             break;
  96.             case    5:
  97.             button6.setVisible(true);
  98.             break;
  99.             case    6:
  100.             button7.setVisible(true);
  101.             break;
  102.             case    7:
  103.             button8.setVisible(true);
  104.             break;
  105.             case    8:
  106.             button9.setVisible(true);
  107.             break;
  108.             case    9:
  109.             button10.setVisible(true);
  110.             break;
  111.             case    10:
  112.             button11.setVisible(true);
  113.             break;
  114.             case    11:
  115.             button12.setVisible(true);
  116.             break;
  117.         }
  118.         Screen2ViewBase::button1.invalidate();
  119.         Screen2ViewBase::button2.invalidate();
  120.         Screen2ViewBase::button3.invalidate();
  121.         Screen2ViewBase::button4.invalidate();
  122.         Screen2ViewBase::button5.invalidate();
  123.         Screen2ViewBase::button6.invalidate();
  124.         Screen2ViewBase::button7.invalidate();
  125.         Screen2ViewBase::button8.invalidate();
  126.         Screen2ViewBase::button9.invalidate();
  127.         Screen2ViewBase::button10.invalidate();
  128.         Screen2ViewBase::button11.invalidate();
  129.         Screen2ViewBase::button12.invalidate();
  130.         count = 0;
  131.     }

  132. }
复制代码

    增加代码后保存文件,然后在右上角RUN Simulator编译,代码出现错误可以在右下角的Log查看原因。
QQ截图20190412233031.jpg
    最终的完成版如图:
QQ截图20190412233207.jpg QQ截图20190412233226.jpg
    做的很简陋。
模拟器运行EXE: simulator.rar (666.78 KB, 下载次数: 20)
使用道具 评论回复
| 2019-4-13 10:05 | 显示全部楼层
mark,谢谢楼主分享
使用道具 评论回复
| 2019-4-13 12:17 | 显示全部楼层
做的不错啦
使用道具 评论回复
| 2019-4-15 22:02 | 显示全部楼层
这个是内部自己集成的吗?      
使用道具 评论回复
| 2019-4-15 22:02 | 显示全部楼层
TouchGFX这么牛X 。              
使用道具 评论回复
| 2019-4-15 22:02 | 显示全部楼层
有相关 的教程可以学习吗?
使用道具 评论回复
| 2019-4-15 22:03 | 显示全部楼层
这个软件开始免费试用了呢      
使用道具 评论回复
| 2019-4-15 22:03 | 显示全部楼层
TouchGFX                           
使用道具 评论回复
| 2019-4-23 21:22 | 显示全部楼层
感谢分享。找个软件抠抠图,把老鼠单独抠出来就更好了
使用道具 评论回复
| 2019-4-23 21:53 | 显示全部楼层
顶!!
使用道具 评论回复
| 2019-4-23 22:43 | 显示全部楼层
有种要写一个APP的冲动
使用道具 评论回复
| 2019-4-23 22:44 | 显示全部楼层
直接烧到ST 的F7板卡里面玩一下
使用道具 评论回复
| 2019-4-24 14:48 | 显示全部楼层
感谢楼主分享
使用道具 评论回复
| 2019-4-24 16:12 | 显示全部楼层
这个 这么好玩儿?

运行流畅,吗?
使用道具 评论回复
| 2019-5-4 09:04 | 显示全部楼层
感觉好牛B的样子。。
一直想学GUI,又一直没动。
使用道具 评论回复
| 2019-5-6 10:37 | 显示全部楼层
非常感谢楼主分享
使用道具 评论回复
| 2019-5-6 10:43 | 显示全部楼层
非常感谢楼主分享
使用道具 评论回复
| 2019-5-6 10:47 | 显示全部楼层
非常感谢楼主分享
使用道具 评论回复
| 2019-5-6 10:51 | 显示全部楼层
非常感谢楼主分享
使用道具 评论回复
| 2019-5-6 11:00 | 显示全部楼层
非常感谢楼主分享
使用道具 评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册
本版积分规则
我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

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