📄 game.lst
字号:
C51 COMPILER V8.01 GAME 11/28/2006 08:08:06 PAGE 1
C51 COMPILER V8.01, COMPILATION OF MODULE GAME
OBJECT MODULE PLACED IN ..\..\1out\Game.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\..\msFunc\Game.c BROWSE INCDIR(..\..\inc;..\..\mslib;..\..\Device;..\..\
-kernal;..\..\msFunc;..\..\pc;..\..\tv) DEBUG OBJECTEXTEND PRINT(..\..\1out\Game.lst) OBJECT(..\..\1out\Game.obj)
line level source
1
2 #define _GAME_C_
3 #include <stdlib.h>
4 #include "types.h"
5 #include "board.h"
6 #include "global.h"
7 #include "keypaddef.h"
8 #include "menu.h"
9 #include "adjust.h"
10 #include "ms_reg.h"
11 #include "msosd.h"
12 #include "power.h"
13 #include "misc.h"
14 #include "autofunc.h"
15 #include "nvram.h"
16 #include "userpref.h"
17 #include "panel.h"
18 #include "mstar.h"
*** WARNING C322 IN LINE 93 OF ..\..\INC\MSTAR.H: unknown identifier
19 #include "ms_rwreg.h"
20 #include "adjust.h"
21 #include "mcu.h"
22 #include "menustr.h"
23 #include "msAce.h"
24 #include "menufunc.h"
25 #include "Game.h"
26 #include "keypad.h"
27 #include "menustr.h"
28 #include "debug.h"
29 #if GAME_ENABLE
/********************定义全局变量*****************************/
XDATA BYTE Game_gridMatrix[MaxColume][MaxLine];/*网格数组,0表示该格无方块,1则有运动方块,2则有静止方块*/
XDATA BYTE TempMatrix[3][3];
XDATA WORD Score;
/**************************定义每种方块的形状***********************************/
BYTE code Game_I_SHAPE1[3][3]= {0,1,0,
0,1,0,
0,1,0
}; //*
BYTE code Game_I_SHAPE2[3][3]={0,0,0,
1,1,1,
0,0,0
};
BYTE code Game_O_SHAPE[3][3]= {0,0,0,
0,1,1,
0,1,1
};
BYTE code Game_SO_SHAPE[3][3]= {0,0,0,
0,0,0,
0,0,1
};
BYTE code Game_T_SHAPE1[3][3]={
0,0,0,
C51 COMPILER V8.01 GAME 11/28/2006 08:08:06 PAGE 2
1,1,1,
0,1,0
};
BYTE code Game_T_SHAPE2[3][3]={0,1,0,
1,1,0,
0,1,0
};
BYTE code Game_T_SHAPE3[3][3]={0,1,0,
1,1,1,
0,0,0
};
BYTE code Game_T_SHAPE4[3][3]={0,1,0,
0,1,1,
0,1,0
};
BYTE code Game_L_SHAPE1[3][3]={0,1,0,
0,1,0,
0,1,1
};
BYTE code Game_L_SHAPE2[3][3]={0,0,0,
1,1,1,
1,0,0
};
BYTE code Game_L_SHAPE3[3][3]={1,1,0,
0,1,0,
0,1,0
};
BYTE code Game_L_SHAPE4[3][3]={0,0,1,
1,1,1,
0,0,0
};
BYTE code Game_Z_SHAPE1[3][3]={1,0,0,
0,1,0,
0,0,0
};
BYTE code Game_Z_SHAPE2[3][3]={0,1,0,
1,0,0,
0,0,0
};
//=======================================================================
void Game_MenuExec(void)
{
BYTE i,j;
Osd_SetTextColor(CP_BlueColor, CP_TransparenceColor);
for(i=0;i<=MaxColume+10;i++)
for(j=MinLine;j<MinLine+2;j++)
Osd_DrawStr(i,j,"\x089");
Osd_SetTextColor(CP_BlackColor, CP_TransparenceColor);
for(i=0;i<=MaxColume;i++)
for(j=MinLine+2;j<MaxLine;j++)
Osd_DrawStr(i,j,"\x089");
Osd_SetTextColor(CP_YellowColor, CP_BlackColor);
i=MinColume-1;
for(j=MinLine+2;j<MaxLine;j++)
Osd_DrawStr(i,j,"\x08A");
i=MaxColume;
for(j=MinLine+2;j<MaxLine;j++)
Osd_DrawStr(i,j,"\x08A");
C51 COMPILER V8.01 GAME 11/28/2006 08:08:06 PAGE 3
Osd_SetTextColor(CP_GreenColor, CP_SeaBlueColor);
Osd_DrawStr(MaxColume+1,MinLine+2," TETRIS ");
Osd_SetTextColor(CP_YellowColor, CP_SeaBlueColor);
Osd_DrawStr(MaxColume+1,MaxLine-5,"CH TURN");
Osd_DrawStr(MaxColume+3,MaxLine-5,"\x08B");
Osd_DrawStr(MaxColume+1,MaxLine-4,"CH DOWN");
Osd_DrawStr(MaxColume+3,MaxLine-4,"\x08C");
Osd_DrawStr(MaxColume+1,MaxLine-3,"VOL-: LEFT");
Osd_DrawStr(MaxColume+1,MaxLine-2,"VOL :RIGHT");
Osd_DrawStr(MaxColume+4,MaxLine-2,"\x08D");
Osd_DrawStr(MaxColume+1,MaxLine-1,"POWER:EXIT");
Osd_SetTextColor(CP_PinkColor, CP_SeaBlueColor);
for(i=MaxColume+1;i<MaxColume+11;i++)
for(j=MinLine+3;j<MinLine+7;j++)
Osd_DrawStr(i,j,"\x089");
Osd_SetTextColor(CP_RedColor, CP_PinkColor);
Osd_DrawStr(MaxColume+4,MinLine+3,"NEXT");
Osd_SetTextColor(CP_YellowColor, CP_RedColor);
Osd_DrawStr(MaxColume+1,MaxLine-6,"SCORE ");
Game_draw_score();
}
void Game_draw_score(void)
{
BYTE GameNum0,GameNum1,GameNum2;
if(Score>999)
Score=999;
GameNum0=Score/100;
GameNum1=(Score%100)/10;
GameNum2=Score%10;
Osd_SetTextColor(CP_YellowColor, CP_RedColor);
DrawNum(MaxColume+7,MaxLine-6,1,GameNum0);
DrawNum(MaxColume+8,MaxLine-6,1,GameNum1);
DrawNum(MaxColume+9,MaxLine-6,1,GameNum2);
}
void Game_draw_next(Gameblock drblock)
{
BYTE i,j;
Game_get_matrix(drblock);
Osd_SetTextColor(CP_RedColor, CP_PinkColor);
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
Osd_DrawStr(MaxColume+4+i,MinLine+4+j,"\x088");
}
Osd_SetTextColor(drblock.color, CP_PinkColor);
for(i=0;i<3;i++)
for(j=0;j<3;j++)
C51 COMPILER V8.01 GAME 11/28/2006 08:08:06 PAGE 4
{
if(TempMatrix[i][j]==1)
Osd_DrawStr(MaxColume+4+i,MinLine+4+j,"\x087");
}
}
void Game_restart(void)
{
BYTE i,j;
Osd_SetTextColor(CP_SeaBlueColor, CP_SeaBlueColor);
for(i=MinColume;i<MaxColume;i++)
for(j=MinLine+2;j<MaxLine;j++)
Osd_DrawStr(i,j,"\x089");
Osd_SetTextColor(CP_YellowColor, CP_SeaBlueColor);
Osd_DrawStr(MinColume-1,MaxLine-6,"Game Over");
}
void Game_copy_matrix(BYTE Copy[3][3], BYTE Result[3][3])
{
BYTE i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
Result[i][j]=Copy[i][j];
}
}
void Game_get_matrix(Gameblock nblock)
{
switch(nblock.type)
{
case CP_Gameblock_I:
if(nblock.shape==1)
Game_copy_matrix(Game_I_SHAPE1,TempMatrix);
if(nblock.shape==2)
Game_copy_matrix(Game_I_SHAPE2,TempMatrix);
break;
case CP_Gameblock_O:
Game_copy_matrix(Game_O_SHAPE,TempMatrix);
break;
case CP_Gameblock_SO:
Game_copy_matrix(Game_SO_SHAPE,TempMatrix);
break;
case CP_Gameblock_T:
switch(nblock.shape)
{
case(1):
Game_copy_matrix(Game_T_SHAPE1,TempMatrix);
break;
case(2):
Game_copy_matrix(Game_T_SHAPE2,TempMatrix);
break;
case(3):
Game_copy_matrix(Game_T_SHAPE3,TempMatrix);
C51 COMPILER V8.01 GAME 11/28/2006 08:08:06 PAGE 5
break;
case(4):
Game_copy_matrix(Game_T_SHAPE4,TempMatrix);
break;
default:
break;
}
break;
case CP_Gameblock_L:
switch(nblock.shape)
{
case(1):
Game_copy_matrix(Game_L_SHAPE1,TempMatrix);
break;
case(2):
Game_copy_matrix(Game_L_SHAPE2,TempMatrix);
break;
case(3):
Game_copy_matrix(Game_L_SHAPE3,TempMatrix);
break;
case(4):
Game_copy_matrix(Game_L_SHAPE4,TempMatrix);
break;
default:
break;
}
break;
case CP_Gameblock_Z:
if(nblock.shape==1)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -