⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timerapp.c

📁 brew Timer的应用! 画面的更新 等等
💻 C
📖 第 1 页 / 共 2 页
字号:
	
	ISHELL_LoadResString(sTimeApp->pIShell, STRING_RES_FILE, IDS_EXIT, buffer, sizeof(buffer));
	IDISPLAY_DrawText(sTimeApp->pIDisplay, AEE_FONT_NORMAL, buffer, -1, 20, 80, NULL, IDF_ALIGN_CENTER);
	
	IDISPLAY_DrawText(sTimeApp->pIDisplay, AEE_FONT_NORMAL, arrow, -1, 20, 40, NULL, 0);
	
	IDISPLAY_Update(sTimeApp->pIDisplay);
	
	return TRUE;

}
boolean TimeApp_ExitOver(TimerApp* sTimeApp)
{
	TimeApp_SaveData(sTimeApp);
	return TRUE;
}

static  boolean TimeApp_MenuHandleEvent(TimerApp* sTimeApp, AEEEvent eCode, uint16 wParam, uint32 dwParam)
{
	AEERect rect = {20, 40, 12, 20};
	AECHAR arrow[] = {'-', '-', '>', '\0'};
	switch(eCode)
	{
	case EVT_KEY:
		switch(wParam)
		{
		case AVK_UP:
			rect.y = 40 + sTimeApp->menu_index*20;
			IDISPLAY_EraseRect(sTimeApp->pIDisplay, &rect);
			if(0 == sTimeApp->menu_index)
			{
				sTimeApp->menu_index = 2;
			}
			else
			{
				sTimeApp->menu_index --;
			}
			rect.y = 40 + sTimeApp->menu_index*20;
			IDISPLAY_DrawText(sTimeApp->pIDisplay, AEE_FONT_NORMAL, arrow, -1, 20, rect.y, NULL, 0);
			IDISPLAY_Update(sTimeApp->pIDisplay);
			break;
		case AVK_DOWN:
			rect.y = 40 + sTimeApp->menu_index*20;
			IDISPLAY_EraseRect(sTimeApp->pIDisplay, &rect);
			if(2 == sTimeApp->menu_index)
			{
				sTimeApp->menu_index = 0;
			}
			else
			{
				sTimeApp->menu_index ++;
			}
			rect.y = 40 + sTimeApp->menu_index*20;
			IDISPLAY_DrawText(sTimeApp->pIDisplay, AEE_FONT_NORMAL, arrow, -1, 20, rect.y, NULL, 0);
			IDISPLAY_Update(sTimeApp->pIDisplay);
			break;
		case AVK_SELECT:
			switch(sTimeApp->menu_index)
			{
			case 0:
				TimeApp_EnterGame(sTimeApp);
				sTimeApp->window = SPRITE_GAME;
			       break;
			case 1:
				TimeApp_EnterLevel(sTimeApp);
				sTimeApp->window = SPRITE_LEVEL;		
				break;
			case 2:
				ISHELL_CloseApplet(sTimeApp->pIShell, FALSE);
			}
			break;
		}
		return TRUE;
	}
	return FALSE;
}
static  boolean TimeApp_GameHandleEvent(TimerApp * pMe, AEEEvent eCode, uint16 wParam, uint32 dwParam)
{
	AEERect DeviceRect;
	//int timerValue = 1000;
	int i,j,x,y;
	int cx,cy;
	uint16 nCode = 10;
	uint32 numMinutes = 1;
    switch (eCode) 
	{
		case EVT_KEY:
			if(!pMe->Y)
			{
				pMe->K = 0;//	int K;					//同步小方块的产生与绘画
				switch(wParam)
				{
				case AVK_LEFT:
					if((Isout(pMe)|| pMe->keyPressed == 2) && !(pMe->isPaused))  //判断俄罗斯方块是否到边界或是否到其他方块边缘
						{
							pMe->flag=1;//boolean flag;			//标志小方块是否在移动
							clean(pMe);//清除当前小方块处的数据。
							//pMe->H--;//int H;					//小方块的横向位子(方格数)
							for(i = 0;i < 4;i++)
							{
								pMe->aa[i].y--;//point aa[4];			//当前显示的小方块
							}
							pMe->keyPressed = 1;
						}
					break;
				case AVK_RIGHT:
					if((Isout(pMe) || pMe->keyPressed == 1) && !(pMe->isPaused))
					{
						pMe->flag=1;
						clean(pMe);
					//	pMe->H++;
						for(i = 0;i < 4;i++)
						{
							pMe->aa[i].y++;
						}

						pMe->keyPressed = 2;
						//	Invalidate();
					}
					
					break;
				case AVK_DOWN:
					if (!(pMe->isPaused))
					{
					//	pMe->timerValue =100;
						clean(pMe);
						dop(pMe);
						Isover(pMe);
						Star(pMe);
					//	if (Isbottom(pMe))
					//	{
					//		pMe->timerValue = 1000;
					//	}

					}
					
					break;
				case AVK_SELECT:
					if (!(pMe->isPaused))
					{
                    clean(pMe);
             //		pMe->k++;
					round(pMe);
					}	
					break;
					
				case AVK_SOFT2:
					if (pMe->keyPressed == 3)
					{
						pMe->isPaused = 0;
						pMe->keyPressed = 0;
					}
					else
					{
						pMe->isPaused = 1;
						pMe->keyPressed = 3;
					}
					break;
				case AVK_CLR:
					Over(pMe);
					ISHELL_CancelTimer(pMe->a.m_pIShell,TimerCB,(void *)pMe) ;
					SETAEERECT(&DeviceRect,0,0,pMe->cx,pMe->cy);
					IDISPLAY_DrawRect(pMe->a.m_pIDisplay,&DeviceRect,0xff000000,0xffffffff,250,IDF_RECT_FRAME|IDF_RECT_FILL);
		            IDISPLAY_Update (pMe->a.m_pIDisplay); 
				     pMe->window = SPRITE_MENU ;
					 return TimeApp_EnterMenu(pMe);
					break;
				}
				pMe->K = 1;	
				myDraw(pMe);

			}
		

      case EVT_APP_STOP:

		    // Add your code here .....
//			if(ISHELL_GetTimerExpiration (pMe->m_pIShell, TimerCB,(void *)pMe) > 0)
//				ISHELL_CancelTimer (pMe->m_pIShell, TimerCB, (void *)pMe);
//			ISHELL_CancelAlarm (pMe->m_pIShell, AEECLSID_ALARMAPP, nCode);

         return TRUE;
      default:
         break;
   }
}


static  boolean TimeApp_LevelHandleEvent(TimerApp * pMe, AEEEvent eCode, uint16 wParam, uint32 dwParam)
{
	switch (eCode) 
	{	
	case EVT_KEY:
		switch(wParam)
		{
		case AVK_DOWN:
			if (pMe->tempLevel>0)
			{
				AECHAR tempLevelBuffer[10] = {0};
				AECHAR format[] = {'%', 'd', '\0'};
				pMe->tempLevel--;
				WSPRINTF(tempLevelBuffer, sizeof(tempLevelBuffer), format, pMe->tempLevel);
				IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD, tempLevelBuffer, -1, 0, 0, NULL, IDF_ALIGN_CENTER | IDF_ALIGN_MIDDLE);
	            IDISPLAY_Update(pMe->a.m_pIDisplay);
			}
			break;
		case AVK_UP:
			if (pMe->Highlevel>pMe->tempLevel)
			{	
				AECHAR tempLevelBuffer[10] = {0};
				AECHAR format[] = {'%', 'd', '\0'};
				pMe->tempLevel++;
				WSPRINTF(tempLevelBuffer, sizeof(tempLevelBuffer), format, pMe->tempLevel);
				IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD, tempLevelBuffer, -1, 0, 0, NULL, IDF_ALIGN_CENTER | IDF_ALIGN_MIDDLE);
				IDISPLAY_Update(pMe->a.m_pIDisplay);
			}
			break;
		case AVK_SELECT:
			IDISPLAY_ClearScreen(pMe->a.m_pIDisplay);
			TimeApp_EnterGame(pMe);
			pMe->window = SPRITE_GAME;
            break;
	    default:
		    break;
		return(TRUE);
		}
   }
	return FALSE;

}

static  boolean TimeApp_OverHandleEvent(TimerApp * pMe, AEEEvent eCode, uint16 wParam, uint32 dwParam)
{
	AEERect rect = {20, 40, 12, 20};
	AECHAR arrow[] = {'-', '-', '>', '\0'};
	AEERect DeviceRect;
	switch(eCode)
	{
	case EVT_KEY:
		switch(wParam)
		{
		case AVK_UP:
			rect.y = 40 + pMe->menu_index*20;
			IDISPLAY_EraseRect(pMe->pIDisplay, &rect);
			if(0 == pMe->menu_index)
			{
				pMe->menu_index = 2;
			}
			else
			{
				pMe->menu_index --;
			}
			rect.y = 40 + pMe->menu_index*20;
			IDISPLAY_DrawText(pMe->pIDisplay, AEE_FONT_NORMAL, arrow, -1, 20, rect.y, NULL, 0);
			IDISPLAY_Update(pMe->pIDisplay);
			break;
		case AVK_DOWN:
			rect.y = 40 + pMe->menu_index*20;
			IDISPLAY_EraseRect(pMe->pIDisplay, &rect);
			if(2 == pMe->menu_index)
			{
				pMe->menu_index = 0;
			}
			else
			{
				pMe->menu_index ++;
			}
			rect.y = 40 + pMe->menu_index*20;
			IDISPLAY_DrawText(pMe->pIDisplay, AEE_FONT_NORMAL, arrow, -1, 20, rect.y, NULL, 0);
			IDISPLAY_Update(pMe->pIDisplay);
			break;
		case AVK_SELECT:
			switch(pMe->menu_index)
			{
			case 0:
	            TimeApp_SaveData(pMe);
				TimeApp_EnterGame(pMe);
				pMe->window = SPRITE_GAME;
				break;
			case 1:
				TimeApp_SaveData(pMe);
				SETAEERECT(&DeviceRect,0,0,pMe->cx,pMe->cy);
				IDISPLAY_DrawRect(pMe->a.m_pIDisplay,&DeviceRect,0xff000000,0xffffffff,250,IDF_RECT_FRAME|IDF_RECT_FILL);
		        IDISPLAY_Update (pMe->a.m_pIDisplay); 
				TimeApp_EnterMenu(pMe);
				pMe->window = SPRITE_MENU;		
				break;
			case 2:
				TimeApp_SaveData(pMe);
				ISHELL_CloseApplet(pMe->pIShell, FALSE);
			}
			break;
		}
		return TRUE;
	}
	return FALSE;

}



//	static void TimeApp_LoadData(TimerApp *sTimeApp);
  static void TimeApp_SaveData(TimerApp *sTimeApp)
  {
	  IFileMgr *pFileMgr;
	  IFile    *pFile;
	  
	  ISHELL_CreateInstance(sTimeApp->pIShell, AEECLSID_FILEMGR, (void **)&pFileMgr);
	  if (NULL == pFileMgr)
	  {
		  return;
	  }
	  
	  if ( IFILEMGR_Test(pFileMgr, "save.dat") == SUCCESS)
	  {
		  pFile = IFILEMGR_OpenFile(pFileMgr, "save.dat", _OFM_READWRITE);
	  }
	  else
	  {
		  pFile = IFILEMGR_OpenFile(pFileMgr, "save.dat", _OFM_CREATE);
	  }
	  
	  if (NULL == pFile)
	  {
		  IFILEMGR_Release(pFileMgr);
		  return;
	  }
	  IFILE_Write(pFile, &(sTimeApp->highScore), sizeof(int32));
	  if (sTimeApp->level>=sTimeApp->Highlevel)
	  {
		  sTimeApp->Highlevel = sTimeApp->level; 
	  }
	  IFILE_Write(pFile, &(sTimeApp->Highlevel), sizeof(int16));
	  
	  IFILEMGR_Release(pFileMgr);
	 IFILE_Release(pFile);
  }

static void TimeApp_LoadData(TimerApp *sTimeApp)
{
	IFileMgr *pFileMgr;
	IFile    *pFile;
	
	ISHELL_CreateInstance(sTimeApp->pIShell, AEECLSID_FILEMGR, (void **)&pFileMgr);
	if (NULL == pFileMgr)
	{
		return;
	}
	
	pFile = IFILEMGR_OpenFile(pFileMgr, "save.dat", _OFM_READ);
	if (NULL == pFile)
	{
		IFILEMGR_Release(pFileMgr);
		return;
	}
	
	IFILE_Read(pFile, &(sTimeApp->highScore), sizeof(int32));
	IFILE_Read(pFile, &(sTimeApp->Highlevel), sizeof(int16));
	
	IFILEMGR_Release(pFileMgr);
	IFILE_Release(pFile);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -