2-案例演示-语音版打地鼠
1-游戏玩法:
1-上个机关启动之后,所有的指示灯闪烁3次,开始播放循环播放北京音效,该游戏启动。
2-此时,随机播放一首音效(1-5首其中一个),并且对应的灯箱亮起,
如果,如果在3秒内按下对应的地鼠按键,灯箱熄灭,连续击中N(可以设置)次之后,所有地鼠快速闪烁5次,播放成功音效,电磁锁打开。
3-如果在规定时间内,没有击中对应的地鼠,或者击错地鼠,游戏失败,播放错误音效,需要从头开始。
2-视频演示:
3-程序源码:
#include "user_file.h"
/**********************************************************************************
+---------------------------------------------------------+
用户函数部分(user_file.h里面有详细使用介绍)
+---------------------------------------------------------+
- 目前进展:
- 日期 :2018-09-08
- 作者 :意想意创.
- 硬件环境:意想意创-A0001-2.6代黑色盒子-音乐模块。
- 软件版本号:V1.0
- 技术论坛:XXXXXXX
- 备注 :本示例在 TKStudio 开发环境下,用2.6代-音乐模块调试OK。
- Copyright(C):青岛意想意创技术发展有限公司。
- All rights reserved
**********************************************************************************/
MODU_Game_Tim Game_Tim={//游戏计时变量
0,0,0
};
uchar Game_Right_Num=0; //游戏成功的次数标记
uchar Game_isGo=0; //游戏流程标记
/*==============================
功能:这是一个串口接受函数,接受到的数据都在buf中配合S(uchar *buf,uchar len)使用
参数:发送的数据和数据长度;
返回:无;
===============================*/
void UART_ReceiveBuffer(uchar *buf,uchar len)
{
/*下面这个历程,接受到什么数据,在转发出去的功能*/
UART1_SendBuffer(buf,len);
}
/*==============================
功能://这是一个1毫秒的中断函数;
参数:无;
返回:无;
===============================*/
void PF_Tim0_1msIT(void)
{
Game_ADD_Tim();
return ;
}
/***************************************
功能:游戏启动函数;
参数:无;
返回:成功1,失败0;
***************************************/
uchar Game_Star(void)//游戏启动函数
{
uchar i=0;
for(i=0;i=GAME_TIME){
Game_Tim.Star=second;Game_Tim.Cnt=Game_Tim.Sec=NO; //GAME_TIME秒计时函数
}
}
}
return 1;
}
/***************************************
功能:游戏流程执行函数;
参数:无;
返回:成功返回1,失败返回2;
***************************************/
uchar Game_result(void)//游戏效果执行函数
{
static uchar Index=0;
static uchar Music_Num=0;
uchar Sta=0;
if(Index==NO){
Music_Num=Game_Rand_Music(); //随机播放一首音效
OutSet(Music_Num,ENABLE); //打开对用的灯箱
Game_Tim.Star=YES;Game_Tim.Sec=Game_Tim.Cnt=NO; //打开按键定时器函数
Index=YES;
}
else if(Index==YES){
Sta=Game_Key_ComPare(Music_Num); //按键值和随机的音效值进行比较
if(Sta==YES){ //表示此次按键按对
Game_Tim.Star=Game_Tim.Cnt=Game_Tim.Sec=NO;
Index=NO;
return 1;
}
else if(Sta==second){ //表示是此次按键按错
Index=NO;
Game_Tim.Star=Game_Tim.Cnt=Game_Tim.Sec=NO;
return 2;
}
}
if(Game_Tim.Star==second){
Game_Tim.Star=Game_Tim.Cnt=Game_Tim.Sec=NO;
Index=NO;return 2;
}
return 0;
}
/***************************************
功能:游戏正确效果执行函数;
参数:无;
返回:成功1次返回1,全部成功返回2,;
***************************************/
uchar Game_Right(void)//游戏正确结果执行函数
{
uchar i=0;
Game_Right_Num++;
/*======游戏过关效果=======*/
if(Game_Right_Num>=GAME_TURE_NUM){ //游戏过关之后
Music_Play(6); //游戏过关之后,播放成功音效,并且让所有的地鼠闪烁5次
LockSet(POWEROPEN); //打开电磁锁
for(i=0;i