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

📄 tank041.c

📁 通过c语言编写的坦克大战游戏
💻 C
📖 第 1 页 / 共 5 页
字号:
                     {
                      play_sample(A_BOMB_sound, 255, pan, pitch, FALSE); /*爆炸6声音 原子弹*/
                      A_BOMB_LIVE=1; A_BOMB_LIGHT_COLOR=225;
                     }

              else if(BAO[n].Bao_number==7) /*信号弹 1触发增援*/
                      {
                       V=1;
                      }

             }




           BAO[n].nonce_fram++;
           BAO[n].fram_time=BAO_BMP[BAO[n].Bao_number].BAO_fram_time; /*每帧时间记数还原*/
           if(BAO[n].nonce_fram>BAO[n].BAO_MAX_fram) /*超出最大帧数*/
             {
              BAO[n].LIVE=0;
             }







          }

       }


    }


/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

 for(n=0;n<15;n++)   /*降落伞*/
    {
     if(JIANG_LUO_SAN[n].LIVE==1)
       {
        JIANG_LUO_SAN[n].fram_time--;
        if(JIANG_LUO_SAN[n].fram_time<=0)
          {
           JIANG_LUO_SAN[n].nonce_fram++;
           JIANG_LUO_SAN[n].fram_time=JIANG_LUO_SAN[n].fram_MAX_time; /*每帧时间记数还原*/
           if(JIANG_LUO_SAN[n].nonce_fram>JIANG_LUO_SAN[n].MAX_fram) /*超出最大帧数*/
             {
              JIANG_LUO_SAN[n].LIVE=0;






/*降落伞消失 根据kind初始化各个物品*/



 if(JIANG_LUO_SAN[n].kind==1)  /*如果是炸弹 地狱火*/
   {
    /* 初始化一个子弹 坐标X,坐标Y,目标点X,目标点Y,武器编号,NPC的编号*/
    INIT_A_BB(JIANG_LUO_SAN[n].x,JIANG_LUO_SAN[n].y,JIANG_LUO_SAN[n].x,JIANG_LUO_SAN[n].y,5,0);


   } /*kind==1 结束*/


 else if(JIANG_LUO_SAN[n].kind==2)  /*如果是箱子HP */
   {


             for(j=0;j<3;j++)
                {
                 if(GOODS_BOX[j].LIVE==0)
                   {
                    GOODS_BOX[j].LIVE=1;

                    GOODS_BOX[j].kind=2;

                    GOODS_BOX[j].x=JIANG_LUO_SAN[n].x;
                    GOODS_BOX[j].y=JIANG_LUO_SAN[n].y;

                    GOODS_BOX[j].MAP_A=ASK_MAP_AB(GOODS_BOX[j].x,GOODS_BOX[j].y,MAP_X0,MAP_Y0,32,2);
                    GOODS_BOX[j].MAP_B=ASK_MAP_AB(GOODS_BOX[j].x,GOODS_BOX[j].y,MAP_X0,MAP_Y0,32,1);

                    GOODS_BOX[j].x=MAP_X0+GOODS_BOX[j].MAP_B*32+15;
                    GOODS_BOX[j].y=MAP_X0+GOODS_BOX[j].MAP_A*32+15;


                    break;
                   }

                }

    }






 else if(JIANG_LUO_SAN[n].kind==3)  /*如果是信号弹*/
   {

     INIT_A_BAO(JIANG_LUO_SAN[n].x,JIANG_LUO_SAN[n].y,7);  /* 初始化一个爆炸 坐标X,坐标Y,武器编号*/



 } /*kind==3 结束*/








  if(JIANG_LUO_SAN[n].kind==4)  /*如果是炸弹 原子弹*/
   {
    /* 初始化一个子弹 坐标X,坐标Y,目标点X,目标点Y,武器编号,NPC的编号*/
    INIT_A_BB(JIANG_LUO_SAN[n].x,JIANG_LUO_SAN[n].y,JIANG_LUO_SAN[n].x,JIANG_LUO_SAN[n].y,6,0);


   } /*kind==4 结束*/






/*降落伞消失 根据kind初始化各个物品  结束*/










             }



           rand_pianyi_xy(&JIANG_LUO_SAN[n].x,7);  /*随机偏移*/

           JIANG_LUO_SAN[n].y+=2;




          }

       }





    }



/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/









/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
  /*飞机飞行*/


for(i=0;i<3;i++)
{


if(PLANE[i].LIVE==1)
  {
   PLANE[i].x+=9; /*飞机移动*/

   if( DZ(PLANE[i].x,PLANE[i].y,PLANE[i].BOMB_X,PLANE[i].BOMB_Y)<=50 )  /*到达投弹区域*/
     {
                       if(PLANE[i].BOMB_FIRE==0 && PLANE[i].BOMB_N==0)
                         {

                          PLANE[i].BOMB_FIRE=1;

                          /*声音*/
                               if(PLANE[i].BOMB_kind==1)
                                  play_sample(YiHa, 255, pan, pitch, FALSE); /*YiHa*/

                          else if(PLANE[i].BOMB_kind==2)
                                  play_sample(Wheee, 255, pan, pitch, FALSE); /*Wheee*/

                          else if(PLANE[i].BOMB_kind==3)
                                  play_sample(reinfor_sound, 255, pan, pitch, FALSE); /*junhao*/




                         }

                              
     }


   if(PLANE[i].x>=MAP_B_MAX*32+1500) PLANE[i].LIVE=0; /*飞机消失*/





               if(PLANE[i].BOMB_XROF>0)
                 {
                  PLANE[i].BOMB_XROF--;    /*射速 投弹时间变化*/
                  if(PLANE[i].BOMB_XROF<=0)   PLANE[i].BOMB_XROF=0;

                 }


                 /*投弹量到了*/
                 if(PLANE[i].BOMB_N>=PLANE[i].BOMB_MAX_N)  {PLANE[i].BOMB_FIRE=0; }



                 if(PLANE[i].BOMB_FIRE==1)
                   {



                       if(PLANE[i].BOMB_XROF<=0)
                         {

                         /*初始化一个降落伞*/
                         for(n=0;n<15;n++)
                              {
                               if(JIANG_LUO_SAN[n].LIVE==0)
                                 {
                                  JIANG_LUO_SAN[n].LIVE=1;
                                  JIANG_LUO_SAN[n].x=PLANE[i].BOMB_X;              /*当前坐标X*/
                                  JIANG_LUO_SAN[n].y=PLANE[i].BOMB_Y;              /*当前坐标Y*/


                                  JIANG_LUO_SAN[n].nonce_fram=1;   /*当前帧号*/
                                  JIANG_LUO_SAN[n].fram_time=JIANG_LUO_SAN[n].fram_MAX_time;    /*每帧记时*/



                                  JIANG_LUO_SAN[n].kind=PLANE[i].BOMB_kind; /*属性*/


                                  rand_pianyi_xy(&JIANG_LUO_SAN[n].x,60);  /*投放点随机偏移*/
                                  rand_pianyi_xy(&JIANG_LUO_SAN[n].y,60);  /*投放点随机偏移*/

                                  PLANE[i].BOMB_N++;
                                  break;
                                 }
                    
                               }

                              PLANE[i].BOMB_XROF=PLANE[i].BOMB_XROF_MAX_TIME;
                            }




                 }/*if*/





















  }




}



/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
 /*箱子*/

for(n=0;n<3;n++)
  {
 if(GOODS_BOX[n].LIVE==1)
   {


      for(i=0;i<NPC_max_num;i++)
         {
          if(PLAYER[i].MAP_A==GOODS_BOX[n].MAP_A && PLAYER[i].MAP_B==GOODS_BOX[n].MAP_B) /*NPC碰到箱子*/
            {
             GOODS_BOX[n].LIVE=0;

             /*根据kind做相应的处理*/

             if(GOODS_BOX[n].kind==2) /*补血箱*/
               {
                PLAYER[i].HP+=200; if(PLAYER[i].HP>PLAYER[i].MAX_HP) PLAYER[i].HP=PLAYER[i].MAX_HP;

                if(i==0) /*玩家得到 发出声音*/
                play_sample(eat_sound, 255, pan, pitch, FALSE);
               }


            }

         }






   }


 }






/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
     /*光标处理*/
     if(GUANG_BIAO.LIVE==1)
       {
        GUANG_BIAO.fram_time--;
        if(GUANG_BIAO.fram_time<=0)
          {
           GUANG_BIAO.nonce_fram++;
           GUANG_BIAO.fram_time=GUANG_BIAO.fram_MAX_time; /*每帧时间记数还原*/
           if(GUANG_BIAO.nonce_fram>GUANG_BIAO.MAX_fram) /*超出最大帧数*/
             {
              GUANG_BIAO.LIVE=0;
             }
          }
       }


/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/





/*++++++++++++++++++++++++对鼠标的响应+++++++++++++++++++++++++++++*/


  /*鼠标屏幕坐标转换为地图相对坐标*/
  MX=mouse_x-320+C.x;
  MY=mouse_y-240+C.y;








if (mouse_b == 1) /*左键按下*/
   {
      mb=1; /*左键按过了*/

      PLAYER[0].fire=1;    /*射击*/


   }





if (mouse_b == 2) /*右键按下*/
   {
      mb=2; /*右键按过了*/


   }






if (mouse_b == 0)
   {

     if(mb==1)/*左键按过*/
       {

         mb=0;
       }



     if(mb==2)/*右键按过*/
       {

                     PLAYER[0].whither_x=MX; /*目的地x*/
                     PLAYER[0].whither_y=MY; /*目的地y*/
                     PLAYER[0].whether_have_whither=1; /*是否有目的地*/
                     PLAYER[0].o_angle[0]=ASK_a(PLAYER[0].X1,PLAYER[0].Y1,PLAYER[0].whither_x,PLAYER[0].whither_y);

                     /*----------*/
                        /*光标*/

                      GUANG_BIAO.LIVE=1;
                      GUANG_BIAO.x=MX;            /*当前坐标X*/
                      GUANG_BIAO.y=MY;            /*当前坐标Y*/

                      GUANG_BIAO.nonce_fram=1;   /*当前帧号*/
                      GUANG_BIAO.fram_time=GUANG_BIAO.fram_MAX_time;    /*每帧记时*/


                     /*----------*/

                     /*发声音*/

                     n=Xrand(1,5);

                          if(n==1)   play_sample(yes_sir_sound, 255, pan, pitch, FALSE); /*yes_sir*/
                     else if(n==2)   play_sample(ok_sound, 255, pan, pitch, FALSE); /*ok*/
                     else if(n==3)   play_sample(yeah_sound, 255, pan, pitch, FALSE); /*yeah*/
                     else if(n==4)   play_sample(move_out_sound, 255, pan, pitch, FALSE); /*move_out*/
                     else if(n==5)   play_sample(roger_sound, 255, pan, pitch, FALSE); /*roger*/

                     /*----------*/


         mb=0;
       }

   }






      /*玩家0炮塔目标角 对着鼠标*/
      PLAYER[0].o_angle[1]=ASK_a(PLAYER[0].X1,PLAYER[0].Y1,MX,MY);



/*计算PLAYER0的目标点,当前指到的点*/
PLAYER[0].opx=PLAYER[0].X1; PLAYER[0].opy=PLAYER[0].Y1;
MOVE_TO3(PLAYER[0].angle[1], &PLAYER[0].opx, &PLAYER[0].opy,  DZ(PLAYER[0].X1,PLAYER[0].Y1,MX,MY) );



/*++++++++++++++++++++++++对按键的响应+++++++++++++++++++++++++++++*/

   /*退出*/
   if(key[KEY_ESC])  {
                      goto EXIT_GAME;


                     } 

   /*前进*/
   if(key[KEY_UP]||key[KEY_W])
                        {

                         PLAYER[0].forward=1;

                         PLAYER[0].move=1;

                         PLAYER[0].whether_have_whither=0; /*是否有目的地*/
                        }

   /*左转*/
   if(key[KEY_LEFT]||key[KEY_A])  {
                          PLAYER[0].angle[0]-=3;
                          PLAYER[0].whether_have_whither=0; /*是否有目的地*/


                          if(PLAYER[0].angle[0]>360) PLAYER[0].angle[0]-=360;
                          else if(PLAYER[0].angle[0]<0)   PLAYER[0].angle[0]+=360;
                          else if(PLAYER[0].angle[0]==360)  PLAYER[0].angle[0]=0;

                          PLAYER[0].o_angle[0]=PLAYER[0].angle[0];
                      }


    /*右转*/
    if(key[KEY_RIGHT]||key[KEY_D]){
                          PLAYER[0].angle[0]+=3;
                          PLAYER[0].whether_have_whither=0; /*是否有目的地*/

                          if(PLAYER[0].angle[0]>360) PLAYER[0].angle[0]-=360;
                          else if(PLAYER[0].angle[0]<0)   PLAYER[0].angle[0]+=360;
                          else if(PLAYER[0].angle[0]==360)  PLAYER[0].angle[0]=0;

                          PLAYER[0].o_angle[0]=PLAYER[0].angle[0];

                         }

    /*后退*/
    if(key[KEY_DOWN]||key[KEY_S])
                         {
                          PLAYER[0].backward=1;


                          PLAYER[0].move=1;

                          PLAYER[0].whether_have_whither=0; /*是否有目的地*/
                         }




    if(key[KEY_B])
                      {

                         if(PLANE[0].LIVE==0)   /*初始化轰炸机*/
                         {
                          INIT_PLANE(0,MX,MY-32, 10, 1,1);  /*初始化飞机*/


                          play_sample(bomb_attack_sound, 255, pan, pitch, FALSE); /*轰炸机的声音*/

                         }

                      }









    if(key[KEY_V])
                      {

                         if(PLANE[1].LIVE==0)   /*初始化小飞机*/
                         {
                          INIT_PLANE(1,MX,MY-30, 1, 2,2);  /*初始化飞机*/

                          play_sample(yes_sir_sound_02, 255, pan, pitch, FALSE);

                         }


                      }



    if(key[KEY_O])
                      {

                         if(PLANE[2].LIVE==0)   /*初始化轰炸机*/
                         {
                          INIT_PLANE(2,MX,MY-32, 1, 4,3);  /*初始化飞机 投放原子弹*/


                          play_sample(bomb_attack_sound, 255, pan, pitch, FALSE); /*轰炸机的声音*/

⌨️ 快捷键说明

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