📄 tbox.cpp
字号:
bk[X->x+1][X->y]||
bk[X->x+2][X->y]||
bk[X->x][X->y+1])
return 1;
break;
case 4:if(bk[X->x][X->y]||
bk[X->x+1][X->y+1]||
bk[X->x+1][X->y+2]||
bk[X->x+1][X->y])
return 1;
break;
}
break;
case 4:switch(X->b)
{case 1:if(bk[X->x+1][X->y]||
bk[X->x][X->y+1]||
bk[X->x+1][X->y+1]||
bk[X->x+2][X->y+1])
return 1;
break;
case 2:if(bk[X->x+1][X->y]||
bk[X->x+1][X->y+1]||
bk[X->x+1][X->y+2]||
bk[X->x][X->y+1])
return 1;
break;
case 3:if(bk[X->x][X->y]||
bk[X->x+1][X->y]||
bk[X->x+2][X->y]||
bk[X->x+1][X->y+1])
return 1;
break;
case 4:if(bk[X->x][X->y]||
bk[X->x][X->y+1]||
bk[X->x][X->y+2]||
bk[X->x+1][X->y+1])
return 1;
break;
}
break;
case 5:switch(X->b)
{case 1:if(bk[X->x+1][X->y]||
bk[X->x+2][X->y]||
bk[X->x][X->y+1]||
bk[X->x+1][X->y+1])
return 1;
break;
case 2:if(bk[X->x][X->y]||
bk[X->x][X->y+1]||
bk[X->x+1][X->y+1]||
bk[X->x+1][X->y+2])
return 1;
break;
}
break;
case 6:switch(X->b)
{case 1:if(bk[X->x][X->y]||
bk[X->x+1][X->y]||
bk[X->x+1][X->y+1]||
bk[X->x+2][X->y+1])
return 1;
break;
case 2:if(bk[X->x+1][X->y]||
bk[X->x+1][X->y+1]||
bk[X->x][X->y+1]||
bk[X->x][X->y+2])
return 1;
break;
}
break;
case 7:switch(X->b)
{
case 1:if(bk[X->x][X->y]||
bk[X->x+1][X->y]||
bk[X->x+2][X->y]||
bk[X->x+3][X->y])
return 1;
break;
case 2:if(bk[X->x][X->y]||
bk[X->x][X->y+1]||
bk[X->x][X->y+2]||
bk[X->x][X->y+3])
return 1;
break;
}
break;
}
return 0;
}
void tbk(int x,int bk[16][25])
{int i,j;
for(i=x;i>0;i--)
for(j=0;j<15;j++)
bk[j][i]=bk[j][i-1];
for(i=0;i<24;i++)
for(j=0;j<15;j++)
{setfillstyle(9,bk[j][i]);
bar(100+j*20,i*20,117+j*20,17+i*20);
}
}
void main()
{randomize();
int bk[16][25],i,j,k,u=0;int test,scp;int speed=500;
struct time ttime;int tm1,tm2;
for(i=0;i<24;i++)
for(j=0;j<15;j++)
bk[j][i]=0;
for(i=0;i<25;i++)
bk[15][i]=1;
for(i=0;i<16;i++)
bk[i][24]=1;
T tb[2],tbt;
tinit(tb);tinit(tb+1);
unsigned scancode;
union REGS regs;
long score=0l,hscore;
char sc[]="score",scr[20],hsc[]="highest score",hscr[20];
FILE *fp;
if(fp=fopen("tbox.dat","rb+"))
{fscanf(fp,"%ld",&hscore);rewind(fp);}
else{fp=fopen("tbox.dat","wb");hscore=0l;fprintf(fp,"%ld",hscore);rewind(fp);}
int driver=VGA;
int mode=VGAHI;
initgraph(&driver,&mode,"");
cleardevice();
settextstyle(0, HORIZ_DIR,2);
setfillstyle(9,9);
bar(90,0,99,480);
bar(400,0,409,480);
bar(400,240,640,244);
bar(400,360,640,364);
sprintf(scr," %ld",score);
sprintf(hscr," %ld",hscore);
outtextxy(470,260,sc);
outtextxy(470,300,scr);
outtextxy(420,380,hsc);
outtextxy(470,420,hscr);
tb[u].x=7;tb[u].y=0;tbt=tb[u];
tdisplay(tb,1);tdisplay(tb+1,1);
gettime(&ttime);
if(ttime.ti_sec>30)tm1=ttime.ti_hund+(ttime.ti_sec-60)*1000;
else tm1=ttime.ti_hund+(ttime.ti_sec-60)*1000;
for(;;)
{
gettime(&ttime);
if(ttime.ti_sec>30)tm2=ttime.ti_hund+(ttime.ti_sec-60)*1000;
else tm2=ttime.ti_hund+(ttime.ti_sec-60)*1000;
for(;tm2-tm1<speed;)
{regs.h.ah=1;
int86(0x16,®s,®s);
if((regs.x.flags&0x40)==0) break;
gettime(&ttime);
if(ttime.ti_sec>30)tm2=ttime.ti_hund+(ttime.ti_sec-60)*1000;
else tm2=ttime.ti_hund+(ttime.ti_sec-60)*1000;
}
if(tm2-tm1<speed)
{regs.h.ah=0;
int86(0x16,®s,®s);
scancode=regs.h.ah;
switch(scancode)
{case 0x01:goto END;
case 0x19:tpouse();break;
case 0x48:trote(&tbt);
if(tland(&tbt,bk)!=0)tbt=tb[u];
else{tdisplay(&tb[u],0);
tb[u]=tbt;
tdisplay(&tb[u],1);
}
break;
case 0x50:tbt.y++;
if(tland(&tbt,bk)==0)
{tdisplay(&tb[u],0);
tb[u].y++;
tdisplay(&tb[u],1);
gettime(&ttime);
if(ttime.ti_sec>30)tm1=ttime.ti_hund+(ttime.ti_sec-60)*1000;
else tm1=ttime.ti_hund+(ttime.ti_sec-60)*1000;
}
else{tsetbk(&tb[u],bk);
tinit(&tb[u]);
if(u==0){tdisplay(&tb[1],0);u=1;tdisplay(&tb[0],1);}
else{tdisplay(&tb[0],0);u=0;tdisplay(&tb[1],1);}
tb[u].y=0;tb[u].x=7;tbt=tb[u];
scp=0;
for(i=0;i<24;i++)
{test=0;
for(j=0;j<15;j++)
if(bk[j][i])test++;
if(test==15){tbk(i,bk);scp++;}
}
switch(scp)
{case 4:score+=400;
case 3:score+=300;
case 2:score+=200;
case 1:score+=100;
setfillstyle(1,0);
bar(470,300,640,320);
sprintf(scr," %ld",score);
outtextxy(470,300,scr);
if(score>hscore)
{hscore=score;
bar(470,420,640,440);
sprintf(hscr," %ld",hscore);
outtextxy(470,420,hscr);
}
speed=speed/1.1;
break;
default:break;
}
gettime(&ttime);
if(ttime.ti_sec>30)tm1=ttime.ti_hund+(ttime.ti_sec-60)*1000;
else tm1=ttime.ti_hund+(ttime.ti_sec-60)*1000;
if(tland(&tbt,bk)!=0)
{setcolor(12);
outtextxy(200,240,"GAME OVER!!!");
getchar();
goto END;
}
}
break;
case 0x4B:tbt.x--;
if(tland(&tbt,bk)==0)
{tdisplay(&tb[u],0);
tb[u].x--;
tdisplay(&tb[u],1);
}
else tbt.x++;
break;
case 0x4D:tbt.x++;
if(tland(&tbt,bk)==0)
{tdisplay(&tb[u],0);
tb[u].x++;
tdisplay(&tb[u],1);
}
else tbt.x--;
break;
case 31:speed=speed*2;break;
case 33:speed=speed/2;break;
default:break;
}
}
else
{ tbt.y++;
if(tland(&tbt,bk)==0)
{tdisplay(&tb[u],0);
tb[u].y++;
tdisplay(&tb[u],1);
gettime(&ttime);
if(ttime.ti_sec>30)tm1=ttime.ti_hund+(ttime.ti_sec-60)*1000;
else tm1=ttime.ti_hund+(ttime.ti_sec-60)*1000;
}
else{tsetbk(&tb[u],bk);
tinit(&tb[u]);
if(u==0){tdisplay(&tb[1],0);u=1;tdisplay(&tb[0],1);}
else{tdisplay(&tb[0],0);u=0;tdisplay(&tb[1],1);}
tb[u].y=0;tb[u].x=7;tbt=tb[u];
scp=0;
for(i=0;i<24;i++)
{test=0;
for(j=0;j<15;j++)
if(bk[j][i])test++;
if(test==15){tbk(i,bk);scp++;}
}
switch(scp)
{case 4:score+=400;
case 3:score+=300;
case 2:score+=200;
case 1:score+=100;
setfillstyle(1,0);
bar(470,300,640,320);
sprintf(scr,"%ld",score);
outtextxy(470,300,scr);
if(score>hscore)
{hscore=score;
bar(470,420,640,440);
sprintf(hscr,"%ld",hscore);
outtextxy(470,420,hscr);
}
speed=speed/1.1;
break;
default:break;
}
gettime(&ttime);
if(ttime.ti_sec>30)tm1=ttime.ti_hund+(ttime.ti_sec-60)*1000;
else tm1=ttime.ti_hund+(ttime.ti_sec-60)*1000;
if(tland(&tbt,bk)!=0)
{
setcolor(12);
outtextxy(200,240,"GAME OVER!!!");
getchar();
goto END;
}
}
}
}
END:
fprintf(fp,"%ld",hscore);
fclose(fp);
closegraph();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -