当前位置:中国飞客联盟文章中心编程学习C 语言 → 用c做的简单的坦克大战小游戏

用c做的简单的坦克大战小游戏

减小字体 增大字体 作者:不详  来源:转载  发布时间:2007-5-7 8:47:56

    DrawPlay(j,i);
    for(k=0;k<5;k++)
    Playone.fire[k].direction=-1;/*5颗子弹的方向都为-1,表示不存在*/
    }
   else if(map[i][j]==9)
   {
   amy[0].x=1;amy[0].y=1;amy[0].direction=amy[0].directiontwo=3;/*第一个敌人*/
   amy[0].color=12;
   DrawAmy(j,i,0);
   }
  }
 for(i=1;i<5;i++)/*敌人都没出现*/
 amy[i].direction=amy[i].fire.direction=-1;
 outtextxy(210,450,"2003.10.1 milo_zy");
 settextstyle(0,0,2);/*首次输出得分*/
 setcolor(9);
 outtextxy(525,80,"Score");
 setcolor(YELLOW);
 outtextxy(550,115,"0");
}
void far interrupt NewInt9(void)
{
 unsigned char ScanCode,temp;
 ScanCode=inportb(0x60);
 temp=inportb(0x61);
 outportb(0x61,temp | 0x80);
 outportb(0x61,temp & 0x7f);
 if(ScanCode&0x80)
   {
    ScanCode&=0x7f;
    key_state[ScanCode]=0;
   }
else
   {
      key_pressed[ScanCode]=1;
   }
 outportb(0x20,0x20);
}

void InstallKeyboard(void)
{
 int i;
 for(i=0;i<128;i++)
 key_state[i]=key_pressed[i]=0;
 OldInt9Handler=getvect(9);         /*中断向量值*/
 setvect(9,NewInt9);                /*中断程序NewInt9地址存入指定的中断向量表中INT 09H*/
}

void ShutDownKeyboard(void)
{
 setvect(9,OldInt9Handler);
}

int GetKey(int ScanCode)
{
 int res;
 res=key_state[ScanCode]|key_pressed[ScanCode];
 key_pressed[ScanCode]=0;
 return res;
}
void GameOver()/*游戏失败*/
{
 setcolor(0);
 setfillstyle(SOLID_FILL,0);/*把老家给去除*/
 fillellipse(100+9*20,50+18*20,9,9);
 nosound();
 setcolor(RED);
  settextstyle(0,0,4);
 outtextxy(150,5,"GAME OVER");
 while(1)
 {
  if(GetKey(KEY_ESC))
  break;
 }
}
void GamePlay()/*玩游戏的过程*/
{
 int i,j,lose=0;/*lose是1的时候表示失败*/
 int t=0;
 randomize();
 while(1)
 {
  for(i=0;i<5;i++)/*画敌人的子弹*/
   {
    if(amy[i].fire.direction>0)
      putpixel(100+amy[i].fire.y*20,50+amy[i].fire.x*20,11);
   }
  for(i=0;i<=4;i++)/*画玩家子弹*/
    {
    if(Playone.fire[i].direction>0)/*大于0表示玩家子弹存在*/
    putpixel(100+Playone.fire[i].y*20,50+Playone.fire[i].x*20,11);
    }
  TimeDelay(500000);/*关键的时间改动*/
  for(i=0;i<5;i++)/*去敌人的子弹*/
   {
    if(amy[i].fire.direction>0)
      putpixel(100+amy[i].fire.y*20,50+amy[i].fire.x*20,0);
   }
  for(i=0;i<=4;i++)/*去玩家除子弹*/
   {
    if(Playone.fire[i].direction>0)
    putpixel(100+Playone.fire[i].y*20,50+Playone.fire[i].x*20,0);
  }
  for(i=0;i<=4;i++)/*玩家子弹位置的变化*/
   {
    if(Playone.fire[i].direction<0)
     continue;
    if(Playone.fire[i].direction==1)
     {Playone.fire[i].x--;Playone.fire[i].y=Playone.fire[i].y;}
    else if(Playone.fire[i].direction==2)
     {Playone.fire[i].y++;Playone.fire[i].y=Playone.fire[i].y;}
    else if(Playone.fire[i].direction==3)
     {Playone.fire[i].x++;Playone.fire[i].y=Playone.fire[i].y;}
    else if(Playone.fire[i].direction==4)
     {Playone.fire[i].y--;Playone.fire[i].y=Playone.fire[i].y;}
    /*打到石头或者砖头的情况下减少子弹*/
    if(map[Playone.fire[i].x][Playone.fire[i].y]==1)/*打到石头*/
     Playone.fire[i].direction=-1;/*子弹消失*/
    if(map[Playone.fire[i].x][Playone.fire[i].y]==2)/*打到砖头*/
     {
      Playone.fire[i].direction=-1;
      DrawBlack(Playone.fire[i].y,Playone.fire[i].x);/*砖头打掉*/
      map[Playone.fire[i].x][Playone.fire[i].y]=0;/*被打掉的地方变成可走的地方*/
     }
    if(map[Playone.fire[i].x][Playone.fire[i].y]==5)/*自己打到老家*/
     {lose=1;break;}
    for(j=0;j<5;j++)
     {
     if(amy[j].direction<0)/*不存在的不判断*/
      continue;
     if(amy[j].x==Playone.fire[i].x&&amy[j].y==Playone.fire[i].y)/*打中敌人*/
     {
     Playone.fire[i].direction=-1;
     DrawBlack(Playone.fire[i].y,Playone.fire[i].x);
     map[Playone.fire[i].x][Playone.fire[i].y]=0;/*被打掉的地方变成可走的地方*/
     amy[j].fire.direction=amy[j].direction=-1;/*这个敌人消失*/
     Score();/*输出得分*/
     }
    }
   }
for(i=0;i<5;i++)/*敌人子弹位置的变化*/
     {
    if(amy[i].direction<0||amy[i].fire.direction<0)
     continue;
    if(amy[i].fire.direction==1)
     {amy[i].fire.x--;amy[i].fire.y=amy[i].fire.y;}
    else if(amy[i].fire.direction==2)
     {amy[i].fire.y++;amy[i].fire.x=amy[i].fire.x;}
    else if(amy[i].fire.direction==3)
     {amy[i].fire.x++;amy[i].fire.y=amy[i].fire.y;}
    else if(amy[i].fire.direction==4)
     {amy[i].fire.y--;amy[i].fire.x=amy[i].fire.x;}
    /*打到石头或者砖头的情况下减少子弹*/
    if(map[amy[i].fire.x][amy[i].fire.y]==1)/*打到石头*/
     amy[i].fire.direction=-1;/*子弹消失*/
    if(map[amy[i].fire.x][amy[i].fire.y]==2)/*打到砖头*/
     {
      amy[i].fire.direction=-1;
      DrawBlack(amy[i].fire.y,amy[i].fire.x);/*砖头打掉*/
      map[amy[i].fire.x][amy[i].fire.y]=0;/*被打掉的地方变成可走的地方*/
     }
    if(map[amy[i].fire.x][amy[i].fire.y]==5)/*敌人打到老家*/
     {lose=1;break;}
    if(amy[i].fire.x==Playone.x&&amy[i].fire.y==Playone.y)/*打中玩家*/
    {
     for(j=0;j<5;j++)
     Playone.fire[j].direction=-1;/*玩家子弹都消失*/
     amy[i].fire.direction=-1;
     DrawBlack(amy[i].fire.y,amy[i].fire.x);
     map[amy[i].fire.x][amy[i].fire.y]=0;/*被打掉的地方变成可走的地方*/
     lose=1;break;/*好人被打掉后就失败*/
    }
   }
  nosound();
  for(i=0;i<5;i++)/*敌人方向随机的改变*/
  {
   if(amy[i].direction<0)
    continue;
   w

上一页  [1] [2] [3]  下一页