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

📄 bb010.c

📁 c语言编写的打星星游戏源代码
💻 C
📖 第 1 页 / 共 2 页
字号:



  if(E_FIRE_ATTACK<=90)
                        {

                         for(n=0;n<30;n++)
                            {
                             if(SB[n].RUN==0)
                               {
                                /*初始化一颗星星*/
                                SB[n].oa=90;

                                SB[n].PX=Xrand(50,560);
                                SB[n].PY=20;

                                SB[n].RUN=1;

                                break;
                               }

                            }

                        }




  }










  mx0=mouse.getx;



  getmousexy();


  if(mouse.getx!=mx0)   /* 鼠标动了 x */
    {

      MAN.a+=mouse.getx-mx0;
      if(MAN.a>360) MAN.a=360;
      else if(MAN.a<180)   MAN.a=180;


            if(mouse.getx>=620){  setmousexy(320,240);  getmousexy(); }

     else   if(mouse.getx<=20) {  setmousexy(320,240);  getmousexy(); }

     MAN.move=1;

   }



 if(getmkeyin(mbLeft)==mbLeft) /*左键按下*/
   {
    MAN.fire=1;
   }

if(getmkeyout(mbLeft)==mbLeft)  /*左键鼠标抬起*/
  {
    MAN.fire=0;
  }




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

   /*退出*/
   if(GetKey(KEY_ESC))  {

                         END=1;

                        } 


   /*左转*/
   if(GetKey(KEY_LEFT))  {

                          MAN.a=MAN.a-3;
                          if(MAN.a>360) MAN.a=360;
                          else if(MAN.a<180)   MAN.a=180;

                          MAN.move=1;

                         }


    /*右转*/
    if(GetKey(KEY_RIGHT)){

                          MAN.a=MAN.a+3;
                          if(MAN.a>360) MAN.a=360;
                          else if(MAN.a<180)   MAN.a=180;

                          MAN.move=1;

                         }


    /*开火射击*/
   if(GetKey(KEY_SPACE)){
                         if(MAN.reload<=0){  /*装填时间*/
                                           for(n=0;n<30;n++)
                                              {
                                               if(MB[n].RUN==0)
                                                 {
                                                  /*初始化一颗子弹*/
                                                  MB[n].oa=MAN.a;

                                                  MB[n].PX=Round(22*cos(MAN.a*PI/180))+MAN.X1;
                                                  MB[n].PY=Round(22*sin(MAN.a*PI/180))+MAN.Y1;


                                                  MB[n].RUN=1;



                                                  break;
                                                 }

                                               }

                                             MAN.reload=6;
                                           }
                        }











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

/*++++++++++++++++++++++对玩家的事件处理+++++++++++++++++++++++++++*/

                        if(MAN.LIVE==1)
                        {
                         if(MAN.move==1)
                           {     

                            GB_PERSON(MAN.X0,MAN.Y0,MAN.a0,0);

                            GB_PERSON(MAN.X1,MAN.Y1,MAN.a,9);


                            MAN.X0=MAN.X1;
                            MAN.Y0=MAN.Y1;


                            MAN.a0=MAN.a;

                            MAN.move=0;

                         }





 if(MAN.fire==1) /*开火*/
  {
                         if(MAN.reload<=0){  /*装填时间*/
                                           for(n=0;n<30;n++)
                                              {
                                               if(MB[n].RUN==0)
                                                 {
                                                  /*初始化一颗子弹*/
                                                  MB[n].oa=MAN.a;

                                                  MB[n].PX=Round(22*cos(MAN.a*PI/180))+MAN.X1;
                                                  MB[n].PY=Round(22*sin(MAN.a*PI/180))+MAN.Y1;


                                                  MB[n].RUN=1;



                                                  break;
                                                 }

                                               }

                                             MAN.reload=6;
                                           }


  }





                        }
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

     MAN.reload--;    /*装填时间变化*/
     if(MAN.reload<=0)   MAN.reload=0;

     TimeDelay(10000L); /*游戏延时*/


 } /*while大循环末尾*/



 GAME_OVER:;

 closegraph();

 ShutDownKeyboard();   /*恢复键盘中断*/





}









void set_color(int color,int R,int G,int B)      /*改变调色板*/
{

 static union REGS regs;
  switch(color){
    case 6:color=20;break;
    case 8:color=56;break;
    case 9:color=57;break;
    case 10:color=58;break;
    case 11:color=59;break;
    case 12:color=60;break;
    case 13:color=61;break;
    case 14:color=62;break;
    case 15:color=63;break;
    default:break;
              }
   regs.h.ah=0x10;
   regs.h.al=0x10;
   regs.x.bx=color;
   regs.h.ch=G;
   regs.h.cl=B;
   regs.h.dh=R;
   int86(0x10,&regs,&regs);
   return;
}

void VGA_RESET()                        /*图形模式初始化*/
{
 int driver=VGA;
 int mode=VGAHI;

 registerbgidriver(EGAVGA_driver);      /*图形模式独立运行*/
 initgraph(&driver,&mode,"");
 cleardevice();

 setpalette(4,36);                      /*改变调色板颜色*/
 setpalette(10,18);
 setpalette(13,45);
 setpalette(9,11);
 setpalette(1,9);

  setpalette(12,32);

set_color(7,112,112,112);
set_color(8,95,95,95);

}








void GB_PERSON(int X1,int Y1,int a,int COLOR)   /*绘制*/
{
 int X2,Y2;

 setcolor(COLOR);
 setfillstyle(1,COLOR);

 circle(X1,Y1,12);

 bar(X1-1,Y1-1,X1+1,Y1+1);


 X2=Round(18*cos(a*PI/180))+X1;   /*r=10   弧度=角度*PI/180*/
 Y2=Round(18*sin(a*PI/180))+Y1;


 line(X1,Y1,X2,Y2);
 bar(X2-1,Y2-1,X2+1,Y2+1);

}



int Round(float x)  /*四舍五入*/
{
 return((int)(x+0.5));
}



void TimeDelay(unsigned long microsec) /*延时函数 传入微秒数*/
{
 union REGS r;
 r.h.ah=0x86;
 r.x.cx=microsec>>16;
 r.x.dx=microsec;
 int86(0x15,&r,&r);
}







void MOVE_TO3(int oa,float *PX,float *PY,int D)  /*移动到*/
{
 *PX+=D*cos(oa*PI/180);
 *PY+=D*sin(oa*PI/180);
}

void TRANSFORM(char filename[],int *NAME)        /*把图象文件置入数组*/
{
 int i,j;
 char C;
 FILE *fp;

 if((fp=fopen(filename,"r"))==NULL)  /*打开一个文件只读*/
  {

 sound(450);
 delay(1200);
 nosound();
         /*失败画白方块*/
   return;
  }


 for(i=0;i<=29;i++)
    {
     for(j=0;j<=29;j++)
        {
          C=fgetc(fp);
          *(NAME+(i*30+j))=(int)(C-65);  /*还原数字-65*/
        }
    }


 fclose(fp);

}

void GB_TBF(int x,int y,int *NAME)                             /*显示*/
{ int i,j,X,Y;


  X=x;
  Y=y;
 for(i=0,y=Y;i<=29;i++,y++)
    {
     for(j=0,x=X;j<=29;j++,x++)
     if(*(NAME+(i*30+j))==3){;}
     else{putpixel(x,y,*(NAME+(i*30+j)));}
    }


}







int TimeDelayUnit(float t)                         /*计时  t秒*/
{
 static clock_t start_time=0,end_time;

 if(start_time==0){
                   start_time=clock();
                  }

 end_time=clock();


 if((end_time-start_time)/CLK_TCK>=t){
                                      start_time=0;
                                      return(1);
                                     }

 else 
     return(0);


}



int Xrand(int A,int B)    /*随机数发生器A—B*/
{
 int i,x;

 while(1)
    {
     x=random(B);

     if(x>=A) break;

    }

 return(x);

}

⌨️ 快捷键说明

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