📄 timerapp.c
字号:
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 + -