⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tetris1.cpp

📁 一个挺好玩的赛车游戏!
💻 CPP
字号:
#include<iostream.h>
#include<conio.h>
#include<graphics.h>
#include<process.h>
#include<stdlib.h>
#include<dos.h>
int mark(int,int,int,int);
int num_fix=0,g=1;
int lev[501],ro[501];
void main()
{
int d=DETECT,m;
initgraph(&d,&m,"c:\\tc\\bgi");
for(int q=0;q<500;q++)
{lev[q]=0;ro[q]=0;}
int x,y;
x=getmaxx()/2;
y=getmaxy()/2;
int draw=1,del=0;
union REGS ii,oo;
int perm=1;
rectangle(x-161,y-221,x+161,y+221);
rectangle(x-163,y-223,x+163,y+223);
int room1,room2,room3,room4,level1,level2,level3,level4;
int andom,style,tabby=0;
int time,clr;
randomize();
for(time=500;time>=100;time-=10)
{
if(time==100)
time=110;
andom=random(7);
switch(andom)
{
case 0:
style=1;room1=8;room2=9;room3=8;room4=9;level1=1;level2=1;level3=2;level4=2;clr=1;break;
case 1:
style=2;room1=8;room2=8;room3=8;room4=8;level1=1;level2=2;level3=3;level4=4;clr=2;break;
case 2:
style=3;room1=8;room2=9;room3=8;room4=9;level1=1;level2=2;level3=2;level4=3;clr=3;break;
case 3:
style=4;room1=8;room2=9;room3=8;room4=9;level1=2;level2=1;level3=3;level4=2;clr=4;break;
case 4:
style=5;room1=8;room2=9;room3=10;room4=9;level1=1;level2=1;level3=1;level4=2;clr=7;break;
case 5:
style=6;room1=8;room2=8;room3=8;room4=9;level1=1;level2=2;level3=3;level4=1;clr=6;break;
case 6:
style=7;room1=8;room2=8;room3=8;room4=7;level1=1;level2=2;level3=3;level4=1;clr=5;break;
}
int ret=0;
int pet=0;
tabby=0;
for(int loop=0;loop<25;loop++)
{
loop--;
ret=mark(level1,room1,draw,clr);
if(ret==1)
pet=1;
ret=mark(level2,room2,draw,clr);
if(ret==1)
pet=1;
ret=mark(level3,room3,draw,clr);
if(ret==1)
pet=1;
ret=mark(level4,room4,draw,clr);
if(ret==1)
pet=1;
if(pet==1)
{loop=25;goto skip;}

delay(time);

if(level1<22&&level2<22&&level3<22&&level4<22)
{
ret=mark(level1,room1,del,clr);
if(ret==1)
pet=1;
ret=mark(level2,room2,del,clr);
if(ret==1)
pet=1;
ret=mark(level3,room3,del,clr);
if(ret==1)
pet=1;
ret=mark(level4,room4,del,clr);
if(ret==1)
pet=1;
if(pet==1)
{loop=25;goto skip;}

level1++;
level2++;
level3++;
level4++;

}
else
{
loop=25;
goto skip;
}
	if(kbhit())
	{
		//interrupt issue to scan the ascii ans scan codes of the key hit
		ii.h.ah=0;
		int86(22,&ii,&oo);
		//if esc key has been pressed
		if(oo.h.ah==1)
		{
		closegraph();exit(0);
		}
		//if right key has been pressed
		if(oo.h.ah==77)
		{
		for(int num=500;num>=0;num--)
			{
				if(level1==lev[num]-1&&room1+1==ro[num]||level2==lev[num]-1&&room2+1==ro[num]||level3==lev[num]-1&&room3+1==ro[num]||level4==lev[num]-1&&room4+1==ro[num]||level1==lev[num]&&room1+1==ro[num]||level2==lev[num]&&room2+1==ro[num]||level3==lev[num]&&room3+1==ro[num]||level4==lev[num]&&room4+1==ro[num])
				perm=0;

			}

		if(room1<16&&room2<16&&room3<16&&room4<16&&perm==1)
		{room1++;room2++;room3++;room4++;}
		perm=1;
		}
		//if left key has been pressed
		if(oo.h.ah==75)
		{
			for(int num=500;num>=0;num--)
			{
				if(level1==lev[num]-1&&room1-1==ro[num]||level2==lev[num]-1&&room2-1==ro[num]||level3==lev[num]-1&&room3-1==ro[num]||level4==lev[num]-1&&room4-1==ro[num]||level1==lev[num]&&room1-1==ro[num]||level2==lev[num]&&room2-1==ro[num]||level3==lev[num]&&room3-1==ro[num]||level4==lev[num]&&room4-1==ro[num])
				perm=0;
			}

		if(room1>1&&room2>1&&room3>1&&room4>1&&perm==1)
		{room1--;room2--;room3--;room4--;}
		perm=1;
		}
		//if upper key has been pressed
		if(oo.h.ah==72)
		{
		if(room1<16&&room2<16&&room3<16&&room4<16&&room1>1&&room2>1&&room3>1&&room4>1)
		 {
		 if(tabby==0)
		 switch(style)
			{
			case 1:break;
			case 2:room1--;room3++;room4+=2;level1++;level3--;level4-=2;break;
			case 3:room1+=2;level1++;level3++;break;
			case 4:room2-=2;level2++;level4++;break;
			case 5:room1++;level1--;break;
			case 6:room2++;room3--;level3-=2;break;
			case 7:room2--;room3++;level3-=2;break;
			}
		else if(tabby==1)
		switch(style)
			{
			case 1:break;
			case 2:room1++;room3--;room4-=2;level1--;level3++;level4+=2;break;
			case 3:room1-=2;level1--;level3--;break;
			case 4:room2+=2;level2--;level4--;break;
			case 5:room4--;level4--;break;
			case 6:	room1++;room3++;level1++;level3++;level2--;level4--;break;
			case 7:	room3-=2;level1++;level3--;break;
			}
		else if(tabby==2)
		switch(style)
			{
			case 1:break;
			case 2:room1--;room3++;room4+=2;level1++;level3--;level4-=2;break;
			case 3:room1+=2;level1++;level3++;break;
			case 4:room2-=2;level2++;level4++;break;
			case 5:room3--;level3++;break;
			case 6:room2--;room4++;level4+=2;break;
			case 7:room4++;room3--;level3+=2;break;
			}
		else if(tabby==3)
		switch(style)
			{
			case 1:break;
			case 2:room1++;room3--;room4-=2;level1--;level3++;level4+=2;break;
			case 3:room1-=2;level1--;level3--;break;
			case 4:room2+=2;level2--;level4--;break;
			case 5:room1--;room3++;room4++;level1++;level3--;level4++;break;
			case 6:room1--;room4--;level1--;level2++;level3++;level4--;break;
			case 7:room2++;room3+=2;room4--;level1--;level3++;break;
			}
			tabby++;
			if(tabby==4)
			tabby=0;
		 }
		}
		//if lower key has been pressed
		if(oo.h.ah==80)
		{
		getch();
		}
	}//kbhit
skip:
if(loop==25)
{
mark(level1,room1,12,clr);
mark(level2,room2,12,clr);
mark(level3,room3,12,clr);
mark(level4,room4,12,clr);

mark(level1,room1,3,clr);
mark(level2,room2,3,clr);
mark(level3,room3,3,clr);
mark(level4,room4,3,clr);
}
}
}
}
/*
level
1        room 1,2,3....16
2
3
:
:
22
*/
int mark(int level,int room,int col,int b_clr)
{
int x,y,num,toll[22],gon;
x=getmaxx()/2;
y=getmaxy()/2;
g=1;
for(int r=0;r<22;r++)
toll[r]=0;

if(col==12)
{col=1;
goto sk;}

for(num=500;num>=0;num--)
if(level==lev[num]-1&&room==ro[num])
{
if(level<=1)
{cleardevice();setcolor(14);outtextxy(x-50,y,"lost in height");sleep(3);closegraph();exit(0);}
col=3;
}
sk:
if(col==1)
{
	setfillstyle(SOLID_FILL,b_clr);
	bar(x-160+1+20*(room-1),y-220+1+20*(level-1),x-140-1+20*(room-1),y-200-1+20*(level-1));
}
else if(col==0)
{
	setfillstyle(SOLID_FILL,0);
	bar(x-160+1+20*(room-1),y-220+1+20*(level-1),x-140-1+20*(room-1),y-200-1+20*(level-1));
}
else
{
lev[num_fix]=level;
ro[num_fix]=room;
gotoxy(3,3);
cout<<lev[num_fix]<<" "<<ro[num_fix]<<" .\n";
num_fix++;
sound(300);
delay(30);
nosound();

g=5;
}
//check
for(num=500;num>=0;num--)
{
	switch(lev[num])
	{
	 case 1:toll[0]++;break;   case 2:toll[1]++;break;   case 3:toll[2]++;break;   case 4:toll[3]++;break;
	 case 5:toll[4]++;break;   case 6:toll[5]++;break;   case 7:toll[6]++;break;   case 8:toll[7]++;break;
	 case 9:toll[8]++;break;   case 10:toll[9]++;break;  case 11:toll[10]++;break;  case 12:toll[11]++;break;
	 case 13:toll[12]++;break;  case 14:toll[13]++;break;  case 15:toll[14]++;break;  case 16:toll[15]++;break;
	 case 17:toll[16]++;break;  case 18:toll[17]++;break;  case 19:toll[18]++;break;  case 20:toll[19]++;break;
	 case 21:toll[20]++;break;  case 22:toll[21]++;break;
	}
}
gotoxy(1,1);
for(gon=0;gon<22;gon++)
{

	cout<<toll[gon]<<endl;
	if(toll[gon]==16)
	{
	 gotoxy(5,5);
	 cout<<gon+1;

	 for(num=500;num>=0;num--)
	 {
	  if(lev[num]==gon+1)
	  {
	   lev[num]=0;ro[num]=0;
	  }
	 }
	 for(num=500;num>=0;num--)
	 {

	  if(lev[num]<=gon&&lev[num]!=0)
	  {
	   lev[num]++;
	  }
	 }
	 cleardevice();
	 setcolor(WHITE);
	 rectangle(x-161,y-221,x+161,y+221);
	 rectangle(x-163,y-223,x+163,y+223);
	 setfillstyle(SOLID_FILL,RED);
	 for(num=500;num>=0;num--)
	 {
	 bar(x-160+1+20*(ro[num]-1),y-220+1+20*(lev[num]-1),x-140-1+20*(ro[num]-1),y-200-1+20*(lev[num]-1));
	 }
	}
}
for(r=0;r<22;r++)
toll[r]=0;
//
if(g==5)
return 1;

return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -