C语言实现空战游戏

本文实例为大家分享了C语言实现空战游戏的具体代码,供大家参考,具体内容如下

一、项目描述和成果展示

项目描述:   在以往的程序中进行了改进。
例如:   可以发射多个子弹
        可以有多个敌机

飞机大战 1.0版
飞机大战 2.0版

现在这个版本是3.0版 这个版本的各个功能基本完善

效果图如下:

C语言实现空战游戏_第1张图片

二、发射多个子弹

代码如下:

#include
#include
#include
#include

#define High 25 //游戏的尺寸
#define Width 50

//全局变量
int position_x,position_y;//飞机的位置
int canvas[High][Width]={0};
//二维数组存储游戏画布中对应的元素
//0为空格 1为飞机  2为子弹  3为敌机

void gotoxy(int x,int y)//将光标移动到(x,y)位置
{
    HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE);
    COORD pos;
    pos.X=x;
    pos.Y=y;
    SetConsoleCursorPosition(handle,pos);
}

void startup()//数据的初始化
{
    position_x=High/2;
    position_y=Width/2;
    canvas[position_x][position_y]=1;
}

void show()//显示画面
{
    int i,j;
    gotoxy(0,0);//将光标移动到原点位置,以下重画清屏
    for(i=0;i0)
                    canvas[i-1][j]=2;
            }
        }
    }
}

void updateWithInput()//与用户输入有关的更新
{
    char input;
    if(kbhit())//判断是否有输入
    {
        input=getch();//根据用户的不同输入来移动
        if(input=='a'||input=='A')
        {
            canvas[position_x][position_y]=0;
            position_y--;//位置左移
            canvas[position_x][position_y]=1;
        }
        else if(input=='d'||input=='D')
        {
            canvas[position_x][position_y]=0;
            position_y++;//位置右移
            canvas[position_x][position_y]=1;
        }
        else if(input=='w'||input=='W')
        {
            canvas[position_x][position_y]=0;
            position_x--;//位置上移
            canvas[position_x][position_y]=1;
        }
        else if(input=='s'||input=='S')
        {
            canvas[position_x][position_y]=0;
            position_x++;//位置下移
            canvas[position_x][position_y]=1;
        }
        else if(input==' ')//发射子弹
        {
            canvas[position_x-1][position_y]=2;
            //发射子弹的初始位置在飞机的正上方
        }
    }
}

int main()
{
    startup();//数据的初始化
    while(1)//游戏循环执行
    {
        show();//显示画面
        updateWithoutInput();//与用户输入无关的更新
        updateWithInput();//与用户输入有关的更新
    }
    return 0;
}

效果图如下:

C语言实现空战游戏_第2张图片

三、多个敌机

代码如下:

#include
#include
#include
#include

#define High 25 //游戏的尺寸
#define Width 50
#define EnemyNum 5//敌机的个数

//全局变量
int position_x,position_y;//飞机的位置
int enemy_x[EnemyNum],enemy_y[EnemyNum];//敌机的位置
int canvas[High][Width]={0};
//二维数组存储游戏画布中对应的元素
//0为空格 1为飞机  2为子弹  3为敌机
int score;//得分

void gotoxy(int x,int y)//将光标移动到(x,y)位置
{
    HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE);
    COORD pos;
    pos.X=x;
    pos.Y=y;
    SetConsoleCursorPosition(handle,pos);
}

void startup()//数据的初始化
{
    int k;
    position_x=High-1;
    position_y=Width/2;
    canvas[position_x][position_y]=1;
    for(k=0;k0)
                canvas[i-1][j]=2;
            }
        }
    }
    for(k=0;kHigh)//敌机跑出屏幕
        {
            canvas[enemy_x[k]][enemy_y[k]]=0;
            enemy_x[k]=rand()%2;//产生新的飞机
            enemy_y[k]=rand()%Width;
            canvas[enemy_x[k]][enemy_y[k]]=3;
            score--;//减分
        }
        static int speed=0;
        if(speed<36)
            speed++;
        if(speed==36)
        {
            //敌机下落
            for(k=0;k 
 

效果图如下:

四、增加子弹升级功能

当分数达到一定的值自动升级炮弹,当分数下降一定数值后炮弹下降一个等级。

代码如下:

#include
#include
#include
#include

#define High 25 //游戏的尺寸
#define Width 40
#define EnemyNum 5//敌机的个数

//全局变量
int position_x,position_y;//飞机的位置
int enemy_x[EnemyNum],enemy_y[EnemyNum];//敌机的位置
int canvas[High][Width]={0};
//二维数组存储游戏画布中对应的元素
//0为空格 1为飞机  2为子弹  3为敌机

int score;//得分
int BulletWidth;//子弹的宽度
int EnemyMoveSpeed;//敌机的移动速度

void gotoxy(int x,int y)//将光标移动到(x,y)位置
{
    HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE);
    COORD pos;
    pos.X=x;
    pos.Y=y;
    SetConsoleCursorPosition(handle,pos);
}

void startup()//数据的初始化
{
    int k;
    position_x=High-1;
    position_y=Width/2;
    canvas[position_x][position_y]=1;
    for(k=0;k3)//达到一定积分后敌机变快
                            EnemyMoveSpeed--;
                        if(score/5)//达到一定积分后子弹变厉害
                        {
                            BulletWidth=0;
                            BulletWidth=BulletWidth+score/5;
                            if(BulletWidth>5)//子弹加到一定威力后,会固定不变
                                BulletWidth=5;
                        }
                        canvas[enemy_x[k]][enemy_y[k]]=0;
                        enemy_x[k]=rand()%2;//产生新的飞机
                        enemy_y[k]=rand()%Width;
                        canvas[enemy_x[k]][enemy_y[k]]=3;
                        canvas[i][j]=0;//子弹消失
                    }
                }
                //子弹向上移动
                canvas[i][j]=0;
                if(i>0)
                canvas[i-1][j]=2;
            }
        }
    }
    for(k=0;kHigh)//敌机跑出屏幕
        {
            canvas[enemy_x[k]][enemy_y[k]]=0;
            enemy_x[k]=rand()%2;//产生新的飞机
            enemy_y[k]=rand()%Width;
            canvas[enemy_x[k]][enemy_y[k]]=3;
            score--;//减分
            if(score%5==0&&score>0)//减的分数过多,子弹威力下降
            {
                BulletWidth--;
                EnemyMoveSpeed++;
            }
        }
        static int speed=0;
        if(speedWidth-1)
                right=Width-1;
            int k;
            for(k=left;k<=right;k++)//发射子弹
            canvas[position_x-1][k]=2;
            //发射子弹的初始位置在飞机的正上方
        }
    }
}

int main()
{
    startup();//数据的初始化
    HideCursor();
    system("title 游戏中");
    system("color 09");
    while(1)//游戏循环执行
    {
        show();//显示画面
        updateWithoutInput();//与用户输入无关的更新
        updateWithInput();//与用户输入有关的更新
    }
    return 0;
}

效果图如下:

C语言实现空战游戏_第3张图片

五、增加一些小功能

增加一个主菜单
里面增加了一些小的功能

代码如下:

#include
#include
#include
#include

#define High 25 //游戏的尺寸
#define Width 40
#define EnemyNum 5//敌机的个数

//全局变量
int position_x,position_y;//飞机的位置
int enemy_x[EnemyNum],enemy_y[EnemyNum];//敌机的位置
int canvas[High][Width]={0};
//二维数组存储游戏画布中对应的元素
//0为空格 1为飞机  2为子弹  3为敌机

int score;//得分
int BulletWidth;//子弹的宽度
int EnemyMoveSpeed;//敌机的移动速度

void gotoxy(int x,int y)//将光标移动到(x,y)位置
{
    HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE);
    COORD pos;
    pos.X=x;
    pos.Y=y;
    SetConsoleCursorPosition(handle,pos);
}

void startup()//数据的初始化
{
    int k;
    position_x=High-1;
    position_y=Width/2;
    canvas[position_x][position_y]=1;
    for(k=0;k3)//达到一定积分后敌机变快
                            EnemyMoveSpeed--;
                        if(score/5)//达到一定积分后子弹变厉害
                        {
                            BulletWidth=0;
                            BulletWidth=BulletWidth+score/5;
                            if(BulletWidth>5)//子弹加到一定威力后,会固定不变
                                BulletWidth=5;
                        }
                        canvas[enemy_x[k]][enemy_y[k]]=0;
                        enemy_x[k]=rand()%2;//产生新的飞机
                        enemy_y[k]=rand()%Width;
                        canvas[enemy_x[k]][enemy_y[k]]=3;
                        canvas[i][j]=0;//子弹消失
                    }
                }
                //子弹向上移动
                canvas[i][j]=0;
                if(i>0)
                canvas[i-1][j]=2;
            }
        }
    }
    for(k=0;kHigh)//敌机跑出屏幕
        {
            canvas[enemy_x[k]][enemy_y[k]]=0;
            enemy_x[k]=rand()%2;//产生新的飞机
            enemy_y[k]=rand()%Width;
            canvas[enemy_x[k]][enemy_y[k]]=3;
            score--;//减分
            if(score%5==0&&score>0)//减的分数过多,子弹威力下降
            {
                BulletWidth--;
                EnemyMoveSpeed++;
            }
        }
        static int speed=0;
        if(speedWidth-1)
                right=Width-1;
            int k;
            for(k=left;k<=right;k++)//发射子弹
            canvas[position_x-1][k]=2;
            //发射子弹的初始位置在飞机的正上方
        }
}

void gamemenu()//游戏菜单
{
    int temp=0;
    int i,j;
    char input;
    for(i=0;i 
 

效果图如下:

C语言实现空战游戏_第4张图片

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

你可能感兴趣的:(C语言实现空战游戏)