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

📄 tank.txt

📁 C语言写的坦克小游戏
💻 TXT
📖 第 1 页 / 共 2 页
字号:
{ 
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); 
     } 
    } 
   else if(GetKey(KEY_DOWN))/*往下*/ 
    { 
     if(Playone.direction==3&&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); 
     Playone.x++; 
     Playone.direction=3; 
     DrawPlay(Playone.y,Playone.x); 
     } 
     else 
     { 
      DrawBlack(Playone.y,Playone.x); 
      Playone.direction=3; 
      DrawPlay(Playone.y,Playone.x); 
     } 
    } 
    if(GetKey(KEY_RIGHT))/*往右*/ 
    { 
     if(Playone.direction==2&&map[Playone.x][Playone.y+1]!=1&&map[Playone.x][Playone.y+1]!=2) 
     { 
     if(map[Playone.x][Playone.y+1]==3) 
     continue; 
     DrawBlack(Playone.y,Playone.x); 
     Playone.y++; 
     Playone.direction=2; 
     DrawPlay(Playone.y,Playone.x); 
     } 
   else 
     { 
      DrawBlack(Playone.y,Playone.x); 
      Playone.direction=2; 
      DrawPlay(Playone.y,Playone.x); 
     } 
    } 
    if(GetKey(KEY_LEFT))/*往左*/ 
    { 
     if(Playone.direction==4&&map[Playone.x][Playone.y-1]!=1&&map[Playone.x][Playone.y-1]!=2) 
     { 
     if(map[Playone.x][Playone.y-1]==3) 
     continue; 
     DrawBlack(Playone.y,Playone.x); 
     Playone.y--; 
     Playone.direction=4; 
     DrawPlay(Playone.y,Playone.x); 
     } 
    else 
     { 
      DrawBlack(Playone.y,Playone.x); 
      Playone.direction=4; 
      DrawPlay(Playone.y,Playone.x); 
     } 
    } 
         if(GetKey(KEY_SPACE))/*发射子弹*/ 
    { 
     for(i=0;i<5;i++)/*用循环来找是否有子弹可以用*/ 
      if(Playone.fire[i].direction<0) 
     { 
      sound(300); 
      Playone.fire[i].direction=Playone.direction;/*子弹方向与坦克方向一致*/ 
      Playone.fire[i].x=Playone.x; 
      Playone.fire[i].y=Playone.y; 
      break;/*找到后就跳出循环*/ 
     } 
    } 
    if(map[Playone.x][Playone.y]==5)/*玩家自己撞到老家*/ 
     lose=1; 
    for(i=0;i<5;i++)/*判断是否因自己控制撞到敌人*/ 
    { 
    if(amy[i].direction<0) 
     continue; 
    if(amy[i].x==Playone.x&&amy[i].y==Playone.y)/*相撞*/ 
       lose=1; 
    } 
    if(lose)/*因为失败而跳出循环显示失败*/ 
    {GameOver();break;} 
    t++;/*加到一定的程序就出现新的敌人*/ 
    if(t==30) /*到了增加敌人的时候*/ 
    {t=0; 
     for(i=0;i<5;i++) 
     if(amy[i].direction<0) 
     { 
      amy[i].direction=amy[i].directiontwo=3; 
      amy[i].x=1; 
      amy[i].y=random(3);/*方向随机*/ 
      if(amy[i].y==0) 
      amy[i].y=1; 
      else if(amy[i].y==1) 
      amy[i].y=9; 
      else/*这里和上面的两个判断是判断敌人的初始位置*/ 
      amy[i].y=18; 
      amy[i].color=random(3)+12;/*颜色随机*/ 
      DrawAmy(amy[i].y,amy[i].x,i); 
      break;/*找到一个后就出循环*/ 
    } 
   } 
} 
}
 

⌨️ 快捷键说明

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