这是教程的最后一篇了,完成之前的任务,到这里一切都应当水到渠成,没什么好讲的了。结尾可能略显仓储,未尽之处,自己看代码吧,看不懂的地方可以在下边评论。

修改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,完成掌机相关推荐

  1. AIDA64烤机教程,AIDA64烤机设置

    拿到一台新电脑的时候,电脑爱好者们通常都会给新电脑进行烤机测试,所谓烤机指的就是让电脑保持一段时间的满负荷运行,以检查电脑的系统稳定性还有其他的一些参数,可以说烤机能够让我们更了解自己的电脑.那么,对 ...

  2. android 4.0.3固件,Vi30豪华版_Android4.0.3-1.0测试版固件刷机教程【MM刷机】

    本帖最后由 ㄣ溡绱MM 于 2012-4-9 08:58 编辑 今晚有些睡不着,就到官网逛了一下刷一下,下面是具体刷的固件介绍及教程: [固件名称]Vi30豪华版_Android4.0.3-1.0测试 ...

  3. android是乐视手机刷机,乐视MAX(乐视 X900+)一键刷机教程,轻松刷机

    经常会有机友提问,乐视MAX(乐视 X900+)手机支不支持一键刷机?由于奇兔刷机已经支持多达上千款安卓手机一键刷机,所以有时候小编也无法及时回答上来,最简单的办法就是把手机连上奇兔刷机,即可看到手机 ...

  4. android是乐视手机刷机,乐视 X620(乐2 全网通)刷机教程,简单刷机

    经常会有机友提问,乐视 X620(乐2 全网通)手机支不支持一键刷机?由于奇兔刷机已经支持多达上千款安卓手机一键刷机,所以有时候小编也无法及时回答上来,最简单的办法就是把手机连上奇兔刷机,即可看到手机 ...

  5. oppok3如何刷机_[oppok3刷机教程]oppok3怎么刷机

    有很多朋友都不会刷机,还要去花钱到外面刷机,其实刷机并没有大家想象得那么难,所以今天给大家带来一个详细的OPPO K1刷机教程,赶紧试试吧. oppo k3怎么刷机 一.刷机相关术语介绍 1.RE模式 ...

  6. java刷机教程,小米Mix2s刷机教程

    小米Mix2s刷机教程 小米手机在国内以其高性价和面向技术宅而知名.小米自助开发的MIUI在其全家桶的支持下,用起来挺方便,可却又因为其夹杂这大量的广告而影响用户体验,小米手机刷机主要刷的就是纯净版的 ...

  7. 努比亚Z7 mini刷机教程_recovery卡刷刷机教程

    之前小编给大家分享了努比亚Z7 mini手机的获取Root权限.recovery刷入教程.那么对于爱搞机的机友来说,剩下来的就是对手机进行刷写第三方刷机包了.那么下面刷机之家小编给大家分享一下努比亚Z ...

  8. 努比亚Z7 mini刷机教程_recovery卡刷机教程

    之前小编分享努比亚Z7 mini电话访问Root权限.recovery刷机教程. 所以对于朋友谁搞机整机的爱,左边是写第三方手机刷包.那么下面刷的家小编与您分享努比亚Z7 mini刷机教程手机. 一. ...

  9. STM32掌机教程2,掌机的原理

    本文用到的资源PDF格式的原理图和集成库资源 打地鼠的逻辑   打地鼠的逻辑很简单:我点亮某个LED,然后开始计时.如果在规定的时间内按下了LED对应的按键,那么加分,点亮下一个LED.按错按键,或者 ...

  10. 联想android刷机教程,联想手机怎么刷机 联想手机刷机教程

    手机在我们生活中是非常常见的电子产品,并且手机对我们生活的影响也是非常的大的.而手机在使用的时候也会遇到很多问题,比如手机内存不够.手机在使用的时候很卡等等.而有些朋友对手机要求比较高,也有朋友想把手 ...

最新文章

  1. DeepMind医疗业务几经动荡,现在团队并入Google
  2. Ubuntu 下Ape转Mp3[88250原创]
  3. html ie浏览器视频无法播放视频,HTML5视频以Chrome格式播放,但不播放IE9
  4. 零基础python嵌入式开发_零基础Python入门教程
  5. ECCV 2018 DSLT:《Deep Regression Tracking with Shrinkage Loss》论文笔记
  6. Android - 网络基础
  7. Effective C++条款01: 视C++为一个语言联邦
  8. 国标流媒体H5实现无插件视频监控按需直播
  9. 信息学奥赛一本通(1223:An Easy Problem)
  10. mysql+join的原理,Mysql连接join查询原理知识点
  11. PyTorch 模型训练实用教程(附代码)
  12. 我的Android第五章:通过Intent实现活动与活动之间的交互
  13. 程序员从入门到放弃,书籍推荐
  14. 如何实时获取当前时间
  15. Java 读取jpeg图片 Unsupported Image Type 异常
  16. Python数据的输出
  17. 苹果也能做深度学习了!PyTorch宣布支持苹果M1芯片GPU加速:训练快6倍,推理提升21倍...
  18. jones 的 C语言复习
  19. Openssh更新升级7.9p1步骤
  20. Technical support of LYF-Solid Background

热门文章

  1. 精益价值流图实践步骤
  2. 软件测试中性能调优的过程解析
  3. 华为p50会上鸿蒙吗,华为P50终于定了!徕卡相机大改+首发鸿蒙,或成最后绝唱…...
  4. 06 初等矩阵和矩阵的可逆性
  5. idea 浏览器图标消失 html页面看不到浏览器打开的图标
  6. 未来十年,互联网将如何颠覆这17个传统行业,你知道吗?
  7. unity游戏返回游戏黑屏
  8. 微信应急联系人,你设置了吗?
  9. 小度音箱对接之DuerOS开放平台智能家居技能Java对接Demo实现
  10. 实用生活英语句子 174句