serial_init(); // ET0=0;
putstring("\r\nSerial ready!\r\n");
start: ET0=1;clrscr();
putstring("飞机游戏"
"\r\n
"\r\n游戏控制方法:"
"\r\n 操作者不动键盘10秒钟进入演示状态,按'a'或'4'飞机"
"\r\n 左移,按'd'或'6'右移,按's'或'0'发弹,按'-'降低难度,"
"\r\n 按'+'提高难度,按'p'立即进入演示状态。"
"\r\n 按任何键开始游戏。");
while(!inbufsign);
zongfen=0;showblock();showfen();notype=1000;
gotoxy(0,19); //putstring("lever: h-hard e-easy\r\n5-left 6-right 0-shot");
putstring("得分:\r\n级别: +:高 -:低\r\n5:左移 6:右移 0:发射");
gotoxy(7,20);putchar(speed,1);
for(i=0;i!=16;i++)
{free[i]=0;
}
paoplace=9;showpao();
while(1) {
if (showblocksign) showblock();
if (showfensign) showfen();
if (free[0]!=0)
{ET0=0;notype=1000;free[0]=0;gotoxy(0,22);putstring("结束!再玩一遍?(y/n)");
while(getbyte()!='y');goto start;
}
notype--;if(notype==10){notype=1000;goto autoplay;}
delay(100);
if (notype>900) {gotoxy(0,22);putbyte(0x1b); putstring("[K");}
if (inbufsign)
{ c=getbyte();notype=1000;
switch (c)
{case '5': //left move
case 'a':
paoplace--; if (paoplace==1) paoplace=2;
showpao();
break;
case '6': //right move
case 'd':
paoplace++; if (paoplace==18) paoplace=17;
showpao();
break;
case '=':
case '+':
speed--;
if (speed==0)speed=1;
gotoxy(7,20);
putchar(speed,1);
break;
case '_':
case '-':
speed++;
if (speed==255)speed=254;
gotoxy(7,20);
putchar(speed,1);
break;
case 's':
case '0': //shot
for(i=15,j=1;i!=0;i--,j=16-i)
{gotoxy(paoplace,i); putbyte('o');delay(50);
putbyte(8);putbyte(' ');
//free[i]=0xffff;
temp=0x0001<<(17-paoplace);
if((free[j]&temp)!=0)
{free[j]&= (temp^0xffff);zongfen+=10;showfensign=1;break;}
}
break;
case 'y': goto start;
case 'p':
autoplay: gotoxy(0,22);putbyte(0x1b); putstring("[K");putstring("游戏自动演示中。");
ET0=1;speed=20;gotoxy(7,20);putchar(speed,1);
do
{
if (showblocksign) showblock();
if (showfensign) showfen();