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

📄 god.c

📁 我是学程序员的 现在也才是学习阶段 这个小游戏是我第一次的实训做的 不过这个飞行射击游戏必须要在WIN-TC环境下才能打开 我已经把这个小软件放在包里了 安装就哦了.
💻 C
📖 第 1 页 / 共 2 页
字号:
renovate()  //重新载入10架敌机
{
 int i;//代表着敌机的个数
 for(i=0;i<=6;i++)   //随机确定敌机的坐标位置
  {
   live[i]=1;//在刷新屏幕的时候,要赋予敌机的生命
   movej[i]=random(2); //初始化敌机飞行的速度
   dijiix[i]=18;
   dijijy[i]=random(5)*4+random(3);//随机确定敌机的坐标位置
   initdiji(dijiix[i],dijijy[i]);//初始化敌机
  }
}

gameover()  //游戏结束信息提示
{
 settextstyle(0,0,2);
 setcolor(12);
 outtextxy(200,200,"Game Over!!!");
 setcolor(4);
 outtextxy(300,280,"Press R or Q!");
}


int qhzd(key)
{
  if(key==KEYTAB)
    { if(zdys==3)zdys=0;
      else zdys++;

     }
 zdts(zdys);

       }
zdts(int zdys)
{   int fp;

     if((fp=open(zdtstu[zdys],O_RDONLY|O_BINARY))==-1)
           printf("Cannot find file y=%d",y);
       tuxiang(352,456,fp);
       close(fp);
       }
int kaishi()
{ int aj,fp,temp=1;
  int n;
  while(1)
  {
    if((fp=open(beijing[flag],O_RDONLY|O_BINARY))==-1)
           printf("Cannot find file %d",y);
       tuxiang(0*32,0*24,fp);
       close(fp);
    aj=mykeyscan();
    if(aj==KEYW||aj==KEYS8)
  flag--;
  else if(aj==KEYS||aj==KEYS5||aj==KEYS2)
  flag++;
  if(flag<1)flag=3;
  if(flag>3)flag=1;
   if(aj==KEYENTER)break;
  if(temp!=flag)
   {
  if((fp=open(beijing[0],O_RDONLY|O_BINARY))==-1)
   {
        puts("Cannot find file " "bmp" ".");
    }
      tuxiang(0,0,fp);
    close(fp);
    }
   temp=flag;
 }
 return aj;
}


int help()
{ int fp;
   if((fp=open(startph[0],O_RDONLY|O_BINARY))==-1)
   {
        puts("Cannot find file " "bmp" ".");
    }
      tuxiang(0,0,fp);
    close(fp);
    while(!kbhit())
      tuichu=mykeyscan();
      }
int protect()
{  int fp;
   if((fp=open(startph[2],O_RDONLY|O_BINARY))==-1)
    {
        puts("Cannot find file " "bmp" ".");
    }
      tuxiang(0,0,fp);
    close(fp);
    delay(10000);
       tuichu=1;
      return tuichu;
    }
shengmingzhi(int x,int y)
 { int fp;
   if((fp=open("bmp\\jiji.bmp",O_RDONLY|O_BINARY))==-1)
    {
        puts("Cannot find file " "bmp" ".");
    }
      tuxiang(x,y,fp);
    close(fp);
    }

main()
{ int k=1;
  int lifetc=0;
 int key,ikey;
 int iflag;
 int i,ii;
 int ibkey;
 int islive=1;
 int n=0;//代表打死的飞机个数
 int oldix,oldjy; //记录玩家走过的坐标
 randomize();
 initgraph1();  //初始化图形模式
againstart:
 ikey=kaishi();
while(1)
    {
 if(ikey==KEYENTER&&flag==1)
    {
     goto come;

    }
   else if(ikey==KEYENTER&&flag==2)
    {
       help();
           break;
        }
   else if(ikey==KEYENTER&&flag==4)
    {
    protect();
    }
   else if(ikey==KEYENTER&&flag==3)
      lifetc=1;
      k=0;
       break;
      }
  if(tuichu==KEYENTER)
    goto againstart;

 come :
 repeat:

if(k==1)
{
 initditu();//初始化玩家地图
 for(i=0;i<=life-1;i++)
 shengmingzhi(24*i+160,456);
  initwjfj(ix,jy); //载入玩家飞机
 renovate();//重新载入10架敌机
  }

 while(1) //进入游戏
 {
  if(lifetc==1)
   break;
 // SetTimer(newhandler);    /* 修改时钟中断 */
  oldix=ix;//获得玩家飞机的飞行轨迹
  oldjy=jy;
  for(i=0;i<=9;i++)
  {
   olddijiix[i]=dijiix[i];//获得敌机的飞行轨迹
   olddijijy[i]=dijijy[i];
   if(dijiix[i]>1) dijiix[i]-=movej[i];//将敌机的坐标进行修改
  }

  for(i=0;i<=9;i++)
   {
    if(movej[i]==0)continue;//如果某架敌机的飞行速度是0,则不必擦除
    chawjfj(&olddijiix[i],&olddijijy[i]);//擦敌机
   }
  key=movewjfj(); //控制玩家的飞机飞行
//  wjxue(life);
qhzd(key);
 if(key==KEYESC)break;
 for(i=0;i<=9;i++)
 {
  if((oldix==dijiix[i])&&(oldjy==dijijy[i]))//此时是玩家飞机和敌机碰撞
  {
   baozhaxiaoguo(2,dijiix[i],dijijy[i]);
   delay(100000);
   dijiix[i]=19;
   dijijy[i]=19;
   chawjfj(&dijiix[i],&dijijy[i]); //擦爆炸效果
   chawjfj(&olddijiix[i],&olddijijy[i]); //擦敌机图片
  // isover=1;
  ix=1;
  jy=10;
  life--;
if(life==0)
    {
    isover=1;
    jieshu();
    }
   else goto repeat;

   while(!kbhit());//只要玩家没有按键,便一直将游戏结束提示面画停留
   ibkey=mykeyscan();
   break;

   }
 }
 if(isover)//在游戏结束的时候,对具体按键进行不同响应
{
  if(ibkey==KEYR)
   {
    if(life==0)
    life=3;
    ix=1;
    jy=10;
     isover=0;
    ibkey='\0'; //ikey在接收并响应了玩家的选择后,一定要将其值置为空,否则是会一直重新开始游戏
    goto repeat;//如果玩家在游戏结束时按的是r则重新开始游戏
    break;}


}
  if(isover) break;
 kill:
  if(key==KEYSPACE) //当玩家发射子弹时的代码
   {
    zdix=oldix;  //先保留原玩家飞机的坐标
    zdjy=oldjy;
    while(1)
    {
     initfszd(zdix,zdjy,zdys);//载入玩家发射的子弹
    delay(1000);     for(i=0;i<=9;i++)
     {
      if((zdix==dijiix[i])&&(dijijy[i]==zdjy))
       {
        n++;
        baozhaxiaoguo(1,dijiix[i],dijijy[i]);//说明此时是玩家子弹和敌机碰撞
        dijiix[i]=19;
        dijijy[i]=19;
        delay(1000000);//爆炸效果延时
        live[i]=0;
        chawjfj(&dijiix[i],&dijijy[i]);//擦爆炸效果图
        chawjfj(&olddijiix[i],&olddijijy[i]);
goto kill;
       }
     if(n==5) //当玩家打落五架敌机时,这时便将敌机的位置重新布局,即重新产生10架飞机
      {
       n=0;//重新归零
       for(i=0;i<=9;i++) //擦除原有没有被打落的飞机和已经打落的飞机
         chawjfj(&dijiix[i],&dijijy[i]);
       initwjfj(ix,jy); //载入玩家飞机
       renovate();  //重新载入10架敌机
      }

     }
      chawjfj(&oldzdix,&oldzdjy); //擦除玩家发射的子弹
      if(zdix==20)break;  //如果玩家子弹已经过界,则不再进行飞行效果显示
    }
   }
  chawjfj(&oldix,&oldjy);//擦玩家飞机
  delay(20000);

  for(i=0;i<=9;i++) //此功能是实现敌机飞过一定边界时,产生新一屏的敌机
    {
     if(dijiix[i]==1||dijijy[i]==19)
      {
        for(i=0;i<=9;i++) //擦除原有没有被打落的飞机和已经打落的飞机
          chawjfj(&olddijiix[i],&olddijijy[i]);
        renovate();//重新载入10架敌机
        break;
      }
    }
 delay(100000);
  initwjfj(ix,jy); //将玩家飞机移动到新的位置
  for(i=0;i<=9;i++)//在移动敌机的时候,要判断敌机是否还有生命
   {
    if(!live[i])continue;
    if(dijiix[i]<1)continue;
    initdiji(dijiix[i],dijijy[i]);//将敌机移动到新的位置
    }
  delay(10000);
 }
}

⌨️ 快捷键说明

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