📄 fan.c
字号:
// sTimerApp->flag2=1;
// }
//}
//Over(sTimerApp);
// SETAEERECT(&TempRect,0,0,sTimerApp->cx,sTimerApp->cy);
// IDISPLAY_FillRect(sTimerApp->a.m_pIDisplay,&TempRect,MAKE_RGB(255,255,255));
//IDISPLAY_DrawRect(sTimerApp->a.m_pIDisplay,&TempRect,0xff000000,0xffffffff,250,IDF_RECT_FRAME|IDF_RECT_FILL);
// IDISPLAY_DrawText(sTimerApp->a.m_pIDisplay, AEE_FONT_NORMAL, gameOver, -1, 40, 40, NULL, IDF_ALIGN_CENTER | IDF_ALIGN_MIDDLE);
// IDISPLAY_Update (sTimerApp->a.m_pIDisplay);
//sTimerApp->isPaused = 1;
//sTimerApp->Y = 1;
// ISHELL_CancelTimer(sTimerApp->a.m_pIShell,TimerCB,(void *)sTimerApp) ;
Over(sTimerApp);
ISHELL_CancelTimer(sTimerApp->a.m_pIShell,TimerCB,(void *)sTimerApp) ;
SETAEERECT(&TempRect,20,25,68,sTimerApp->cy/2);
//SETAEERECT(&TempRect,0,0,sTimerApp->cx,sTimerApp->cy);
//IDISPLAY_FillRect(pMe->a.m_pIDisplay,&pMe,MAKE_RGB(255,255,255));
IDISPLAY_DrawRect(sTimerApp->a.m_pIDisplay,&TempRect,0xff000000,0xffffffff,250,IDF_RECT_FRAME|IDF_RECT_FILL);
//IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_NORMAL, gameOver, -1, 40, 40, NULL, IDF_ALIGN_CENTER | IDF_ALIGN_MIDDLE);
IDISPLAY_Update (sTimerApp->a.m_pIDisplay);
sTimerApp->window = SPRITE_OVER ;
return TimeApp_EnterOver(sTimerApp);
break;
// SetTimer(IDC_TIMER,time,NULL);
}
}
/* CMainFrame * frame=(CMainFrame *)AfxGetMainWnd();
UINT nID,nStyle;
int cxwidth;
frame->m_wndStatusBar.GetPaneInfo(0,nID,nStyle,cxwidth);
frame->m_wndStatusBar.SetPaneInfo(0,nID,SBPS_STRETCH|SBPS_NORMAL,cxwidth);
CString cs;
cs.Format("得分=%d",count);
frame->m_wndStatusBar.SetPaneText(0,cs);*/
}
/////////////////////////////////////////////
//清除当前小方块处的数据。
////////////////////////////////////////////
void clean(TimerApp * sTimerApp)
{
int i;
for(i = 0;i < 4;i++)
{
sTimerApp->dd[i].x = sTimerApp->aa[i].x;
sTimerApp->dd[i].y = sTimerApp->aa[i].y;
sTimerApp->cor[sTimerApp->aa[i].x][sTimerApp->aa[i].y] = 0;
}
}
void myDraw(TimerApp * sTimerApp)
{
RGBVAL rgbFrameT = MAKE_RGB(120,120,120);
RGBVAL rgbFillB = MAKE_RGB(255,255,255);
AEERect TempRect;
int i,j;
int x,y;
int cx = 9;
int cy = 10;
// 清除上一次的方块。
for(i=0;i<4;i++)
{
x = sTimerApp->dd[i].y * cx;
y = sTimerApp->dd[i].x * cy;
SETAEERECT(&TempRect,x,y,cx,cy);
IDISPLAY_DrawFrame(sTimerApp->a.m_pIDisplay,&TempRect,AEE_FT_EMPTY,rgbFrameT);
IDISPLAY_FillRect(sTimerApp->a.m_pIDisplay,&TempRect,rgbFillB);
}
SETAEERECT(&TempRect,95,90,40,40);
IDISPLAY_FillRect(sTimerApp->a.m_pIDisplay,&TempRect,rgbFillB);
// 显示下一个方块
for(i=0;i<4;i++)
{
x = (sTimerApp->nn[i].y + 15) * 5;
y = (sTimerApp->nn[i].x + 20) * 5;
SETAEERECT(&TempRect,x,y,8,8);
IDISPLAY_DrawFrame(sTimerApp->a.m_pIDisplay,&TempRect,AEE_FT_EMPTY,sTimerApp->NextTempColor);
IDISPLAY_FillRect(sTimerApp->a.m_pIDisplay,&TempRect,sTimerApp->NextTempColor);
}
//画方块,flag表明现在小方块正处在移动阶段。
if(sTimerApp->flag)
{
for(i = 0;i < 4;i++)
{
//把相应的方块位置处(即cor[i][j])置为1,表明要加色。
sTimerApp->cor[sTimerApp->aa[i].x][sTimerApp->aa[i].y] = 1;
}
//对整个方块区域进行搜索,有小方块处(即cor[i][j]==1)就上色。
for(i=0;i<14;i++)
{
for(j=0;j<10;j++)
{
if(sTimerApp->cor[i][j]==1)
{
x = j * cx;
y = i * cy;
SETAEERECT(&TempRect,x,y,cx,cy);
IDISPLAY_DrawFrame(sTimerApp->a.m_pIDisplay,&TempRect,AEE_FT_EMPTY,sTimerApp->TempColor);
IDISPLAY_FillRect(sTimerApp->a.m_pIDisplay,&TempRect,sTimerApp->TempColor);
}
}
}
}
//表明小方块到底部了或在其它小方块的上面。
if(sTimerApp->flag2)
{
for(i=0;i<14;i++)
{
for(j=0;j<10;j++)
{
//重新画方格区域。
x = j * cx;
y = i * cy;
SETAEERECT(&TempRect,x,y,cx,cy);
IDISPLAY_DrawFrame(sTimerApp->a.m_pIDisplay,&TempRect,AEE_FT_EMPTY,rgbFrameT);
IDISPLAY_FillRect(sTimerApp->a.m_pIDisplay,&TempRect,rgbFillB);
}
}
//上色所有被标志为有小方块和停止的小方块。
for( i=0;i<14;i++)
{
for(j=0;j<10;j++)
{
if((sTimerApp->cor[i][j]==1)||(sTimerApp->cor[i][j]==2))
{
x = j * cx;
y = i * cy;
SETAEERECT(&TempRect,x,y,cx,cy);
IDISPLAY_DrawFrame(sTimerApp->a.m_pIDisplay,&TempRect,AEE_FT_EMPTY,sTimerApp->color[i][j]);
IDISPLAY_FillRect(sTimerApp->a.m_pIDisplay,&TempRect,sTimerApp->color[i][j]);
}
}
}
sTimerApp->flag2=0;
}
IDISPLAY_Update(sTimerApp->a.m_pIDisplay);
}
/////////////////////////////////////////////////
//从顶部到底部逐一检查,下一处被填充,则把整个方
//块填充处就相应的也填充;
//或当小方块有一处到底部了,就把整个方块填充。
//如果都不是,则让方块向下移一处。
/////////////////////////////////////////////////
int dop(TimerApp * sTimerApp)
{
int i,j,k;
for(i = 0;i < 14;i++)
{
for(j = 0;j < 4;j++)
{
if(sTimerApp->cor[sTimerApp->aa[j].x + 1][sTimerApp->aa[j].y] == 2)
{
for(k = 0;k < 4;k++)
{
sTimerApp->cor[sTimerApp->aa[k].x][sTimerApp->aa[k].y] = 2;
sTimerApp->color[sTimerApp->aa[k].x][sTimerApp->aa[k].y] = sTimerApp->TempColor ;
sTimerApp->flag2 = 1;
}
return 0;
}
}
for(j = 0;j < 4;j++)
{
if(sTimerApp->aa[j].x == 13)
{
for(k = 0;k < 4;k++)
{
sTimerApp->cor[sTimerApp->aa[k].x][sTimerApp->aa[k].y] = 2;
sTimerApp->color[sTimerApp->aa[k].x][sTimerApp->aa[k].y] = sTimerApp->TempColor;
sTimerApp->flag2 = 1;
}
return 0;
}
}
for(k = 0;k < 4;k++)
{
sTimerApp->aa[k].x = sTimerApp->aa[k].x + 1;
}
}
return 1;
}
int round(TimerApp * sTimerApp)
{
if (sTimerApp->index != 0)
{
int x,y,i,j,k;
int temp2,temp1;
x = 0;
y = 0;
j = 0;
k = 0;
temp1 = 0;
temp2 = 0;
for(i=0;i<4;i++)
{
sTimerApp->bb[i].x=sTimerApp->aa[i].x;
sTimerApp->bb[i].y=sTimerApp->aa[i].y;
}
if(sTimerApp->index==1)
{
temp1=sTimerApp->aa[2].x;
temp2=sTimerApp->aa[2].y;
k = 2;
}
else
{
temp1=sTimerApp->aa[1].x;
temp2=sTimerApp->aa[1].y;
k = 1;
}
for(i=0;i<4;i++)
{
if(i!=k)
{
x=(sTimerApp->aa[i].x-temp1);
y=(sTimerApp->aa[i].y-temp2);
sTimerApp->aa[i].x=y+temp1;
sTimerApp->aa[i].y=-x+temp2;
if((sTimerApp->cor[sTimerApp->aa[i].x][sTimerApp->aa[i].y]==2)||(sTimerApp->aa[i].y>9)||(sTimerApp->aa[i].y<0)||(sTimerApp->aa[i].x>13)||(sTimerApp->aa[i].x<0))
{
for(j=0;j<4;j++)
{
sTimerApp->aa[j].x=sTimerApp->bb[j].x;
sTimerApp->aa[j].y=sTimerApp->bb[j].y;
}
return 0;
}
}
}
}
return 1;
}
void setIndex(TimerApp * sTimerApp)
{
JulianType julianDate;
uint16 sec;
uint16 min;
GET_JULIANDATE(0, &julianDate);
sec = julianDate.wSecond;
min = julianDate.wMinute;
if(sTimerApp->nextindex == 10)
{
sTimerApp->index = sec + min;
sTimerApp->index %= 7;
sTimerApp->nextindex = sec;
sTimerApp->nextindex %= 7;
}
else
{
sTimerApp->index = sTimerApp->nextindex;
sTimerApp->nextindex = sec;
sTimerApp->nextindex %= 7;
}
}
void displayScore(TimerApp * sTimerApp)
{
AECHAR scoreBuffer[20] = {0};
AECHAR HiscoreBuffer[20] = {0};
AECHAR LevelBuffer[20] = {0};
AECHAR format[] = {'%', 'd', '\0'};
if (sTimerApp->count>=sTimerApp->highScore)
{
sTimerApp->highScore=sTimerApp->count;
}
if (sTimerApp->timerValue>150)
{
sTimerApp->level = sTimerApp->count/200+sTimerApp->tempLevel;
sTimerApp->timerValue = 1000-(sTimerApp->level*150);
}
//STR_TO_WSTR(pThis->user[pThis->index].user_name, user_buf, USERNAME_LENGTH+1);
WSPRINTF(LevelBuffer, sizeof(LevelBuffer), format, sTimerApp->level);
WSPRINTF(scoreBuffer, sizeof(scoreBuffer), format, sTimerApp->count);
WSPRINTF(HiscoreBuffer, sizeof(HiscoreBuffer), format, sTimerApp->highScore);
//IDISPLAY_ClearScreen(sTimerApp->a.m_pIDisplay);
IDISPLAY_DrawText(sTimerApp->a.m_pIDisplay, AEE_FONT_NORMAL, LevelBuffer, -1, 100, 20, NULL, NULL);
IDISPLAY_DrawText(sTimerApp->a.m_pIDisplay, AEE_FONT_NORMAL, HiscoreBuffer, -1, 90, 40, NULL, NULL);
IDISPLAY_DrawText(sTimerApp->a.m_pIDisplay, AEE_FONT_NORMAL, scoreBuffer, -1, 90, 60, NULL, NULL);
IDISPLAY_Update(sTimerApp->a.m_pIDisplay);
}
void Over(TimerApp * sTimerApp)
{
int i,j;
//clean(sTimerApp);
for(i=0;i<14;i++)
{
for(j=0;j<10;j++)
{
sTimerApp->cor[i][j]=0;
sTimerApp->flag2=1;
}
}
sTimerApp->count = 0;
sTimerApp->level = 0;
sTimerApp->tempLevel = 0;
sTimerApp->isPaused = 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -