?? transmit_task.c
字號(hào):
///////// Transmit_Task /////////////
void Transmit_Task(void *Id)
{
int i = 0;
u8 oldendpos[2];
char Game_Over_Caption_8[]="Game Over";
char Game_Paused_Caption_8[]="Game Paused";
char Game_Pass_Caption_8[]="Game Passed";
U16 Game_Over_Caption_16[20];
U16 Game_Paused_Caption_16[20];
U16 Game_Pass_Caption_16[20];
strChar2Unicode(Game_Over_Caption_16, Game_Over_Caption_8);
strChar2Unicode(Game_Paused_Caption_16, Game_Paused_Caption_8);
strChar2Unicode(Game_Pass_Caption_16, Game_Pass_Caption_8);
if (initfinished == FALSE)
OSTimeDly(2000);
while(1)
{
if (pause == TRUE)
{
TextOut(pdc, 100,115, Game_Paused_Caption_16, TRUE, FONTSIZE_SMALL);
OSTimeDly(200);
continue;
}
if (gameover == TRUE)
{
TextOut(pdc, 100,115, Game_Over_Caption_16, TRUE, FONTSIZE_SMALL);
OSTimeDly(200);
continue;
}
if (gamepass == TRUE)
{
TextOut(pdc,100,115,Game_Pass_Caption_16,TRUE,FONTSIZE_SMALL);
OSTimeDly(200);
continue;
}
oldendpos[0] = EndPos[0];
oldendpos[1] = EndPos[1];
//判斷snake頭部的變化
switch (HeadDirect)
{
case 1:
HeadPos[0] = HeadPos[0] + 1;
break;
case 2:
HeadPos[0] = HeadPos[0] - 1;
break;
case 3:
HeadPos[1] = HeadPos[1] - 1;
break;
case 4:
HeadPos[1] = HeadPos[1] + 1;
break;
}
//判斷snake尾部的變化
if (ChangePointCount > 0)
{
if ( ( abs(ChangePointPos[ChangePointCount-1][0]-EndPos[0])+abs(ChangePointPos[ChangePointCount-1][1]-EndPos[1])) == 0)
{
DelChangePoint();
}
}
switch(EndDirect)
{
case 1:
EndPos[0] = EndPos[0] + 1;
break;
case 2:
EndPos[0] = EndPos[0] - 1;
break;
case 3:
EndPos[1] = EndPos[1] - 1;
break;
case 4:
EndPos[1] = EndPos[1] + 1;
break;
}
Check();
if (gameover == TRUE)
{
TextOut(pdc, 100,115, Game_Over_Caption_16, TRUE, FONTSIZE_SMALL);
OSTimeDly(200);
continue;
}
if (gamepass == TRUE)
{
TextOut(pdc,100,115,Game_Pass_Caption_16,TRUE,FONTSIZE_SMALL);
OSTimeDly(200);
continue;
}
if (addcount > 0)
{
EndPos[0] = oldendpos[0];
EndPos[1] = oldendpos[1];
addcount--;
catch = FALSE;
}
//繪制豆子
FillRect2(pdc, psnakeRect, GRAPH_MODE_NORMAL, RGB(255, 255, 255));//清除主窗口的顯示
for(i=0;i<3;i++)
{
if (boolbean00[i] == TRUE)
{
Circle(pdc,20+5*bean00[i][0]-2, 20+5*bean00[i][1]-2, 2);
}
}
if (boolbean01[0] == TRUE)
{
Circle(pdc,20+5*bean01[0][0]-2, 20+5*bean01[0][1]-2, 2);
}
if (boolbean10[0] == TRUE)
{
Circle(pdc,20+5*bean10[0][0]-2, 20+5*bean10[0][1]-2, 2);
}
if (boolbean11[0] == TRUE)
{
Circle(pdc,20+5*bean11[0][0]-2, 20+5*bean11[0][1]-2, 2);
}
//繪制snake
//ClearScreen();
Draw3DRect2(pdc, psnakeRect, RGB(50, 50, 50), RGB(160, 160, 160));
FillRect2(pdc, pbarRect1, GRAPH_MODE_NORMAL, RGB(0, 0, 0));
FillRect2(pdc, pbarRect2, GRAPH_MODE_NORMAL, RGB(0, 0, 0));
if (ChangePointCount==0)
{
draw_rect(HeadPos[0],HeadPos[1], EndPos[0], EndPos[1]);
}
else
{
draw_rect(HeadPos[0],HeadPos[1], ChangePointPos[0][0], ChangePointPos[0][1]);
for(i=1; i<ChangePointCount; i++)
{
draw_rect(ChangePointPos[i-1][0], ChangePointPos[i-1][1], ChangePointPos[i][0], ChangePointPos[i][1]);
}
draw_rect(ChangePointPos[i-1][0], ChangePointPos[i-1][1], EndPos[0],EndPos[1]);
}
OSTimeDly(200);
}
}
//////////////////////////////////////////////////////////////////////////
void DelChangePoint()
{
EndDirect = ChangePointDirect[ChangePointCount-1];
EndPos[0] = ChangePointPos[ChangePointCount-1][0];
EndPos[1] = ChangePointPos[ChangePointCount-1][1];
ChangePointPos[ChangePointCount-1][0] = 0;
ChangePointPos[ChangePointCount-1][1] = 0;
ChangePointDirect[ChangePointCount-1] = 0;
ChangePointCount--;
}
////////check_status///////////////////////
void Check()
{
int i = 0;
//if( (HeadPos[0]>xmax)||(HeadPos[0] < xmin )||(HeadPos[1] > ymax )||(HeadPos[1] < ymin ) )
//{
//gameover = TRUE;
//return;
//}
__asm
{
cmp HeadPos[0], xmax
bgt gameend
cmp HeadPos[0], xmin
blt gameend
cmp HeadPos[1], ymax
bgt gameend
cmp HeadPos[1], ymin
bge gamecontinue
gameend:
mov gameover,#1
gamecontinue:
}
if (gameover == TRUE) return;
if (IsInRect(pbarRect1_5, HeadPos[0], HeadPos[1]) )
{
gameover = TRUE;
return;
}
if (IsInRect(pbarRect2_5, HeadPos[0], HeadPos[1]) )
{
gameover = TRUE;
return;
}
if (HeadPos[0] <= 20)
{
if (HeadPos[1] <=20)
{
for (i=0;i<3;i++)
if (boolbean00[i] == TRUE)
{
if ( (bean00[i][0] == HeadPos[0]) && (bean00[i][1] == HeadPos[1]) )
{
catch = TRUE;
boolbean00[i] = FALSE;
addcount = 2;
return;
}
}
}
else
{
if (boolbean01[0] == TRUE)
{
if ( (bean01[0][0] == HeadPos[0]) && (bean01[0][1] == HeadPos[1]) )
{
catch = TRUE;
boolbean01[0] = FALSE;
addcount = 2;
return;
}
}
}
}
else
{
if (HeadPos[1] <=20)
{
if (boolbean10[0] == TRUE)
{
if ( (bean10[0][0] == HeadPos[0]) && (bean10[0][1] == HeadPos[1]) )
{
catch = TRUE;
boolbean10[0] = FALSE;
addcount = 2;
return;
}
}
}
else
{
if (boolbean11[0] == TRUE)
{
if ( (bean11[0][0] == HeadPos[0]) && (bean11[0][1] == HeadPos[1]) )
{
catch = TRUE;
boolbean11[0] = FALSE;
addcount = 2;
return;
}
}
}
}
gamepass = TRUE;
for (i=0;i<3;i++)
if (boolbean00[i] == TRUE)
gamepass = FALSE;
if ( (boolbean01[0] == TRUE)|| (boolbean10[0] == TRUE) ||(boolbean11[0] == TRUE) )
gamepass = FALSE;
}
/////////draw_rect///////////////////
void draw_rect(u8 headx, u8 heady, u8 endx, u8 endy)
{
if (endy == heady)
{
if (headx > endx)
FillRect(pdc, 20+5*(endx-1), 20+5*(endy-1), 20+5*headx, 20+5*endy,GRAPH_MODE_NORMAL, RGB(0, 0, 0));
else
FillRect(pdc, 20+5*(headx-1), 20+5*(endy-1), 20+5*endx, 20+5*endy,GRAPH_MODE_NORMAL, RGB(0, 0, 0));
}
else if (endx == headx)
{
if (heady > endy)
FillRect(pdc, 20 + 5 *(endx - 1), 20 + 5 *(endy - 1), 20 + 5 * headx, 20 + 5 * heady,GRAPH_MODE_NORMAL, RGB(0, 0, 0));
else
FillRect(pdc, 20 + 5 *(endx - 1), 20 + 5 *(heady - 1), 20 + 5 * headx, 20 + 5 * endy,GRAPH_MODE_NORMAL, RGB(0, 0, 0));
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -