#include <graphics.h>
#include <stdlib.h>
#include <dos.h>
#include <time.h>
#include <conio.h>
#include <stdio.h>
#define N 4
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define DOWN 0x5000
#define UP 0x4800
#define Esc 0x011b
int i,j,k,l,jd=0,key,live,trans=0,born,color,esca,judge,addon,gori=0,score=0,gamespeed=30000;/*gori=goto right,judge某一行是否全满,addon消掉几层,score加多少分,esca退出,live记录一个方块的步数*/
int row[16]={90,110,130,150,170,190,210,230,250,270,290,310,330,350,370,390},col[9]={230,250,270,290,310,330,350,370,390};
struct square/*定义方块的结构*/
{
int y[N],x[N];
int direction;
int life;
}s;
void Init(void);/*---硬件初始化---*/
void background(void);/*---画背景---*/
void xuxian(void);/*---虚线网格---*/
void PrScore(void);/*---画计分器---*/
void GameOver(void);/*---制作结束画面---*/
void Close(void);
void birth(void);/*---随机选择方块,并设置小方格的相对初始位置---*/
void paint(void);/*---画出来---*/
void erase(void);/*---擦掉---*/
void taround(void);/*-----用于旋转-----*/
void q0(void);/*---q0到q6是七种方块各自的不同旋转方向的相对位置---*/
void q1(void);
void q2(void);
void q3(void);
void q4(void);
void q5(void);
void q6(void);
void beside(void);/*---判断左右兼下方是否能够移动,如果可以,赋予新坐标---*/
void press(void);/*---按键控制---*/
void full(void);/*---judge判断某行是否垒满,addon记录垒满几行,并消去已经垒满的行---*/
void noinput(void);/*---最内层循环,没有键输入的时候---*/
void jq0(void);/*---对棍的判断与移动---*/
void jq1(void);/*---对方块的判断与移动---*/
void jq2(void);/*---对左勾的判断与移动---*/
void jq3(void);/*---对右勾的判断与移动---*/
void jq4(void);/*---对左拐的判断与移动---*/
void jq5(void);/*---对右拐的判断与移动---*/
void jq6(void);/*---对T型的判断与移动---*/
/*-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-主函数从这里开始-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-*/
void main(void)
{
Init();/*---硬件初始化---*/
background();/*---画背景---*/
/*xuxian();*//*---虚线网格---*/
PrScore();/*---画计分器---*/
while(1)/*---产生一个新方块---*/
{
birth();/*---随机选择方块,并设置四个小方格的相对初始位置---*/
paint();/*---画出来---*/
live=0;