基本信息
源码名称:c语言 坦克大战 游戏源码下载
源码大小:0.01M
文件格式:.cpp
开发语言:C/C++
更新时间:2014-06-10
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 2 元 
   源码介绍
坦克大战  C语言  源代码

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;
   while(1)
   {
    amy[i].directiontwo=random(4) 1;
    if(amy[i].direction==1&&amy[i].directiontwo==3)
     continue;
    if(amy[i].direction==3&&amy[i].directiontwo==1)
     continue;
    if(amy[i].direction==2&&amy[i].directiontwo==4)
     continue;
    if(amy[i].direction==4&&amy[i].directiontwo==2)/*这里4个if是判定有没有往返走*/
     continue;
    if(amy[i].directiontwo==3&&(map[amy[i].x 1][amy[i].y]==3||map[amy[i].x 1][amy[i].y]==1||map[amy[i].x 1][amy[i].y]==2))
     continue;
    if(amy[i].directiontwo==1&&(map[amy[i].x-1][amy[i].y]==3||map[amy[i].x-1][amy[i].y]==1||map[amy[i].x-1][amy[i].y]==2))
     continue;
    if(amy[i].directiontwo==2&&(map[amy[i].x][amy[i].y 1]==3||map[amy[i].x][amy[i].y 1]==1||map[amy[i].x][amy[i].y 1]==2))
     continue;
    if(amy[i].directiontwo==4&&( map[amy[i].x][amy[i].y-1]==3||map[amy[i].x][amy[i].y-1]==1||map[amy[i].x][amy[i].y-1]==2))
     continue;/*以上4个是是否碰到了墙壁或者水什么的*/
    DrawBlack(amy[i].y,amy[i].x);/*把原来的地方擦掉*/
    amy[i].direction=amy[i].directiontwo;
    if(amy[i].direction==1)
    {amy[i].x--;amy[i].y=amy[i].y;}
    if(amy[i].direction==3)
    {amy[i].x ;amy[i].y=amy[i].y;}
    if(amy[i].direction==2)
    {amy[i].y ;amy[i].x=amy[i].x;}
    if(amy[i].direction==4)
    {amy[i].y--;amy[i].x=amy[i].x;}
    if(amy[i].x==Playone.x&&amy[i].y==Playone.y)/*相撞*/
      lose=1;
    if(map[amy[i].x][amy[i].y]==5)/*敌人撞到老家*/
      lose=1;
    DrawAmy(amy[i].y,amy[i].x,i);/*画敌人*/
    if(amy[i].fire.direction<0)
    amy[i].fireplay=random(4);
    if(amy[i].fireplay==1&&amy[i].fire.direction<0)/*发射*/
    {
     amy[i].fire.direction=amy[i].direction;/*子弹方向与敌人方向一致*/
     amy[i].fire.x=amy[i].x;
     amy[i].fire.y=amy[i].y;
    }
    break;
   }
  }
  if(lose)/*因为失败而跳出循环显示失败*/
   {GameOver();break;}
  if(GetKey(KEY_ESC))
   break;
  if(GetKey(KEY_UP))/*往上*/
   {
    if(Playone.direction==1&&map[Playone.x-1][Playone.y]!=1&&map[Playone.x-1][Playone.y]!=2)
    { 
      if(map[Playone.x-1][Playone.y]==3)
      continue;
      DrawBlack(Playone.y,Playone.x);/*这个if是移动,前提是方向与按下的到向一致*/
      Playone.x--;
      Playone.direction=1;
      DrawPlay(Playone.y,Playone.x);
    }
    else/*只调整炮头方向*/
    {
     DrawBlack(Playone.y,Playone.x);
     Playone.direction=1;
     DrawPlay(Playone.y,Playone.x);
    }