www.pudn.com > eluosifangkuancyuyan.rar > RUSSIA.C


#include  
#include  
#include  
#include  
#include  
#include  
#include  
int i,j,x,y,m,n,u,v,index,getkey; 
/*i,j is desimion points;x,y is russia condiate;m,n is draw russia; 
  u,u is clear russia full*/ 
int grid[14][21]={0},gridfull=0; 
/*grid is desimion;gridfull is or not desimion second points is full*/ 
int next,score=0; 
char sco[5]="0000"; 
 
void Tiao_ver(),Tiao_hor(),Dis_block(),Cycling(),Z_shape(),N_shape(); 
void Z_reverse_shape(),N_reverse_shape(),Inspect_sinkage_next(); 
void L_shape(),Digger(),Sling(),Truck(); 
void Tine_up(),Tine_left(),Tine_down(),Tine_right(); 
void Window_3d(int left,int up,int right,int down,int high); 
void islost(),Dis_next(),Dis_score(); 
 
void Dis_score() 
{ 
	score+=1; 
	sprintf(sco,"%04d",score); 
	Window_3d(400,300,450,320,-1); 
	outtextxy(405,300,sco); 
} 
 
void islost() 
{ 
	for(index=0;index<12;index++) 
		if(grid[index][0]==1) 
		{ 
			Window_3d(60,70,300,150,1); 
			settextstyle(TRIPLEX_FONT,HORIZ_DIR,2); 
			setcolor(RED); 
			outtextxy(80,80,"Game Over!"); 
			setcolor(BLUE); 
			outtextxy(80,100,"If replay press R key."); 
			outtextxy(80,120,"If exit press Q key."); 
			do{ 
				getkey=getch(); 
				if(getkey=='q'||getkey=='Q') 
					exit(1); 
				else if(getkey=='r'||getkey=='R') 
				{ 
					for(i=0;i<13;i++) 
					for(j=0;j<19;j++) 
						grid[i][j]=0; 
					Cycling(); 
				} 
			}while(1); 
		} 
} 
void Window_3d(int left,int up,int right,int down,int high) 
{ 
	setfillstyle(SOLID_FILL,LIGHTGRAY); 
	bar(left,up,right,down); 
	if(high==2) 
	{ 
		setcolor(WHITE); 
		line(left,up,left,down); 
		line(left+1,up+1,left+1,down-1); 
		line(left,up,right,up); 
		line(left+1,up+1,right-1,up+1); 
		setcolor(DARKGRAY); 
		line(right,down,right,up); 
		line(right-1,down-1,right-1,up+1); 
		line(right,down,left,down); 
		line(right-1,down-1,left+1,down-1); 
	} 
	else if(high==-1) 
		{ 
		setcolor(DARKGRAY); 
		line(left,up,left,down); 
		line(left,up,right,up); 
		setcolor(WHITE); 
		line(right,down,right,up); 
		line(right,down,left,down); 
		} 
	else 
		{ 
		setcolor(WHITE); 
		line(left,up,left,down); 
		line(left,up,right,up); 
		setcolor(DARKGRAY); 
		line(right,down,right,up); 
		line(right,down,left,down); 
		} 
} 
void Inspect_sinkage_next() 
{ 
	for(n=0;n<19;n++) 
	{ 
		gridfull=1; 
		for(m=0;m<13;m++) 
			if(grid[m][n]==0) 
			{ 
				gridfull=0; 
				break; 
			} 
		if(gridfull==1) 
		{ 
			for(v=n;v>0;v--) 
				for(u=0;u<13;u++) 
					grid[u][v]=grid[u][v-1]; 
			Dis_score(); 
		} 
	} 
	Cycling(); 
} 
 
/*========delay for some sec===========================*/ 
Delay(float sec) 
{ 
	long t1,t2; 
	float t3=0; 
	t1=clock(); 
	while(t3>8; 
			if(getkey==27) 
				exit(0); 
 
			if(i>0&&i<12) 
				switch(getkey) 
				{ 
					case 75: 
						if(grid[i-1][j]==0&&grid[i-1][j+1]==0&& 
							grid[i-1][j+2]==0&&grid[i-1][j+3]==0) 
						{ 
							i--; 
							for(index=0;index<4;index++) 
							{ 
								grid[i][j+index]=1; 
								grid[i+1][j+index]=0; 
							} 
						} 
						break; 
					case 77: 
						if(grid[i+1][j]==0&&grid[i+1][j+1]==0&& 
							grid[i+1][j+2]==0&&grid[i+1][j+3]==0) 
						{ 
							i++; 
							for(index=0;index<4;index++) 
							{ 
								grid[i][j+index]=1; 
								grid[i-1][j+index]=0; 
							} 
						} 
						break; 
					case 72:Tiao_hor(); 
				} 
				Dis_block(); 
		} 
		else 
		{ 
			j++; 
			if(j+4>19||grid[i][j+3]==1) 
			{   islost(); 
				Inspect_sinkage_next(); 
				islost(); 
			} 
			for(index=0;index<4;index++) 
				grid[i][j+index]=1; 
			grid[i][j-1]=0; 
			Dis_block(); 
		} 
	} 
} 
/*	oooo	*/ 
void Tiao_hor() 
{ 
	/*Init Tiao_hor*/ 
	for(index=0;index<4;index++) 
	{ 
		grid[i+index][j]=1; 
		grid[i][j+index]=0; 
	} 
 
	while(1) 
	{ 
		if(bioskey(1)) 
		{ 
			getkey=bioskey(0); 
			getkey=getkey&0xff?getkey&0xff:getkey>>8; 
			if(getkey==27) 
				exit(0); 
 
			if(i>0&&i<9) 
				switch(getkey) 
				{ 
					case 75: 
						if(grid[i-1][j]==0) 
						{ 
							i--; 
							grid[i][j]=1; 
							grid[i+4][j]=0; 
						} 
						break; 
					case 77: 
						if(grid[i+4][j]==0) 
						{ 
							i++; 
							grid[i+3][j]=1; 
							grid[i-1][j]=0; 
 
						} 
						break; 
					case 72:Tiao_ver(); 
				} 
			Dis_block(); 
		} 
		else 
		{ 
			j++; 
			if(j>18||grid[i][j]==1||grid[i][j]==1|| 
			grid[i+2][j]==1||grid[i+3][j]==1) 
			{            islost(); 
				  Inspect_sinkage_next(); 
				  islost(); 
			} 
 
			for(index=0;index<4;index++) 
			{ 
				grid[i+index][j]=1; 
				grid[i+index][j-1]=0; 
			} 
			Dis_block(); 
		} 
	} 
} 
/*	oo 
	oo	*/ 
void Farmland() 
{ 
	while(1) 
	{ 
		if(bioskey(1)) 
		{ 
			getkey=bioskey(0); 
			getkey=getkey&0xff?getkey&0xff:getkey>>8; 
			if(getkey==27) 
				exit(0); 
 
			if(i>0&&i<11) 
				switch(getkey) 
				{ 
					case 75: 
						if(grid[i-1][j]==0&&grid[i-1][j+1]==0) 
						{ 
							i--; 
							grid[i][j]=1; 
							grid[i][j+1]=1; 
							grid[i+2][j]=0; 
							grid[i+2][j+1]=0; 
 
						} 
						break; 
					case 77: 
						if(grid[i+2][j]==0&&grid[i+2][j]==0) 
						{ 
							i++; 
							grid[i+1][j]=1; 
							grid[i+1][j+1]=1; 
							grid[i-1][j]=0; 
							grid[i-1][j+1]=0; 
						} 
						break; 
				} 
			Dis_block(); 
		} 
		else 
		{ 
			j++; 
			if(j>17||grid[i][j+1]==1||grid[i+1][j+1]==1) 
			{                     islost(); 
				Inspect_sinkage_next(); 
				islost(); 
			} 
 
			grid[i][j-1]=0; 
			grid[i+1][j-1]=0; 
			grid[i][j+1]=1; 
			grid[i+1][j+1]=1; 
 
			Dis_block(); 
		} 
	} 
} 
/*	oo 
	 oo	*/ 
void Z_shape() 
{ 
	grid[i+1][j]=0; 
	grid[i+1][j-1]=0; 
	grid[i][j]=1; 
	grid[i-1][j]=1; 
	grid[i][j+1]=1; 
	grid[i+1][j+1]=1; 
 
	while(1) 
	{ 
		if(bioskey(1)) 
		{ 
			getkey=bioskey(0); 
			getkey=getkey&0xff?getkey&0xff:getkey>>8; 
			if(getkey==27) 
				exit(0); 
 
			if(i>1&&i<11) 
				switch(getkey) 
				{ 
					case 75: 
						if(grid[i-2][j]==0&&grid[i-1][j+1]==0) 
						{ 
							i--; 
							grid[i-1][j]=1; 
							grid[i][j+1]=1; 
							grid[i+1][j]=0; 
							grid[i+2][j+1]=0; 
 
						} 
						break; 
					case 77: 
						if(grid[i+1][j]==0&&grid[i+2][j+1]==0) 
						{ 
							i++; 
							grid[i][j]=1; 
							grid[i+1][j+1]=1; 
							grid[i-2][j]=0; 
							grid[i-1][j+1]=0; 
						} 
						break; 
					case 72: N_shape(); 
				} 
				Dis_block(); 
		} 
		else 
		{ 
			j++; 
			if(j>17||grid[i-1][j]==1||grid[i][j+1]==1||grid[i+1][j+1]==1) 
			{                              islost(); 
				Inspect_sinkage_next(); 
				islost(); 
			} 
 
			grid[i-1][j-1]=0; 
			grid[i][j-1]=0; 
			grid[i+1][j]=0; 
			grid[i-1][j]=1; 
			grid[i][j+1]=1; 
			grid[i+1][j+1]=1; 
			Dis_block(); 
		} 
	} 
} 
/*	 o 
	oo 
	o	*/ 
void N_shape() 
{ 
	grid[i+1][j-1]=1; 
	grid[i+1][j]=1; 
	grid[i-1][j]=0; 
	grid[i+1][j+1]=0; 
	while(1) 
	{ 
		if(bioskey(1)) 
		{ 
			getkey=bioskey(0); 
			getkey=getkey&0xff?getkey&0xff:getkey>>8; 
			if(getkey==27) 
				exit(0); 
 
			if(i>0&&i<11) 
				switch(getkey) 
				{ 
					case 75: 
						if(grid[i-1][j]==0&&grid[i-1][j+1]==0&& 
						grid[i][j-1]==0) 
						{ 
							i--; 
							grid[i+1][j-1]=1; 
							grid[i][j]=1; 
							grid[i][j+1]=1; 
							grid[i+1][j+1]=0; 
							grid[i+2][j]=0; 
							grid[i+2][j-1]=0; 
						} 
						break; 
					case 77: 
						if(grid[i+2][j-1]==0&&grid[i+2][j+1]==0&& 
						grid[i+1][j+1]==0) 
						{ 
							i++; 
							grid[i+1][j-1]=1; 
							grid[i+1][j]=1; 
							grid[i][j+1]=1; 
							grid[i-1][j]=0; 
							grid[i-1][j+1]=0; 
							grid[i][j-1]=0; 
						} 
						break; 
					case 72: Z_shape(); 
				} 
				Dis_block(); 
		} 
		else 
		{ 
			j++; 
			if(j>17||grid[i+1][j]==1||grid[i][j+1]==1) 
			{                                       islost(); 
				Inspect_sinkage_next(); 
				islost(); 
			} 
 
			grid[i+1][j-2]=0; 
			grid[i][j-1]=0; 
			grid[i][j+1]=1; 
			grid[i+1][j]=1; 
			Dis_block(); 
		} 
	} 
} 
/*	 oo 
	oo	*/ 
void Z_reverse_shape() 
{ 
	grid[i][j]=1; 
	grid[i-1][j+1]=1; 
	grid[i][j+1]=1; 
	grid[i+1][j]=1; 
	grid[i][j-1]=0; 
	grid[i+1][j+1]=0; 
 
	while(1) 
	{ 
		if(bioskey(1)) 
		{ 
			getkey=bioskey(0); 
			getkey=getkey&0xff?getkey&0xff:getkey>>8; 
			if(getkey==27) 
				exit(0); 
 
			if(i>1&&i<11) 
				switch(getkey) 
				{ 
					case 75: 
						if(grid[i-1][j]==0&&grid[i-2][j+1]==0) 
						{ 
							i--; 
							grid[i][j]=1; 
							grid[i-1][j+1]=1; 
							grid[i+1][j+1]=0; 
							grid[i+2][j]=0; 
 
						} 
						break; 
					case 77: 
						if(grid[i+1][j+1]==0&&grid[i+2][j]==0) 
						{ 
							i++; 
							grid[i+1][j]=1; 
							grid[i][j+1]=1; 
							grid[i-2][j+1]=0; 
							grid[i-1][j]=0; 
						} 
						break; 
					case 72: N_reverse_shape(); 
				} 
				Dis_block(); 
		} 
		else 
		{ 
			j++; 
			if(j>17||grid[i-1][j+1]==1||grid[i][j+1]==1||grid[i+1][j]==1) 
			{                                                islost(); 
				Inspect_sinkage_next(); 
				islost(); 
			} 
 
			grid[i+1][j-1]=0; 
			grid[i][j-1]=0; 
			grid[i-1][j]=0; 
			grid[i-1][j+1]=1; 
			grid[i][j+1]=1; 
			grid[i+1][j]=1; 
			Dis_block(); 
		} 
	} 
} 
/*	o 
	oo 
	 o */ 
void N_reverse_shape() 
{ 
	grid[i][j-1]=1; 
	grid[i+1][j+1]=1; 
	grid[i-1][j+1]=0; 
	grid[i][j+1]=0; 
	while(1) 
	{ 
		if(bioskey(1)) 
		{ 
			getkey=bioskey(0); 
			getkey=getkey&0xff?getkey&0xff:getkey>>8; 
			if(getkey==27) 
				exit(0); 
 
			if(i>0&&i<11) 
				switch(getkey) 
				{ 
					case 75: 
						if(grid[i-1][j-1]==0&&grid[i-1][j]==0&& 
						grid[i][j+1]==0) 
						{ 
							i--; 
							grid[i][j-1]=1; 
							grid[i][j]=1; 
							grid[i+1][j+1]=1; 
							grid[i+1][j-1]=0; 
							grid[i+2][j]=0; 
							grid[i+2][j+1]=0; 
						} 
						break; 
					case 77: 
						if(grid[i+1][j-1]==0&&grid[i+2][j]==0&& 
						grid[i+2][j+1]==0) 
						{ 
							i++; 
							grid[i][j-1]=1; 
							grid[i+1][j]=1; 
							grid[i+1][j+1]=1; 
							grid[i-1][j-1]=0; 
							grid[i-1][j]=0; 
							grid[i][j+1]=0; 
						} 
						break; 
					case 72: Z_reverse_shape(); 
				} 
				Dis_block(); 
		} 
		else 
		{ 
			j++; 
			if(j>17||grid[i+1][j+1]==1||grid[i][j]==1) 
			{  islost(); 
				Inspect_sinkage_next(); 
				islost(); 
			} 
 
			grid[i][j-2]=0; 
			grid[i+1][j-1]=0; 
			grid[i][j]=1; 
			grid[i+1][j+1]=1; 
			Dis_block(); 
		} 
	} 
} 
/*	o 
	o 
	oo	*/ 
void L_shape() 
{ 
	grid[i][j-2]=1; 
	grid[i][j-1]=1; 
	grid[i][j]=1; 
	grid[i+1][j]=1; 
	grid[i][j+1]=0; 
	grid[i+2][j]=0; 
 
	while(1) 
	{ 
		if(bioskey(1)) 
		{ 
			getkey=bioskey(0); 
			getkey=getkey&0xff?getkey&0xff:getkey>>8; 
			if(getkey==27) 
				exit(0); 
 
			if(i>0&&i<11) 
				switch(getkey) 
				{ 
					case 75: 
						if(grid[i-1][j-2]==0&&grid[i-1][j-1]==0&& 
						grid[i-1][j]==0) 
						{ 
							i--; 
							grid[i][j-2]=1; 
							grid[i][j-1]=1; 
							grid[i][j]=1; 
							grid[i+1][j-2]=0; 
							grid[i+1][j-1]=0; 
							grid[i+2][j]=0; 
						} 
						break; 
					case 77: 
						if(grid[i+2][j]==0&&grid[i+1][j-1]==0&& 
						grid[i+1][j-2]==0) 
						{ 
							i++; 
							grid[i][j-2]=1; 
							grid[i][j-1]=1; 
							grid[i+1][j]=1; 
							grid[i-1][j-2]=0; 
							grid[i-1][j-1]=0; 
							grid[i-1][j]=0; 
						} 
						break; 
					case 72: 
							Truck(); 
				} 
				Dis_block(); 
		} 
		else 
		{ 
			j++; 
			if(j>18||grid[i][j]==1||grid[i+1][j]==1) 
			{           islost(); 
				Inspect_sinkage_next(); 
				islost(); 
			} 
 
			grid[i+1][j]=1; 
			grid[i][j]=1; 
			grid[i][j-3]=0; 
			grid[i+1][j-1]=0; 
			Dis_block(); 
		} 
	} 
} 
/*	  o 
	ooo	*/ 
void Truck() 
{ 
	grid[i-2][j]=1; 
	grid[i-1][j]=1; 
	grid[i][j-2]=0; 
	grid[i+1][j]=0; 
 
	while(1) 
	{ 
		if(bioskey(1)) 
		{ 
			getkey=bioskey(0); 
			getkey=getkey&0xff?getkey&0xff:getkey>>8; 
			if(getkey==27) 
				exit(0); 
 
			if(i>2&&i<12) 
				switch(getkey) 
				{ 
					case 75: 
						if(grid[i-3][j]==0&&grid[i-1][j-1]==0) 
						{ 
							i--; 
							grid[i-2][j]=1; 
							grid[i][j-1]=1; 
							grid[i+1][j]=0; 
							grid[i+1][j-1]=0; 
						} 
						break; 
					case 77: 
						if(grid[i+1][j]==0&&grid[i+1][j-1]==0) 
						{ 
							i++; 
							grid[i][j]=1; 
							grid[i][j-1]=1; 
							grid[i-3][j]=0; 
							grid[i-1][j-1]=0; 
						} 
						break; 
					case 72: 
							Sling(); 
				} 
				Dis_block(); 
		} 
		else 
		{ 
			j++; 
			if(j>18||grid[i][j]==1||grid[i-1][j]==1||grid[i-2][j]==1) 
			{                    islost(); 
				Inspect_sinkage_next(); 
				islost(); 
			} 
 
			grid[i][j]=1; 
			grid[i-1][j]=1; 
			grid[i-2][j]=1; 
			grid[i][j-2]=0; 
			grid[i-1][j-1]=0; 
			grid[i-2][j-1]=0; 
			Dis_block(); 
		} 
	} 
} 
/*	oo 
	 o 
	 o 	*/ 
void Sling() 
{ 
	grid[i][j-1]=0; 
	grid[i-2][j]=0; 
	grid[i][j+1]=1; 
	grid[i][j+2]=1; 
 
	while(1) 
	{ 
		if(bioskey(1)) 
		{ 
			getkey=bioskey(0); 
			getkey=getkey&0xff?getkey&0xff:getkey>>8; 
			if(getkey==27) 
				exit(0); 
 
			if(i>1&&i<12) 
				switch(getkey) 
				{ 
					case 75: 
						if(grid[i-2][j]==0&&grid[i-1][j+1]==0&& 
						grid[i-1][j+2]==0) 
						{ 
							i--; 
							grid[i-1][j]=1; 
							grid[i][j+1]=1; 
							grid[i][j+2]=1; 
							grid[i+1][j+2]=0; 
							grid[i+1][j+1]=0; 
							grid[i+1][j]=0; 
						} 
						break; 
					case 77: 
						if(grid[i+1][j]==0&&grid[i+1][j+1]==0&& 
						grid[i+1][j+2]==0) 
						{ 
							i++; 
							grid[i][j+2]=1; 
							grid[i][j+1]=1; 
							grid[i][j]=1; 
							grid[i-1][j+2]=0; 
							grid[i-1][j+1]=0; 
							grid[i-2][j]=0; 
						} 
						break; 
					case 72: 
							Digger(); 
				} 
				Dis_block(); 
		} 
		else 
		{ 
			j++; 
			if(j>16||grid[i][j+2]==1||grid[i-1][j]==1) 
			{                             islost(); 
				Inspect_sinkage_next(); 
				islost(); 
			} 
 
			grid[i-1][j]=1; 
			grid[i][j+2]=1; 
			grid[i][j-1]=0; 
			grid[i-1][j-1]=0; 
			Dis_block(); 
		} 
	} 
} 
/*	ooo 
	o	*/ 
void Digger() 
{ 
	grid[i+2][j]=1; 
	grid[i+1][j]=1; 
	grid[i-1][j]=0; 
	grid[i][j+2]=0; 
 
	while(1) 
	{ 
		if(bioskey(1)) 
		{ 
			getkey=bioskey(0); 
			getkey=getkey&0xff?getkey&0xff:getkey>>8; 
			if(getkey==27) 
				exit(0); 
 
			if(i>0&&i<10) 
				switch(getkey) 
				{ 
					case 75: 
						if(grid[i-1][j]==0&&grid[i-1][j+1]==0) 
						{ 
							i--; 
							grid[i][j]=1; 
							grid[i][j+1]=1; 
							grid[i+3][j]=0; 
							grid[i+1][j+1]=0; 
						} 
						break; 
					case 77: 
						if(grid[i+3][j]==0&&grid[i+1][j+1]==0) 
						{ 
							i++; 
							grid[i+2][j]=1; 
							grid[i][j+1]=1; 
							grid[i-1][j]=0; 
							grid[i-1][j+1]=0; 
						} 
						break; 
					case 72: 
							L_shape(); 
				} 
				Dis_block(); 
		} 
		else 
		{ 
			j++; 
			if(j>17||grid[i][j+1]==1||grid[i+1][j]==1||grid[i+2][j]==1) 
			{                                      islost(); 
				Inspect_sinkage_next(); 
				islost(); 
			} 
 
			grid[i][j+1]=1; 
			grid[i+1][j]=1; 
			grid[i+2][j]=1; 
			grid[i][j-1]=0; 
			grid[i+1][j-1]=0; 
			grid[i+2][j-1]=0; 
			Dis_block(); 
		} 
	} 
} 
/*	 o 
	ooo	*/ 
void Tine_up() 
{ 
	grid[i][j]=1; 
	grid[i-1][j]=1; 
	grid[i][j-1]=1; 
	grid[i+1][j]=1; 
 
	while(1) 
	{ 
		if(bioskey(1)) 
		{ 
			getkey=bioskey(0); 
			getkey=getkey&0xff?getkey&0xff:getkey>>8; 
			if(getkey==27) 
				exit(0); 
 
			if(i>1&&i<11) 
				switch(getkey) 
				{ 
					case 75: 
						if(grid[i-2][j]==0&&grid[i-1][j-1]==0) 
						{ 
							i--; 
							grid[i][j-1]=1; 
							grid[i-1][j]=1; 
							grid[i+2][j]=0; 
							grid[i+1][j-1]=0; 
						} 
						break; 
					case 77: 
						if(grid[i+2][j]==0&&grid[i+1][j-1]==0) 
						{ 
							i++; 
							grid[i+1][j]=1; 
							grid[i][j-1]=1; 
							grid[i-2][j]=0; 
							grid[i-1][j-1]=0; 
						} 
						break; 
					case 72: 
							Tine_left(); 
				} 
				Dis_block(); 
		} 
		else 
		{ 
			j++; 
			if(j>18||grid[i][j]==1||grid[i+1][j]==1||grid[i-1][j]==1) 
			{                                               islost(); 
				Inspect_sinkage_next(); 
				islost(); 
			} 
 
			grid[i][j]=1; 
			grid[i+1][j]=1; 
			grid[i-1][j]=1; 
			grid[i][j-2]=0; 
			grid[i+1][j-1]=0; 
			grid[i-1][j-1]=0; 
			Dis_block(); 
		} 
	} 
} 
/*	 o 
	oo 
	 o	*/ 
void Tine_left() 
{ 
	grid[i][j+1]=1; 
	grid[i+1][j]=0; 
 
	while(1) 
	{ 
		if(bioskey(1)) 
		{ 
			getkey=bioskey(0); 
			getkey=getkey&0xff?getkey&0xff:getkey>>8; 
			if(getkey==27) 
				exit(0); 
 
			if(i>1&&i<12) 
				switch(getkey) 
				{ 
					case 75: 
						if(grid[i-2][j]==0&&grid[i-1][j-1]==0&& 
						grid[i-1][j+1]==0) 
						{ 
							i--; 
							grid[i][j-1]=1; 
							grid[i][j+1]=1; 
							grid[i-1][j]=1; 
							grid[i+1][j-1]=0; 
							grid[i+1][j]=0; 
							grid[i+1][j+1]=0; 
						} 
						break; 
					case 77: 
						if(grid[i+1][j]==0&&grid[i+1][j-1]==0&& 
						grid[i+1][j+1]==0) 
						{ 
							i++; 
							grid[i][j]=1; 
							grid[i][j-1]=1; 
							grid[i][j+1]=1; 
							grid[i-2][j]=0; 
							grid[i-1][j-1]=0; 
							grid[i-1][j+1]=0; 
						} 
						break; 
					case 72: 
							Tine_down(); 
				} 
				Dis_block(); 
		} 
		else 
		{ 
			j++; 
			if(j>17||grid[i-1][j]==1||grid[i][j+1]==1) 
			{                                                       islost(); 
				Inspect_sinkage_next(); 
				islost(); 
			} 
 
			grid[i-1][j]=1; 
			grid[i][j+1]=1; 
			grid[i][j-2]=0; 
			grid[i-1][j-1]=0; 
			Dis_block(); 
		} 
	} 
} 
/*	ooo 
	 o	*/ 
void Tine_down() 
{ 
	grid[i][j-1]=0; 
	grid[i+1][j]=1; 
 
	while(1) 
	{ 
		if(bioskey(1)) 
		{ 
			getkey=bioskey(0); 
			getkey=getkey&0xff?getkey&0xff:getkey>>8; 
			if(getkey==27) 
				exit(0); 
 
			if(i>1&&i<11) 
				switch(getkey) 
				{ 
					case 75: 
						if(grid[i-2][j]==0&&grid[i-1][j+1]==0) 
						{ 
							i--; 
							grid[i][j+1]=1; 
							grid[i-1][j]=1; 
							grid[i+2][j]=0; 
							grid[i+1][j+1]=0; 
						} 
						break; 
					case 77: 
						if(grid[i+2][j]==0&&grid[i+1][j+1]==0) 
						{ 
							i++; 
							grid[i+1][j]=1; 
							grid[i][j+1]=1; 
							grid[i-2][j]=0; 
							grid[i-1][j+1]=0; 
						} 
						break; 
					case 72: 
							Tine_right(); 
				} 
				Dis_block(); 
		} 
		else 
		{ 
			j++; 
			if(j>17||grid[i][j+1]==1||grid[i+1][j]==1||grid[i-1][j]==1) 
			{     islost(); 
				Inspect_sinkage_next(); 
				islost(); 
			} 
 
			grid[i][j+1]=1; 
			grid[i+1][j]=1; 
			grid[i-1][j]=1; 
			grid[i+1][j-1]=0; 
			grid[i][j-1]=0; 
			grid[i-1][j-1]=0; 
			Dis_block(); 
		} 
	} 
} 
/*	o 
	oo 
	o	*/ 
void Tine_right() 
{ 
	grid[i][j-1]=1; 
	grid[i-1][j]=0; 
 
	while(1) 
	{ 
		if(bioskey(1)) 
		{ 
			getkey=bioskey(0); 
			getkey=getkey&0xff?getkey&0xff:getkey>>8; 
			if(getkey==27) 
				exit(0); 
 
			if(i>0&&i<11) 
				switch(getkey) 
				{ 
					case 75: 
						if(grid[i-1][j]==0&&grid[i-1][j-1]==0&& 
						grid[i-1][j+1]==0) 
						{ 
							i--; 
							grid[i][j-1]=1; 
							grid[i][j+1]=1; 
							grid[i][j]=1; 
							grid[i+1][j-1]=0; 
							grid[i+2][j]=0; 
							grid[i+1][j+1]=0; 
						} 
						break; 
					case 77: 
						if(grid[i+2][j]==0&&grid[i+1][j-1]==0&& 
						grid[i+1][j+1]==0) 
						{ 
							i++; 
							grid[i+1][j]=1; 
							grid[i][j-1]=1; 
							grid[i][j+1]=1; 
							grid[i-1][j]=0; 
							grid[i-1][j-1]=0; 
							grid[i-1][j+1]=0; 
						} 
						break; 
					case 72: 
							Tine_up(); 
				} 
				Dis_block(); 
		} 
		else 
		{ 
			j++; 
			if(j>17||grid[i+1][j]==1||grid[i][j+1]==1) 
			{              islost(); 
				Inspect_sinkage_next(); 
				islost(); 
			} 
 
			grid[i+1][j]=1; 
			grid[i][j+1]=1; 
			grid[i][j-2]=0; 
			grid[i+1][j-1]=0; 
			Dis_block(); 
		} 
	} 
} 
void Dis_next() 
{ 
	next=random(6); 
	Window_3d(400,100,500,220,1); /* 
	setfillstyle(SOLID_FILL,YELLOW); 
	bar(400,100,500,200);           */ 
	setfillstyle(SOLID_FILL,RED); 
	switch(next) 
	{ 
		case 0:	bar(420,120,440,200); 
				break; 
		case 1: bar(420,120,460,160); 
				break; 
		case 2:	bar(420,120,460,140); 
				bar(440,140,480,160); 
				break; 
		case 5: bar(440,120,480,140); 
				bar(420,140,460,160); 
				break; 
		case 4: bar(420,120,440,180); 
				bar(440,160,460,180); 
				break; 
		case 3:	bar(440,120,460,140); 
				bar(420,140,480,160); 
				break; 
	} 
} 
 
/* main cycle */ 
void Cycling() 
{ 
	for(i=2;i<6;i++) 
		for(j=0;j<3;j++) 
			grid[i][j]=0; 
	i=6; 
	switch(next) 
	{ 
		case 0: j=-1; 
				Dis_next(); 
				Tiao_ver(); 
				break; 
		case 1: j=-2; 
				Dis_next(); 
				Farmland(); 
				break; 
		case 2: j=-1; 
				Dis_next(); 
				Z_shape(); 
				break; 
		case 3: j=0; 
				Dis_next(); 
				Tine_up(); 
				break; 
		case 4: j=1; 
				Dis_next(); 
				L_shape(); 
				break; 
		case 5: j=-1; 
				Dis_next(); 
				Z_reverse_shape(); 
				break; 
	} 
} 
 
main() 
{ 
	int driver=VGA,mode=VGAHI; 
 
	initgraph(&driver,&mode,"H:\\TURBOC2"); 
	setbkcolor(CYAN); 
	setcolor(GREEN); 
	for(i=0;i<14;i++) 
		for(j=0;j<5;j++) 
			grid[i][j]=0; 
 
	for(i=0;i<14;i++) 
		line(50+i*20,50,50+i*20,50+19*20); 
	for(i=0;i<20;i++) 
		line(50,50+i*20,50+13*20,50+i*20); 
	setcolor(BLUE); 
	rectangle(50,50,50+13*20,50+19*20); 
 
	Window_3d(60,70,300,150,1); 
	settextstyle(TRIPLEX_FONT,HORIZ_DIR,1); 
	setcolor(RED); 
	outtextxy(70,80,"Press Space key to start,"); 
	setcolor(YELLOW); 
	outtextxy(70,120,"Press Esc key to quit !"); 
 
	do{ 
		getkey=getch(); 
	}while(getkey!=32); 
 
	settextstyle(TRIPLEX_FONT,HORIZ_DIR,1); 
	setcolor(YELLOW); 
	outtextxy(400,80,"NEXT:"); 
	outtextxy(400,280,"SCORE:"); 
	Window_3d(400,300,450,320,-1); 
	setcolor(WHITE); 
	outtextxy(405,300,"0000"); 
 
	randomize(); 
	next=random(6); 
	Cycling(); 
 
	getch(); 
	closegraph(); 
}