示例#1
0
文件: snake.c 项目: 0x1abin/GameBox
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;
}
示例#2
0
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 );
	}
}
示例#3
0
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;
}
示例#4
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);
}