STM32掌机教程9,完成掌机
这是教程的最后一篇了,完成之前的任务,到这里一切都应当水到渠成,没什么好讲的了。结尾可能略显仓储,未尽之处,自己看代码吧,看不懂的地方可以在下边评论。
修改BGM
之前已经实现了根据不同的按键切换不同的BGM的功能。接下来把切换BGM的代码放到加命、减命、加分、升级的函数中。
//main.c
//加命并显示
void add_life(void)
{BGM = LIFE_BGM;BGM_change_flg = 1;//修改BGMadd_life_cnt++;life++;showNumber(56,2,life,DEC,8,FONT_16_EN);
}
//难度提升并显示
void level_up(void)
{BGM = LEVEL_BGM;BGM_change_flg = 1;//修改BGMlevel_cnt = 0;level++;if(level>14)//默认14关level = 14;TIM_SetAutoreload(TIM2,level1_time_arr[level]);showNumber(56,4,level,DEC,8,FONT_16_EN);
}
//按照level加分并显示
void add_score(void)
{BGM = GOOD_BGM;BGM_change_flg = 1;//修改BGMscore += level;showNumber(56,6,score,DEC,8,FONT_16_EN);
}
//减命并显示
void sub_life(void)
{BGM = BAD_BGM;BGM_change_flg = 1;//修改BGMlife--;showNumber(56,2,life,DEC,8,FONT_16_EN);
}
把主函数恢复到没加音乐,但是已经实现了打地鼠全部功能的状态
初始化修改
把原先去掉的初始化代码拿回来,并且写两个新的函数永夜设置默认参数。
void set_default(void)
{life = LIFE_NUM;mouse = 0;score = 0;level = 1;next_flg = 1;timeout_flg = 0;level_cnt = 0; add_life_cnt = 1;
}
//设置音量与背景
void set_BGM(u8 volum,u8 bgm_temp)
{BGM_volum = volum;BGM = bgm_temp;
}
主函数中的初始化代码如下
set_BGM(6,BEGIN_BGM); //上电音乐与BGM 音量 1最大,10听不到TIM5_Int_Init(9,7199); //上电先播放背景音乐TIM3_PWM_Init(0xfffe,8); //蜂鸣器频率定时器初始化LED_Init();KEY_Init();delay_init();initIIC();initOLED();set_default();TIM4_Seed_Init();FirstScreen(); //显示完屏幕内容以后,再开启打地鼠计时用的定时器show_opt();TIM2_Int_Init(level1_time_arr[level_cnt],7199);
复活操作
等到没命以后,我想让按下PAUSE_PRES按键复活,参数都恢复初始化状态。
if(life)//还有命{...}else//没命了{AllLED_OFF(); //关掉所有的灯BGM = BEGIN_BGM;if(PAUSE_PRES == KEY_Scan(0))//重生{BGM = LIFE_BGM;set_default();show_opt();TIM_SetAutoreload(TIM2,level1_time_arr[level]);TIM_SetCounter(TIM2, 0);//定时器清零} }
然后检查代码,添加一些注释,去掉一些没用的代码,算是大功告成了。
其它想法
到目前为止,我只是实现了最基本的打地鼠的功能。一开始设想的功能,就作为课后作业吧:
1、带提示功能的电子琴
2、点唱机,增加一些自己喜欢的歌曲
3、优化打地鼠,改成计时模式,允许多个地鼠出现,比单位时间内谁打的地鼠多
4、历史最高分功能
5、太鼓达人
6、追赶时光
7、QQ炫舞(这个是不是太膨胀了,哈哈哈)
8、其它可以用屏幕打的小游戏,比如坦克车,弹球,贪吃蛇,俄罗斯方块
9、借助USB库,把手柄与电脑相连接。
至此,STM32打地鼠掌机的系列教程都写完了。这是最终代码
最终的代码与PCB源文件都放在git了。后续如果有更新,看git吧git地址
STM32掌机教程9,完成掌机相关推荐
- AIDA64烤机教程,AIDA64烤机设置
拿到一台新电脑的时候,电脑爱好者们通常都会给新电脑进行烤机测试,所谓烤机指的就是让电脑保持一段时间的满负荷运行,以检查电脑的系统稳定性还有其他的一些参数,可以说烤机能够让我们更了解自己的电脑.那么,对 ...
- android 4.0.3固件,Vi30豪华版_Android4.0.3-1.0测试版固件刷机教程【MM刷机】
本帖最后由 ㄣ溡绱MM 于 2012-4-9 08:58 编辑 今晚有些睡不着,就到官网逛了一下刷一下,下面是具体刷的固件介绍及教程: [固件名称]Vi30豪华版_Android4.0.3-1.0测试 ...
- android是乐视手机刷机,乐视MAX(乐视 X900+)一键刷机教程,轻松刷机
经常会有机友提问,乐视MAX(乐视 X900+)手机支不支持一键刷机?由于奇兔刷机已经支持多达上千款安卓手机一键刷机,所以有时候小编也无法及时回答上来,最简单的办法就是把手机连上奇兔刷机,即可看到手机 ...
- android是乐视手机刷机,乐视 X620(乐2 全网通)刷机教程,简单刷机
经常会有机友提问,乐视 X620(乐2 全网通)手机支不支持一键刷机?由于奇兔刷机已经支持多达上千款安卓手机一键刷机,所以有时候小编也无法及时回答上来,最简单的办法就是把手机连上奇兔刷机,即可看到手机 ...
- oppok3如何刷机_[oppok3刷机教程]oppok3怎么刷机
有很多朋友都不会刷机,还要去花钱到外面刷机,其实刷机并没有大家想象得那么难,所以今天给大家带来一个详细的OPPO K1刷机教程,赶紧试试吧. oppo k3怎么刷机 一.刷机相关术语介绍 1.RE模式 ...
- java刷机教程,小米Mix2s刷机教程
小米Mix2s刷机教程 小米手机在国内以其高性价和面向技术宅而知名.小米自助开发的MIUI在其全家桶的支持下,用起来挺方便,可却又因为其夹杂这大量的广告而影响用户体验,小米手机刷机主要刷的就是纯净版的 ...
- 努比亚Z7 mini刷机教程_recovery卡刷刷机教程
之前小编给大家分享了努比亚Z7 mini手机的获取Root权限.recovery刷入教程.那么对于爱搞机的机友来说,剩下来的就是对手机进行刷写第三方刷机包了.那么下面刷机之家小编给大家分享一下努比亚Z ...
- 努比亚Z7 mini刷机教程_recovery卡刷机教程
之前小编分享努比亚Z7 mini电话访问Root权限.recovery刷机教程. 所以对于朋友谁搞机整机的爱,左边是写第三方手机刷包.那么下面刷的家小编与您分享努比亚Z7 mini刷机教程手机. 一. ...
- STM32掌机教程2,掌机的原理
本文用到的资源PDF格式的原理图和集成库资源 打地鼠的逻辑 打地鼠的逻辑很简单:我点亮某个LED,然后开始计时.如果在规定的时间内按下了LED对应的按键,那么加分,点亮下一个LED.按错按键,或者 ...
- 联想android刷机教程,联想手机怎么刷机 联想手机刷机教程
手机在我们生活中是非常常见的电子产品,并且手机对我们生活的影响也是非常的大的.而手机在使用的时候也会遇到很多问题,比如手机内存不够.手机在使用的时候很卡等等.而有些朋友对手机要求比较高,也有朋友想把手 ...
最新文章
- DeepMind医疗业务几经动荡,现在团队并入Google
- Ubuntu 下Ape转Mp3[88250原创]
- html ie浏览器视频无法播放视频,HTML5视频以Chrome格式播放,但不播放IE9
- 零基础python嵌入式开发_零基础Python入门教程
- ECCV 2018 DSLT:《Deep Regression Tracking with Shrinkage Loss》论文笔记
- Android - 网络基础
- Effective C++条款01: 视C++为一个语言联邦
- 国标流媒体H5实现无插件视频监控按需直播
- 信息学奥赛一本通(1223:An Easy Problem)
- mysql+join的原理,Mysql连接join查询原理知识点
- PyTorch 模型训练实用教程(附代码)
- 我的Android第五章:通过Intent实现活动与活动之间的交互
- 程序员从入门到放弃,书籍推荐
- 如何实时获取当前时间
- Java 读取jpeg图片 Unsupported Image Type 异常
- Python数据的输出
- 苹果也能做深度学习了!PyTorch宣布支持苹果M1芯片GPU加速:训练快6倍,推理提升21倍...
- jones 的 C语言复习
- Openssh更新升级7.9p1步骤
- Technical support of LYF-Solid Background