/*-----------------运行环境tc2.0-------------------------------*/
/*-----------------作者:李云峰--------------------------------*/
/*-----------------oicq:21084598-------------------------------*/
/*-----------------email:lixiaolong@eyou.com-------------------*/
#include<graphics.h>
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<conio.h>
#include <dos.h>
/*-------------------------------------------------------*/
void setfram(void);
void barr(int,int,int,int);
void changed(int,int,int*);
void barc(int,int,int,int);
void clearc(int,int,int*);
void delay1(unsigned x);
void initpump(void);
int test(int xx,int yy,int left,int right,int bottom,int roll);
void randone(void);
void mark(int xx,int yy);
int scans(void);
void kick(int rownum);
void redisplay(void);
void exchanged(void);
void outnum(int x,int y,int num);
void gameover(void);
/*-----------------------------------------------------*/
static int pump[37][18];
static int pause=0;
static int i=0;
static int *p[4];
static int x,y;
static int inext;
static int *pnext[4];
static int xnext=60,ynext=0;
static int quit=0;
static int *pp[7][4];
static int score;
static int layer;
static int t0[4][4]={{2,3,1},{0,1,0}};
static int t1[4][4]={{3,-2},{1,1},{1,0}};
static int t2[4][4]={{-2,3,0},{1,1,1}};
static int t3[4][4]={{-3,2},{1,1},{0,1}};
static int f[4][4]={{2,2},{1,1}};
static int a0[4][4]={{2,3,0},{0,1,1}};
static int a1[4][4]={{-3,2},{1,1},{1,0}};
static int b0[4][4]={{-2,3,1},{1,1,0}};
static int b1[4][4]={{3,-2},{1,1},{0,1}};
static int c0[4][4]={{3,2},{1,0},{1,0}};
static int c1[4][4]={{2,-3,0},{1,1,1}};
static int c2[4][4]={{-3,2},{0,1},{1,1}};
static int c3[4][4]={{2,3,1},{0,0,1}};
static int d0[4][4]={{3,2},{0,1},{0,1}};
static int d1[4][4]={{2,3,1},{1,0,0}};
static int d2[4][4]={{3,-2},{1,0},{1,1}};
static int d3[4][4]={{-2,-3,1},{1,1,1}};
static int e0[4][4]={{-4,2},{0,1},{0,1},{0,1}};
static int e1[4][4]={{-2,-4,0,0},{1,1,1,1}};
/*--------------------------------------------------------*/
main(void)
{ extern int i;
extern int *p[4];
extern int x,y;
extern int layer,score;
int exchangeon;
int rownum;
int count;
char ch;
int drive=VGA,mode=2;
initgraph(&drive,&mode,"");
/*##############数据初始化#####################################*/
pp[0][0]=t0[0];pp[0][1]=t1[0];pp[0][2]=t2[0];pp[0][3]=t3[0];
pp[1][0]=f[0];pp[1][1]=f[0];pp[1][2]=f[0];pp[1][3]=f[0];
pp[2][0]=a0[0];pp[2][1]=a1[0];pp[2][2]=a0[0];pp[2][3]=a1[0];
pp[3][0]=b0[0];pp[3][1]=b1[0];pp[3][2]=b0[0];pp[3][3]=b1[0];
pp[4][0]=c0[0];pp[4][1]=c1[0];pp[4][2]=c2[0];pp[4][3]=c3[0];
pp[5][0]=d0[0];pp[5][1]=d1[0];pp[5][2]=d2[0];pp[5][3]=d3[0];
pp[6][0]=e0[0];pp[6][1]=e1[0];pp[6][2]=e0[0];pp[6][3]=e1[0];
/*##############################################################*/
initpump();
setfram();
/*##############主程序#########################################*/
randone();
exchanged();
exchangeon=1;
while(1)
{if(exchangeon)
{randone();
barc(220,30,289,99);
changed(240,50,pnext[inext]);
exchangeon=0;}
delay1(15);
if(quit) break;
if(test(x,y,0,0,1,0))
{ clearc(x,y,p[i]);
y+=10;
changed(x,y,p[i]);
}
else {mark(x,y);
exchanged();
exchangeon=1;
if(!test(x,y,0,0,1,0)) {gameover();
ch=getch();
while(!(ch=='p'||ch=='P'))
{if(ch=='q'||ch=='Q') break;ch=getch();}
if(ch=='q'||ch=='Q') break;
initpump();
clearviewport();
layer=0;
score=0;
barc(220,160,289,189);
outnum(223,170
[1] [2] [3] [4] 下一页