STM32掌机教程9,完成掌机

news/2024/11/13 4:09:11/

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

修改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地址


http://www.ppmy.cn/news/291266.html

相关文章

Unity Koreographer 之 音乐制作插件介绍学习,一般使用步骤介绍(包括:一般音乐游戏制作流程简绍) 一

Unity Koreographer 之 音乐制作插件介绍学习,一般使用步骤 介绍 一 目录 Unity Koreographer 之 音乐制作插件介绍学习,一般使用步骤 一 一、Koreographer 简单介绍 二、Koreographer 效果预览 三、Koreographer 在 Unity 中 四、Koreographer …

NYOJ,740“炫舞家” ST

“炫舞家“ST 时间限制: 3000 ms | 内存限制: 65535 KB 难度: 3 描述 ST是一个酷爱炫舞的玩家。TA很喜欢玩QQ炫舞,因此TA也爱屋及乌的喜欢玩跳舞机(Dance Dance Revolution,DDR)。但是TA每天还…

NYOJ 740 “炫舞家“ST

“炫舞家“ST 时间限制: 3000 ms | 内存限制: 65535 KB 难度: 3 描述 ST是一个酷爱炫舞的玩家。TA很喜欢玩QQ炫舞,因此TA也爱屋及乌的喜欢玩跳舞机(Dance Dance Revolution,DDR)。但是TA每天还…

nyistOJ-“炫舞家“ST(DP)

“炫舞家“ST 时间限制: 3000 ms | 内存限制: 65535 KB 难度: 3 描述 ST是一个酷爱炫舞的玩家。TA很喜欢玩QQ炫舞,因此TA也爱屋及乌的喜欢玩跳舞机(Dance Dance Revolution,DDR)。但是TA每天还…

题目 740 “炫舞家“ST

“炫舞家“ST 时间限制: 3000 ms | 内存限制: 65535 KB 难度: 3 描述 ST是一个酷爱炫舞的玩家。TA很喜欢玩QQ炫舞,因此TA也爱屋及乌的喜欢玩跳舞机(Dance Dance Revolution,DDR)。但是TA每天还…

NYOJ 740 “炫舞家”ST

“炫舞家“ST 时间限制: 3000 ms | 内存限制: 65535 KB 难度: 3 描述 ST是一个酷爱炫舞的玩家。TA很喜欢玩QQ炫舞,因此TA也爱屋及乌的喜欢玩跳舞机(Dance Dance Revolution,DDR)。但是TA每天还…

NYOJ740 - “炫舞家“ST (DP)

题目链接 NYOJ740 【题意】 “炫舞家“ST 时间限制: 3000 ms | 内存限制: 65535 KB 难度: 3 描述 ST是一个酷爱炫舞的玩家。TA很喜欢玩QQ炫舞,因此TA也爱屋及乌的喜欢玩跳舞机(Dance Dance Revolution&…

好听的英文歌曲

Adele - Set Fire To The Rain.mp3 Adele - Someone Like You.mp3 Aoa - 猫步轻悄(Like A Cat).mp3 Apologize_OneRepublic.mp3 audiomachine - breath and life - 纯音乐版.mp3 Avril Lavigne - Girlfriend.mp3 Avril Lavigne - Wish You Were Here.mp3 Baby_Justin Bieber.mp…