当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++进阶与实例

简单潜艇大战程序

    /*简单潜艇大战
      全局变量speed一开始需要调整,大家的速度不同
      主要练习下这个游戏的基本算法,用简单的图形来模拟
      ----跳蚤侦探-------
    */
    #include <graphics.h>
    #include <stdlib.h>
    #include <dos.h>
    #include <graphics.h>
    #define KEY_ESC 0x01
    #define KEY_SPACE 0x39
    #define KEY_LEFT 0x4b
    #define KEY_RIGHT 0x4d
    int speed=10000;
    char key_state[128],key_pressed[128];/*键盘操作用的变量*/
    int score=0;/*得分*/
    char scorestr[10];/*输出分数的变量*/
    strUCt Fire/*子弹的结构体*/
    {
     int x;
     int y;
     int start;/*是否发射炮弹*/
    }amyfire[6];/*屏幕上最多有5个敌人可以发子弹*/
    struct Play/*玩家的结构体*/
    {
     int x;
     int y;
     struct Fire fire[6];
     life;
    }play;
    struct Amy/*敌人的结构体*/
    {
     int x;
     int y;
     int speed;/*敌人的速度*/
     int color;
     int direction;
     life;
    }amy[6];
    void InitGraph(void);/*图形初始化*/
    void CloseGraph(void);/*图形结束*/
    void GamePlay(void);/*具体玩游戏*/
    void DrawPlay(void);/*画玩家*/
    void DrawAmy(int i);/*画敌人*/
    void DrawFire(int x,int y,int n);/*画子弹,0去除,1显示*/
    void DrawAmyFire(int x,int y,int n);/*画子弹,0去除,1显示*/
    void DrawBlack(int x,int y,int color);/*去除原来地方的物体*/
    void PrScore();/*输出得分*/
    int GetKey(int ScanCode);/*这里开始都是按键函数*/
    void interrupt far (*OldInt9Handler)();
    void far interrupt NewInt9();
    void InstallKeyboard();
    void ShutDownKeyboard();
    void main(void)
    {
     InitGraph();/*图形初始化*/
     GamePlay();/*具体玩游戏*/
     CloseGraph();/*图形结束*/
    }
    void InitGraph(void)/*图形初始化*/
    {
     int gd=DETECT,gm;
     initgraph(&gd,&gm,"c:\\tc");
     cleardevice();
     InstallKeyboard();
    }
    void DrawPlay(void)/*画玩家*/
    {
     setfillstyle(SOLID_FILL,6);
     bar(play.x-20,play.y-10,play.x+20,play.y);
     setfillstyle(SOLID_FILL,4);
     bar(play.x-20,play.y-10,play.x-10,play.y);
    }
    void DrawAmy(int i)/*画敌人*/
    {
     setfillstyle(SOLID_FILL,amy[i].color);
     bar(amy[i].x-20,amy[i].y-10,amy[i].x+20,amy[i].y);
     setfillstyle(SOLID_FILL,GREEN);
     if(amy[i].direction==1)
     bar(amy[i].x-20,amy[i].y-10,amy[i].x-10,amy[i].y);
     else
     bar(amy[i].x+10,amy[i].y-10,amy[i].x+20,amy[i].y);
    }
    void DrawBlack(int x,int y,int color)/*去除原来地方的物体*/
    {
     setfillstyle(SOLID_FILL,color);
     bar(x-20,y-10,x+20,y);
    }
    void DrawFire(int x,int y,int n)/*画子弹,0去除,1显示*/
    {
     if(n==0)
     setfillstyle(SOLID_FILL,BLUE);
     else
     setfillstyle(SOLID_FILL,0);
     setcolor(BLUE);
     fillellipse(x,y,5,5);
    }
    void DrawAmyFire(int x,int y,int n)/*画子弹,0去除,1显示*/
    {
     if(n==0)
     setfillstyle(SOLID_FILL,BLUE);
     else
     setfillstyle(SOLID_FILL,YELLOW);/*敌人的炮弹是黄的*/
     setcolor(BLUE);
     fillellipse(x,y,3,3);
    }

共3页 首页 上一页 1 2 3 下一页 尾页 跳转到
相关内容
赞助商链接