void Snake_Game() //游戏过程 { Snake_Init(); //初始化游戏 Play_Music(sound_canon); while(snake.life) //有生命,便可玩 { uint8 i; switch(keypad)//直接读取键值,贪吃蛇不需要消抖 { case K_UP: if((snake.direc==left)||(snake.direc==right)) snake.direc=up; //按下UP键时,只有蛇在水平方向时才能改变 break; case K_DOWN:if((snake.direc==left)||(snake.direc==right)) snake.direc=down; //按下DOWN键时,只有蛇在水平方向时才能改变 break; case K_LEFT:if((snake.direc==up)||(snake.direc==down)) snake.direc=left; //按下left键时,只有蛇在垂直方向时才能改变 break; case K_RIGHT:if((snake.direc==up)||(snake.direc==down)) snake.direc=right; //按下right键时,只有蛇在垂直方向时才能改变 break; default : break; } if(KEY_OK==0) speeds = ASPEED;//加速键 else speeds = NORSPEED; keypad = K_NULL; if(tms > speeds) //半秒前进一格 { tms=0; Snake_Run(); //无聊散步 } if((snake.x[0]==food.x) && (snake.y[0]==food.y))//是否吃到食物 { Sound_Tone(sound_ON,4,5); // getfood=1;//直接在此增加蛇长度会在下一个显示扫描产生一个原有数据留影,故通过加长 snake.node++; // game_speed-=10; //每吃一个食物增加10点速度 Create_Food(); //产生新食物 } if((snake.x[0]>WIDTH-1)||(snake.x[0]<0)||(snake.y[0]>LENGTH-1)||(snake.y[0]<0))//是否碰壁 { snake.life=0; //蛇碰到墙壁死亡 } for(i=3;i<snake.node;i++)//从蛇的第四节开始判断是否撞到自己了,因为蛇头不可能撞到二三四节 { if((snake.x[i]==snake.x[0])&&(snake.y[i]==snake.y[0]))//是否自残 snake.life=0; //蛇头碰到自身死亡 } Snake_Disp(); //显示游戏图像 scores = snake.node-3; SMG_Display(scores,duty); } scores = snake.node-3; TR2_OFF; }
void cAudio :: Toggle_Music( void ) { pPreferences->m_audio_music = !pPreferences->m_audio_music; Init(); // play music if( m_music_enabled && !m_music_filename.empty() ) { Play_Music( m_music_filename, -1, 1, 2000 ); } }
int main(int argc, char **argv) { MK_InitLibraries(); MK_LoadGfx(); Intro(); while(1)/// Infinite Loop /// { ExitForTheGame(); Play_Music(); switch(MenuIndex) { case 1: MainMenu(); break; case 2: InGame(); break; case 3: SelectMenu(); break; case 4: SelectSlot(); break; case 5: CreatingMenu(); break; case 6: SelectSlot2(); break; case 7: DrawTitle(); break; } ML_Refresh(); } return 0; }
/**************************************************************************** * 名 称:int main(void) * 功 能:主函数 * 入口参数:无 * 出口参数:无 * 说 明: * 调用方法:无 ****************************************************************************/ int main(void) { RCC_Configuration(); //设置内部时钟及外设时钟使能 if (SysTick_Config(720)) //时钟节拍中断时10us一次 用于定时 { /* Capture error */ while (1); } NVIC_Configuration(); //中断源配置 //xRST =1 Usart1_Init(); //串口1初始化 SPI_VS1003_Init(); //VS1003 初始化 SPI1_Configeration(); //SPI1初始化 LED_Config(); //LED 初始化 Delay_us(10000); //延时100ms SD_TEST(); //SD卡测试函数 Play_Music(); //播放音频 while (1); }