📄 game.lst
字号:
Game_copy_matrix(Game_Z_SHAPE1,TempMatrix);
if(nblock.shape==2)
Game_copy_matrix(Game_Z_SHAPE2,TempMatrix);
break;
default:
break;
}
}
void Game_draw_block(Gameblock drblock)
{
BYTE i,j;
Game_get_matrix(drblock);
Osd_SetTextColor(drblock.color, CP_BlackColor);
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
if(TempMatrix[i][j]==1)
{
if(drblock.y+j>MinLine+1)
Osd_DrawStr(drblock.x+i,drblock.y+j,"\x087");
Game_gridMatrix[drblock.x+i][drblock.y+j]=1;
}
}
}
C51 COMPILER V8.01 GAME 11/28/2006 08:08:06 PAGE 6
void Game_clear_block(Gameblock drblock)
{
BYTE i,j;
Game_get_matrix(drblock);
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
if(TempMatrix[i][j]==1)
{
if(drblock.y+j>MinLine+1)
Osd_DrawStr(drblock.x+i,drblock.y+j,"\x088");
Game_gridMatrix[drblock.x+i][drblock.y+j]=0;
}
}
}
BOOL Game_check_top(Gameblock nblock)
{
BYTE i;
BOOL Flag_1=FALSE;
for(i=1;i<MaxColume;i++)
{
if(Game_gridMatrix[i][nblock.y+2]==1)
Flag_1=TRUE;
}
return Flag_1;
}
BOOL Game_check_lborder(Gameblock nblock)
{
BYTE i,j;
Game_get_matrix(nblock);
for(j=0;j<3;j++)
for(i=0;i<3;i++)
{
if(TempMatrix[i][j]==1)
{
BOOL Flag_1=FALSE;
if((nblock.x+i-1<MinColume)||(Game_gridMatrix[nblock.x+i-1][nblock.y+j]==1))
Flag_1=TRUE;
if(Flag_1)
return TRUE;
else
break;
}
}
return FALSE;
}
BOOL Game_check_rborder(Gameblock nblock)
{
BYTE i,j;
Game_get_matrix(nblock);
C51 COMPILER V8.01 GAME 11/28/2006 08:08:06 PAGE 7
for(j=0;j<3;j++)
for(i=2;i>=0;i--)
{
if(TempMatrix[i][j]==1)
{
BOOL Flag_1=FALSE;
if((nblock.x+i+1==MaxColume)||(Game_gridMatrix[nblock.x+i+1][nblock.y+j]==1))
Flag_1=TRUE;
if(Flag_1)
return TRUE;
else
break;
}
}
return FALSE;
}
BOOL Game_check_bottom(Gameblock nblock)
{
BYTE i,j;
Game_get_matrix(nblock);
for(i=0;i<3;i++)
for(j=2;j>=0;j--)
{
if(TempMatrix[i][j]==1)
{
BOOL Flag_1=FALSE;
if(i>3||j>3) //yurian
break;
if((nblock.y+j+1==MaxLine)||(Game_gridMatrix[nblock.x+i][nblock.y+j+1]==1))
Flag_1=TRUE;
if(Flag_1)
return TRUE;
else
break;
}
}
return FALSE;
}
BOOL Game_check_change(Gameblock nblock)
{
BYTE i,j;
Game_get_matrix(nblock);
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
if(TempMatrix[i][j]==0)
{
BOOL Flag_1=FALSE;
if(Game_gridMatrix[nblock.x+i][nblock.y+j]==1)
Flag_1=TRUE;
if(Flag_1)
return TRUE;
}
}
return FALSE;
}
C51 COMPILER V8.01 GAME 11/28/2006 08:08:06 PAGE 8
void Game_ini_grid(void)
{
BYTE i,j;
for(i=0;i<MaxColume;i++)
for(j=0;j<MaxLine;j++)
{
Game_gridMatrix[i][j]=0;
}
}
void Game_draw_grid(Gameblock drblock)
{
BYTE i,j;
Osd_SetTextColor(drblock.color, CP_BlackColor);
for(i=1;i<MaxColume;i++)
for(j=MinLine+2;j<MaxLine;j++)
{
if(Game_gridMatrix[i][j]==1)
Osd_DrawStr(i,j,"\x087");
else
Osd_DrawStr(i,j,"\x088");
}
}
Gameblock Game_createblock()
{
XDATA Gameblock newblock ;
BYTE r;
r=rand();
r+=(g_uwGameMsCounter%11);
r=r%6;
switch(r)
{case(0):newblock.type=CP_Gameblock_I;newblock.color=CP_SeaBlueColor; break;
case(1):newblock.type=CP_Gameblock_O;newblock.color=CP_BlueColor; break;
case(2):newblock.type=CP_Gameblock_SO;newblock.color=CP_GreenColor; break;
case(3):newblock.type=CP_Gameblock_T;newblock.color=CP_YellowColor; break;
case(4):newblock.type=CP_Gameblock_L;newblock.color=CP_RedColor; break;
case(5):newblock.type=CP_Gameblock_Z;newblock.color=CP_WhiteColor; break;
}
newblock.shape=1;
newblock.x=3;
newblock.y=0;
if(GameBlockFastDownFlag)
Clr_GameBlockFastDownFlag();
return newblock;
}
Gameblock Game_change(Gameblock nblock)
{
switch(nblock.type)
{case CP_Gameblock_I:
switch(nblock.shape)
{
case(1):
C51 COMPILER V8.01 GAME 11/28/2006 08:08:06 PAGE 9
if((nblock.x<MinColume)||(nblock.x+2==MaxColume)||Game_check_change(nblock))
//printf("ID %d", nblock.x);
return nblock;
Game_clear_block(nblock);
nblock.shape++;
break;
case(2):
if(Game_check_change(nblock))
return nblock;
Game_clear_block(nblock);
nblock.shape--;
break;
}
break;
case CP_Gameblock_T:
switch(nblock.shape)
{
case(1):
if((nblock.x<MinColume)||Game_check_change(nblock))
//printf("ID %d", nblock.x);
return nblock;
Game_clear_block(nblock);
nblock.shape++;
break;
case(2):
if((nblock.y+2==MaxLine)||Game_check_change(nblock))
return nblock;
Game_clear_block(nblock);
nblock.shape++;
break;
case(3):
if((nblock.x+2==MaxColume)||Game_check_change(nblock))
return nblock;
Game_clear_block(nblock);
nblock.shape++;
break;
case(4):
if(Game_check_change(nblock))
return nblock;
Game_clear_block(nblock);
nblock.shape=1;
break;
}
break;
case CP_Gameblock_L:
switch(nblock.shape)
{
case(1):
if(Game_check_change(nblock))
return nblock;
Game_clear_block(nblock);
nblock.shape++;
break;
case(2):
if((nblock.x<MinColume)||Game_check_change(nblock))
return nblock;
Game_clear_block(nblock);
nblock.shape++;
break;
case(3):
if(Game_check_change(nblock))
return nblock;
C51 COMPILER V8.01 GAME 11/28/2006 08:08:06 PAGE 10
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -