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

📄 god.c

📁 我是学程序员的 现在也才是学习阶段 这个小游戏是我第一次的实训做的 不过这个飞行射击游戏必须要在WIN-TC环境下才能打开 我已经把这个小软件放在包里了 安装就哦了.
💻 C
📖 第 1 页 / 共 2 页
字号:
#include "time.h"
#include "graphics.h"//显示卡驱动头文件包

#include "stdio.h" //控制命令头文件包
#include "stdlib.h"
/*DOS系统命令头文件包*/
#include "dos.h"
#include "fcntl.h"
#include "io.h"
#include "mykey.h"

/*字符串头文件开发包*/
#include "string.h"
/*设置限制名称SVGA640x480x256代替数字2*/
#define SVGA640x480x256 2
#define TIMER 0x1c /* 时钟中断的中断号 */
/* 中断处理函数在C和C++中的表示略有不同。如果定义了_cplusplus则表示在C++环境下,
否则是在C环境下。 */
#ifdef __cplusplus
#define __CPPARGS ...
#else
#define __CPPARGS
#endif

int TimerCounter=0; /*计时变量,每秒钟增加18*/
void interrupt ( *oldhandler)(__CPPARGS);/*指向原来时钟中断处理过程入口的中断处理函数指针(句柄) */
void interrupt newhandler(__CPPARGS)/* 新的时钟中断处理函数 */
{
    TimerCounter++; /* increase the global counter */
    oldhandler();  /* call the old routine */
}
void SetTimer(void interrupt (*IntProc)(__CPPARGS))/* 设置新的时钟中断处理过程 */
{
    oldhandler=getvect(TIMER);
    disable(); /* 设置新的时钟中断处理过程时,禁止所有中断 */
    setvect(TIMER,IntProc);
    enable(); /* 开启中断 */
}
/* 恢复原有的时钟中断处理过程 */
void KillTimer()
{
    disable();
    setvect(TIMER,oldhandler);
    enable();
}
 
char *ditu[20][20]={"bmp\\t0-1.bmp","bmp\\t0-2.bmp","bmp\\t0-3.bmp","bmp\\t0-4.bmp","bmp\\t0-5.bmp","bmp\\t0-6.bmp","bmp\\t0-7.bmp","bmp\\t0-8.bmp","bmp\\t0-9.bmp","bmp\\t0-10.bmp","bmp\\t0-11.bmp","bmp\\t0-12.bmp","bmp\\t0-13.bmp","bmp\\t0-14.bmp","bmp\\t0-15.bmp","bmp\\t0-16.bmp","bmp\\t0-17.bmp","bmp\\t0-18.bmp","bmp\\t0-19.bmp","bmp\\t0-20.bmp",\
"bmp\\t1-1.bmp","bmp\\t1-2.bmp","bmp\\t1-3.bmp","bmp\\t1-4.bmp","bmp\\t1-5.bmp","bmp\\t1-6.bmp","bmp\\t1-7.bmp","bmp\\t1-8.bmp","bmp\\t1-9.bmp","bmp\\t1-10.bmp","bmp\\t1-11.bmp","bmp\\t1-12.bmp","bmp\\t1-13.bmp","bmp\\t1-14.bmp","bmp\\t1-15.bmp","bmp\\t1-16.bmp","bmp\\t1-17.bmp","bmp\\t1-18.bmp","bmp\\t1-19.bmp","bmp\\t1-20.bmp",\
"bmp\\t2-1.bmp","bmp\\t2-2.bmp","bmp\\t2-3.bmp","bmp\\t2-4.bmp","bmp\\t2-5.bmp","bmp\\t2-6.bmp","bmp\\t2-7.bmp","bmp\\t2-8.bmp","bmp\\t2-9.bmp","bmp\\t2-10.bmp","bmp\\t2-11.bmp","bmp\\t2-12.bmp","bmp\\t2-13.bmp","bmp\\t2-14.bmp","bmp\\t2-15.bmp","bmp\\t2-16.bmp","bmp\\t2-17.bmp","bmp\\t2-18.bmp","bmp\\t2-19.bmp","bmp\\t2-20.bmp",\
"bmp\\t3-1.bmp","bmp\\t3-2.bmp","bmp\\t3-3.bmp","bmp\\t3-4.bmp","bmp\\t3-5.bmp","bmp\\t3-6.bmp","bmp\\t3-7.bmp","bmp\\t3-8.bmp","bmp\\t3-9.bmp","bmp\\t3-10.bmp","bmp\\t3-11.bmp","bmp\\t3-12.bmp","bmp\\t3-13.bmp","bmp\\t3-14.bmp","bmp\\t3-15.bmp","bmp\\t3-16.bmp","bmp\\t3-17.bmp","bmp\\t3-18.bmp","bmp\\t3-19.bmp","bmp\\t3-20.bmp",\
"bmp\\t4-1.bmp","bmp\\t4-2.bmp","bmp\\t4-3.bmp","bmp\\t4-4.bmp","bmp\\t4-5.bmp","bmp\\t4-6.bmp","bmp\\t4-7.bmp","bmp\\t4-8.bmp","bmp\\t4-9.bmp","bmp\\t4-10.bmp","bmp\\t4-11.bmp","bmp\\t4-12.bmp","bmp\\t4-13.bmp","bmp\\t4-14.bmp","bmp\\t4-15.bmp","bmp\\t4-16.bmp","bmp\\t4-17.bmp","bmp\\t4-18.bmp","bmp\\t4-19.bmp","bmp\\t4-20.bmp",\
"bmp\\t5-1.bmp","bmp\\t5-2.bmp","bmp\\t5-3.bmp","bmp\\t5-4.bmp","bmp\\t5-5.bmp","bmp\\t5-6.bmp","bmp\\t5-7.bmp","bmp\\t5-8.bmp","bmp\\t5-9.bmp","bmp\\t5-10.bmp","bmp\\t5-11.bmp","bmp\\t5-12.bmp","bmp\\t5-13.bmp","bmp\\t5-14.bmp","bmp\\t5-15.bmp","bmp\\t5-16.bmp","bmp\\t5-17.bmp","bmp\\t5-18.bmp","bmp\\t5-19.bmp","bmp\\t5-20.bmp",\
"bmp\\t6-1.bmp","bmp\\t6-2.bmp","bmp\\t6-3.bmp","bmp\\t6-4.bmp","bmp\\t6-5.bmp","bmp\\t6-6.bmp","bmp\\t6-7.bmp","bmp\\t6-8.bmp","bmp\\t6-9.bmp","bmp\\t6-10.bmp","bmp\\t6-11.bmp","bmp\\t6-12.bmp","bmp\\t6-13.bmp","bmp\\t6-14.bmp","bmp\\t6-15.bmp","bmp\\t6-16.bmp","bmp\\t6-17.bmp","bmp\\t6-18.bmp","bmp\\t6-19.bmp","bmp\\t6-20.bmp",\
"bmp\\t7-1.bmp","bmp\\t7-2.bmp","bmp\\t7-3.bmp","bmp\\t7-4.bmp","bmp\\t7-5.bmp","bmp\\t7-6.bmp","bmp\\t7-7.bmp","bmp\\t7-8.bmp","bmp\\t7-9.bmp","bmp\\t7-10.bmp","bmp\\t7-11.bmp","bmp\\t7-12.bmp","bmp\\t7-13.bmp","bmp\\t7-14.bmp","bmp\\t7-15.bmp","bmp\\t7-16.bmp","bmp\\t7-17.bmp","bmp\\t7-18.bmp","bmp\\t7-19.bmp","bmp\\t7-20.bmp",\
"bmp\\t8-1.bmp","bmp\\t8-2.bmp","bmp\\t8-3.bmp","bmp\\t8-4.bmp","bmp\\t8-5.bmp","bmp\\t8-6.bmp","bmp\\t8-7.bmp","bmp\\t8-8.bmp","bmp\\t8-9.bmp","bmp\\t8-10.bmp","bmp\\t8-11.bmp","bmp\\t8-12.bmp","bmp\\t8-13.bmp","bmp\\t8-14.bmp","bmp\\t8-15.bmp","bmp\\t8-16.bmp","bmp\\t8-17.bmp","bmp\\t8-18.bmp","bmp\\t8-19.bmp","bmp\\t8-20.bmp",\
"bmp\\t9-1.bmp","bmp\\t9-2.bmp","bmp\\t9-3.bmp","bmp\\t9-4.bmp","bmp\\t9-5.bmp","bmp\\t9-6.bmp","bmp\\t9-7.bmp","bmp\\t9-8.bmp","bmp\\t9-9.bmp","bmp\\t9-10.bmp","bmp\\t9-11.bmp","bmp\\t9-12.bmp","bmp\\t9-13.bmp","bmp\\t9-14.bmp","bmp\\t9-15.bmp","bmp\\t9-16.bmp","bmp\\t9-17.bmp","bmp\\t9-18.bmp","bmp\\t9-19.bmp","bmp\\t9-20.bmp",\
"bmp\\t10-1.bmp","bmp\\t10-2.bmp","bmp\\t10-3.bmp","bmp\\t10-4.bmp","bmp\\t10-5.bmp","bmp\\t10-6.bmp","bmp\\t10-7.bmp","bmp\\t10-8.bmp","bmp\\t10-9.bmp","bmp\\t10-10.bmp","bmp\\t10-11.bmp","bmp\\t10-12.bmp","bmp\\t10-13.bmp","bmp\\t10-14.bmp","bmp\\t10-15.bmp","bmp\\t10-16.bmp","bmp\\t10-17.bmp","bmp\\t10-18.bmp","bmp\\t10-19.bmp","bmp\\t10-20.bmp",\
"bmp\\t11-1.bmp","bmp\\t11-2.bmp","bmp\\t11-3.bmp","bmp\\t11-4.bmp","bmp\\t11-5.bmp","bmp\\t11-6.bmp","bmp\\t11-7.bmp","bmp\\t11-8.bmp","bmp\\t11-9.bmp","bmp\\t11-10.bmp","bmp\\t11-11.bmp","bmp\\t11-12.bmp","bmp\\t11-13.bmp","bmp\\t11-14.bmp","bmp\\t11-15.bmp","bmp\\t11-16.bmp","bmp\\t11-17.bmp","bmp\\t11-18.bmp","bmp\\t11-19.bmp","bmp\\t11-20.bmp",\
"bmp\\t12-1.bmp","bmp\\t12-2.bmp","bmp\\t12-3.bmp","bmp\\t12-4.bmp","bmp\\t12-5.bmp","bmp\\t12-6.bmp","bmp\\t12-7.bmp","bmp\\t12-8.bmp","bmp\\t12-9.bmp","bmp\\t12-10.bmp","bmp\\t12-11.bmp","bmp\\t12-12.bmp","bmp\\t12-13.bmp","bmp\\t12-14.bmp","bmp\\t12-15.bmp","bmp\\t12-16.bmp","bmp\\t12-17.bmp","bmp\\t12-18.bmp","bmp\\t12-19.bmp","bmp\\t12-20.bmp",\
"bmp\\t13-1.bmp","bmp\\t13-2.bmp","bmp\\t13-3.bmp","bmp\\t13-4.bmp","bmp\\t13-5.bmp","bmp\\t13-6.bmp","bmp\\t13-7.bmp","bmp\\t13-8.bmp","bmp\\t13-9.bmp","bmp\\t13-10.bmp","bmp\\t13-11.bmp","bmp\\t13-12.bmp","bmp\\t13-13.bmp","bmp\\t13-14.bmp","bmp\\t13-15.bmp","bmp\\t13-16.bmp","bmp\\t13-17.bmp","bmp\\t13-18.bmp","bmp\\t13-19.bmp","bmp\\t13-20.bmp",\
"bmp\\t14-1.bmp","bmp\\t14-2.bmp","bmp\\t14-3.bmp","bmp\\t14-4.bmp","bmp\\t14-5.bmp","bmp\\t14-6.bmp","bmp\\t14-7.bmp","bmp\\t14-8.bmp","bmp\\t14-9.bmp","bmp\\t14-10.bmp","bmp\\t14-11.bmp","bmp\\t14-12.bmp","bmp\\t14-13.bmp","bmp\\t14-14.bmp","bmp\\t14-15.bmp","bmp\\t14-16.bmp","bmp\\t14-17.bmp","bmp\\t14-18.bmp","bmp\\t14-19.bmp","bmp\\t14-20.bmp",\
"bmp\\t15-1.bmp","bmp\\t15-2.bmp","bmp\\t15-3.bmp","bmp\\t15-4.bmp","bmp\\t15-5.bmp","bmp\\t15-6.bmp","bmp\\t15-7.bmp","bmp\\t15-8.bmp","bmp\\t15-9.bmp","bmp\\t15-10.bmp","bmp\\t15-11.bmp","bmp\\t15-12.bmp","bmp\\t15-13.bmp","bmp\\t15-14.bmp","bmp\\t15-15.bmp","bmp\\t15-16.bmp","bmp\\t15-17.bmp","bmp\\t15-18.bmp","bmp\\t15-19.bmp","bmp\\t15-20.bmp",\
"bmp\\t16-1.bmp","bmp\\t16-2.bmp","bmp\\t16-3.bmp","bmp\\t16-4.bmp","bmp\\t16-5.bmp","bmp\\t16-6.bmp","bmp\\t16-7.bmp","bmp\\t16-8.bmp","bmp\\t16-9.bmp","bmp\\t16-10.bmp","bmp\\t16-11.bmp","bmp\\t16-12.bmp","bmp\\t16-13.bmp","bmp\\t16-14.bmp","bmp\\t16-15.bmp","bmp\\t16-16.bmp","bmp\\t16-17.bmp","bmp\\t16-18.bmp","bmp\\t16-19.bmp","bmp\\t16-20.bmp",\
"bmp\\t17-1.bmp","bmp\\t17-2.bmp","bmp\\t17-3.bmp","bmp\\t17-4.bmp","bmp\\t17-5.bmp","bmp\\t17-6.bmp","bmp\\t17-7.bmp","bmp\\t17-8.bmp","bmp\\t17-9.bmp","bmp\\t17-10.bmp","bmp\\t17-11.bmp","bmp\\t17-12.bmp","bmp\\t17-13.bmp","bmp\\t17-14.bmp","bmp\\t17-15.bmp","bmp\\t17-16.bmp","bmp\\t17-17.bmp","bmp\\t17-18.bmp","bmp\\t17-19.bmp","bmp\\t17-20.bmp",\
"bmp\\t18-1.bmp","bmp\\t18-2.bmp","bmp\\t18-3.bmp","bmp\\t18-4.bmp","bmp\\t18-5.bmp","bmp\\t18-6.bmp","bmp\\t18-7.bmp","bmp\\t18-8.bmp","bmp\\t18-9.bmp","bmp\\t18-10.bmp","bmp\\t18-11.bmp","bmp\\t18-12.bmp","bmp\\t18-13.bmp","bmp\\t18-14.bmp","bmp\\t18-15.bmp","bmp\\t18-16.bmp","bmp\\t18-17.bmp","bmp\\t18-18.bmp","bmp\\t18-19.bmp","bmp\\t18-20.bmp",\
"bmp\\t19-1.bmp","bmp\\t19-2.bmp","bmp\\t19-3.bmp","bmp\\t19-4.bmp","bmp\\t19-5.bmp","bmp\\t19-6.bmp","bmp\\t19-7.bmp","bmp\\t19-8.bmp","bmp\\t19-9.bmp","bmp\\t19-10.bmp","bmp\\t19-11.bmp","bmp\\t19-12.bmp","bmp\\t19-13.bmp","bmp\\t19-14.bmp","bmp\\t19-15.bmp","bmp\\t19-16.bmp","bmp\\t19-17.bmp","bmp\\t19-18.bmp","bmp\\t19-19.bmp","bmp\\t19-20.bmp",\
};
int beijing[4]={"bmp\\quit.bmp","bmp\\start.bmp","bmp\\help.bmp","bmp\\quit.bmp"};
int zdtstu[4]={"bmp\\11.bmp","bmp\\12.bmp","bmp\\13.bmp","bmp\\14.bmp"};
int startph[4]={"bmp\\help2.bmp","bmp\\0-1.bmp","bmp\\0-2.bmp","bmp\\0-3.bmp"};
int  zidanys[4]={"bmp\\zidan2.bmp","bmp\\zidan3.bmp","bmp\\zidan1.bmp","bmp\\zidan.bmp"};
int select=0;
long counter=0;
int x=200,y=100;
int life=3;
int zdys=0;
int isover=0;//代表游戏没有结束,1时代表游戏结束
int flag=1;
int ix=2,jy=10; //代表玩家飞机的坐标
int zdix,zdjy;//代表发射子弹的坐标
int oldzdix,oldzdjy;//记录子弹走过的坐标
int tuichu;
int dijiix[10]={0},dijijy[10];//初始化敌机的坐标位置
int olddijiix[10]={0},olddijijy[10];//记录敌机走过的坐标
int movej[10]={0};//代表敌机飞行的速度,同时只能向下飞机,即该坐标也要随机产生才行
int live[10]={1,1,1,1,1,1,1,1,1,1}; //代表着敌机的生命1为活着0为是被击落

int bzway=0;//爆炸方式为0时,即没有碰撞产生

 /*设置调色板*/
typedef unsigned char DacPalette256[256][3];
void setvgapalette256(DacPalette256*PalBuf)
{
    struct REGPACK reg ;
    reg.r_ax=0x1012 ;
    reg.r_bx=0 ;
    reg.r_cx=256 ;
    reg.r_es=FP_SEG(PalBuf);
    reg.r_dx=FP_OFF(PalBuf);
    intr(0x10,&reg);
}
int huge Return_SVGA256(void)
{
    return(SVGA640x480x256);
}

void initgraph1()
{
int width,height,gr=DETECT,mo=0,fp,i,j;
    int tuxiang(int x0,int y0,int fp);

    installuserdriver("Svga256",Return_SVGA256);
    initgraph(&gr,&mo,"");
}
/*图象函数,用语输出图象*/
int tuxiang(int x0,int y0,int fp)
{
    int width,height,i=0,j=0;
    unsigned char fix,*buffer,pix24b[4];
     DacPalette256 dac256 ;
    lseek(fp,18,SEEK_SET);
    read(fp,&width,4);
    read(fp,&height,4);
    fix=(width%4)?(4-width%4):0 ;

    lseek(fp,54,SEEK_SET);
    for(i=0;i<256;i+=1)
    {
        read(fp,pix24b,4);
        dac256[i][0]=pix24b[2]>>2 ;
        dac256[i][1]=pix24b[1]>>2 ;
        dac256[i][2]=pix24b[0]>>2 ;
    }
    setvgapalette256(&dac256);
    buffer=(unsigned char*)malloc(width);
    for(j=height-1;j>=0;j-=1)
    {
        read(fp,buffer,width);
        lseek(fp,fix,SEEK_CUR);
        for(i=0;i<width;i++)
         {
/*特殊算法1 if (buffer[i]==30)continue;  判断,如果该点颜色为粉红色(值为30)*/
/*那么就不画他,该算法用于透明技术*/
         if (buffer[i]==30)continue;
        putpixel(x0+i,y0+j,buffer[i]);
        }
    }
    free(buffer);
}
initditu() //初始化游戏地图
{
 int i=0,j=0;
 int fp;

  for(j=0;j<=19;j++) //控制行
   {
    for(i=0;i<=19;i++) //控制列
    {
     if((fp=open(ditu[j][i],O_RDONLY|O_BINARY))==-1)
      {
        printf("Cannot find file %d%d",i,j );
       }
     tuxiang(i*32,j*24,fp);//因为X(列)变化快
     close(fp);
     }
    }
}

initwjfj(int i,int j)//初始化玩家飞机
{
    int fp;
    ix=i,jy=j;
    if((fp=open("bmp\\wjfj.bmp",O_RDONLY|O_BINARY))==-1)
      {
        printf("Cannot find file ix=%d,jy=%d",i,j);
       }
     tuxiang(ix*32,jy*24,fp);
     close(fp);
}

int movewjfj() //控制玩家飞机的移动
{
 int key=mykeyscan();
 switch(key)
  {
    case KEYS4:if(ix==0){ix=0; break;}
               else  {ix-=1;break;}
    case KEYS6:if(ix==19){ix=19;break;}
               else {ix+=1;break;}
    case KEYS2:if(jy==18){jy=18;break;}
               else {jy+=1;break;}
    case KEYS8:if(jy==0){jy=0;break;}
               else {jy-=1;break;}
  }
 return key;
}

jieshu()
{   int fp;
   int x=0;
   int y=0;
    if((fp=open("bmp\\gameover.bmp",O_RDONLY|O_BINARY))==-1)
      {
        printf("Cannot find file ix=%d,jy=%d",x,y);
       }
     tuxiang(x*640,y*480,fp);
     close(fp);
}
//chawjfj(int oldx,int oldy) //擦除玩家飞机的痕迹odx和oldy分别表示列也行
chawjfj(int *oldx,int *oldy) //擦除玩家飞机的痕迹odx和oldy分别表示列也行
{
    int fp;
    if((fp=open(ditu[*oldy][*oldx],O_RDONLY|O_BINARY))==-1)
      {
       printf("Cannot find file oldx=%d,oldy=%d ",*oldx,*oldy);
       }
     tuxiang(*oldx*32,*oldy*24,fp);
     close(fp);
}

initfszd(int x,int y,int zdys)  //发射玩家子弹
{
    int fp;
    zdix=x+1; //修改子弹走过的坐标
    zdjy=y;
    if((fp=open(zidanys[zdys],O_RDONLY|O_BINARY))==-1)
      {
        printf("Cannot find file zdix=%d,zdjy=%d",x,y);
       }
     tuxiang(zdix*32,zdjy*24,fp);
     close(fp);
     oldzdix=zdix;//保留子弹走过的坐标
     oldzdjy=zdjy;
}

initdiji(int x,int y)  //载入敌人的飞机
{
    int fp;
    if((fp=open("bmp\\diji.bmp",O_RDONLY|O_BINARY))==-1)
      {
        printf("Cannot find file dijiix=%d,dijijy=%d" ,x,y);
       }
     tuxiang(x*32,y*24,fp);
     close(fp);
    //if((dijijy+movej)<=8)dijijy=dijijy+movej;
}


baozhaxiaoguo(int way,int x,int y) //实现有碰撞时的爆炸效果
//way为爆炸的不同效果    x 和y 为爆炸时产生的坐标位置
//1为玩家子弹和敌机碰撞
//2为玩家飞机和敌机的碰撞
//3为玩家飞机和敌机发射的子弹碰撞
{
  int fp;
  switch(way)
   {
    case 1:
      {
       if((fp=open("bmp\\baozha1.bmp",O_RDONLY|O_BINARY))==-1)
           printf("Cannot find file baozha=%d,baozha=%d",x,y);
       tuxiang(x*32,y*24,fp);
       close(fp);
      }
      break;
    case 2:
      {
       if((fp=open("bmp\\baozha2.bmp",O_RDONLY|O_BINARY))==-1)
           printf("Cannot find file %d%d",x,y);
       tuxiang(x*32,y*24,fp);
       close(fp);
      }
      break;
    case 3:
     {
       if((fp=open("bmp\\baozha3.bmp",O_RDONLY|O_BINARY))==-1)
           printf("Cannot find file %d%d",x,y);
       tuxiang(x*32,y*24,fp);
       close(fp);
     }
     break;
   }
}

⌨️ 快捷键说明

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