9.TouchGFX界面应用之综合应用--打地鼠

来自丢石头百科


上一节我们学习了自定义组件(容器),这一节我我们使用自定义组件(容器)做一个简易打地鼠的小游戏,再创建一个屏幕,在第三个屏幕上面先放置切换屏幕的按键。


203632v0vzk0l0v999euhz.gif

然后百度找两张图片,一个作为土拨鼠,一个作为坑,坑和土拨鼠图片的像素点大小保证一致减少计算。


203632qg2l7zld4jgl2nor.png

放置几个按钮表示土拨鼠的坑,用上面表示坑的图片表示背景,这样你按钮的大小就和图片的大小保持一致,每一个按钮设置好编号,


203632r8snpjfoh8um8z88.png

每一个按钮对应一个函数。我们在CustomContainer2.hpp中声明定义这些函数


203632fw22x9suhvvdsr9x.png



203632hsk4oon24e4go22o.png

我们写一个类似于滴答定时器的函数,来作为打地鼠的时钟。在组件(容器)中使用handleTickEvent是没有效果的,组件不会自己产生时钟需要外部提供,那我们随便写一个函数作为组件的时钟,然后外部写一个handleTickEvent函数来调用就好了。所有函数在CustomContainer2.hpp中声明,在CustomContainer2.cpp中定义,在CustomContainer2.hpp变量数组等等不要复制,不然Keil会报错。


203632xru9cko7r3cre3cp.png

其中Games_Start==1表示游戏开始,Games_Start==0表示游戏结束,那我们在来两个那就来控制这个变量,同样声明两个函数。


203633t0zchht3b0x2tubx.png



203633y3ivzesggtc2c1lv.png



203633zglthylotbc6rytv.png

在电脑模拟才用C语言随机数来生成地鼠所在的位置,在STM32中使用RNG随机数发生器


203633itlces5dtdostesu.png



203633d2f9zm87n1cjyja7.png


203633zve199b6d39zv3av.png

按下按钮判断现在地鼠总数量是否大于1,如果大于1在判断地鼠是否在当前按钮下,如果在这里那么对应的图片取消,具体实现代码见工程代码。


203633uqnlzzqz00smln6q.png

启动仿真器


203632v0vzk0l0v999euhz.gif