文档介绍:C51 游戏- 俄罗斯方块************ 说明****************************** 文件和一个 文件******************** 文件************************** #include "" #include "" #define uchar unsigned char #define uint unsigned int static unsigned long Seed = 1; #define A 48271L #define M 2147483647L #define Q (M/ A) #define R (M% A) sbit K1=P3^4; sbit K2=P3^5; sbit K3=P3^6; sbit K4=P3^7; unsigned int idata num[19+2]={ 0xfff,// 第1 行,最下面 0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801, 0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,// 第2 行到第 20 行共 19行 0xfff// 第 21 行,最上面};// 定义共 21行, 其中 num[0] 为下墙壁行, num[20] 为上墙壁行,每行 12 格,最左一格为左墙壁列,最右一格为右墙壁列 unsigned char code Block[28][2]={ /* *口口口口口口*口口口口* 口口口口口口*/ {0x88,0xc0},{0xe8,0x00},{0x62,0x20},{0x02,0xe0}, /* *口口口口口口*口口口口* 口口口口口口*/ {0x22,0x60},{0x08,0xe0},{0xc8,0x80},{0xe2,0x00}, /* *口* 口口口口*口口口*/ {0x8c,0x40},{0x6c,0x00},{0x8c,0x40},{0x6c,0x00}, /* *口口口* 口口口口*口*/ {0x4c,0x80},{0xc6,0x00},{0x4c,0x80},{0xc6,0x00}, /* *口口*口口口口口口口口* 口口口口口口*/ {0x04,0xe0},{0x8c,0x80},{0xe4,0x00},{0x26,0x20}, /*口*口*口口口口口*口*/ {0x44,0x44},{0x0f,0x00},{0x44,0x44},{0x0f,0x00}, /* * 口口* 口口*/ {0x06,0x60},{0x06,0x60},{0x06,0x60},{0x06,0x60} }; #define PASSSCORE 20 struct Jimu { unsigned int dat; char x; unsigned char y; unsigned char type; unsigned char change; }Sign[3];// 积木结构体 unsigned char SysFlag=0; #define NEWSIGNFLAG 0 #define DEADFLAG 1 #define PAUSEFLAG 2 unsigned char Score=0; unsigned char Level=1; unsigned char t=5; /*********************************************************/ #define N 25 /************************************ 伪随机数发生器*************************************/ double Random(void) { long TmpSeed; TmpSeed=A*(Seed%Q)-R*(Seed/Q); if(TmpSeed>=0) Seed=TmpSeed; else Seed=TmpSeed+M; return (double)Seed/M; } /************************************** 为伪随机数发生器播种***************************************/ void InitRandom(unsigned long InitVal) { Seed=InitVal; } // 延时子程序 void Delay(unsigned int t) { unsigned int i,j; for(i=0;i<