C语言实现空战游戏

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

一、项目描述和成果展示

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

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

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

效果图如下:

二、发射多个子弹

代码如下:

#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<Windows.h>

#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;i<High;i++)
    {
        for(j=0;j<Width;j++)
        {
            if(canvas[i][j]==0)
                printf(" ");//输出空格
            else if(canvas[i][j]==1)
                printf("*");//输出空格
            else if(canvas[i][j]==2)
                printf("|");//输出子弹
        }
        printf("\n");
    }
}

void updateWithoutInput()//与用户输入无关的更新
{
    int i,j;
    for(i=0;i<High;i++)
    {
        for(j=0;j<Width;j++)
        {
            if(canvas[i][j]==2)//子弹向上移动
            {
                canvas[i][j]=0;
                if(i>0)
                    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;
}

效果图如下:

三、多个敌机

代码如下:

#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<Windows.h>

#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;k<EnemyNum;k++)
    {
        enemy_x[k]=rand()%2;
        enemy_y[k]=rand()%Width;
        canvas[enemy_x[k]][enemy_y[k]]=3;
    }
    score=0;
}

void show()//显示画面
{
    int i,j;
    gotoxy(0,0);//将光标移动到原点位置,以下重画清屏
    for(i=0;i<High;i++)
    {
        for(j=0;j<Width;j++)
        {
            if(canvas[i][j]==0)
                printf(" ");//输出空格
            else if(canvas[i][j]==1)
                printf("*");//输出空格
            else if(canvas[i][j]==2)
                printf("|");//输出子弹
            else if(canvas[i][j]==3)
                printf("+");//输出敌机
        }
        printf("\n");
    }
    printf("得分:%3d\n",score);
    Sleep(20);
}

void updateWithoutInput()//与用户输入无关的更新
{
    int i,j,k;
    for(i=0;i<High;i++)
    {
        for(j=0;j<Width;j++)
        {
            if(canvas[i][j]==2)//子弹向上移动
            {
                for(k=0;k<EnemyNum;k++)
                {
                    if( (i==enemy_x[k])&&(j==enemy_y[k]) )//子弹击中敌机
                    {
                        score++;//分数加一
                        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;k<EnemyNum;k++)
    {
        if( (position_x==enemy_x[k])&&(position_y==enemy_y[k]) )//敌机撞到我机
        {
            printf("失败\n");
            Sleep(3000);
            system("pause");
            exit(0);
        }
        if(enemy_x[k]>High)//敌机跑出屏幕
        {
            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<EnemyNum;k++)
            {
                canvas[enemy_x[k]][enemy_y[k]]=0;
                enemy_x[k]++;
                speed=0;
                canvas[enemy_x[k]][enemy_y[k]]=3;
            }
        }
    }
}

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;
}

效果图如下:

四、增加子弹升级功能

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

代码如下:

#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<Windows.h>

#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;k<EnemyNum;k++)
    {
        enemy_x[k]=rand()%2;
        enemy_y[k]=rand()%Width;
        canvas[enemy_x[k]][enemy_y[k]]=3;
    }
    score=0;
    BulletWidth=0;
    EnemyMoveSpeed=20;
}

void show()//显示画面
{
    int i,j;
    gotoxy(0,0);//将光标移动到原点位置,以下重画清屏
    for(i=0;i<High;i++)
    {
        for(j=0;j<Width;j++)
        {
            if(canvas[i][j]==0)
                printf(" ");//输出空格
            else if(canvas[i][j]==1)
                printf("*");//输出空格
            else if(canvas[i][j]==2)
                printf("|");//输出子弹
            else if(canvas[i][j]==3)
                printf("+");//输出敌机
        }
        printf("\n");
    }
    printf("════════════════════════════════════════\n");
    printf("得分:%3d\n",score);
    system("date /t");
    system("time /t");
    Sleep(20);
}

//定义隐藏光标函数
void HideCursor()
{
    CONSOLE_CURSOR_INFO cursor;    
    cursor.bVisible = FALSE;    
    cursor.dwSize = sizeof(cursor);    
    HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);    
    SetConsoleCursorInfo(handle, &cursor);
}

void updateWithoutInput()//与用户输入无关的更新
{
    int i,j,k;
    for(i=0;i<High;i++)
    {
        for(j=0;j<Width;j++)
        {
            if(canvas[i][j]==2)//子弹向上移动
            {
                for(k=0;k<EnemyNum;k++)
                {
                    if( (i-1==enemy_x[k])&&(j==enemy_y[k]) )//子弹击中敌机
                    {
                        score++;//分数加一
                        if(score%5==0&&EnemyMoveSpeed>3)//达到一定积分后敌机变快
                            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;k<EnemyNum;k++)
    {
        if( (position_x==enemy_x[k])&&(position_y==enemy_y[k]) )//敌机撞到我机
        {
            printf("失败\n");
            Sleep(3000);
            system("pause");
            exit(0);
        }
        if(enemy_x[k]>High)//敌机跑出屏幕
        {
            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(speed<EnemyMoveSpeed)
            speed++;
        if(speed==EnemyMoveSpeed)
        {
            //敌机下落
            for(k=0;k<EnemyNum;k++)
            {
                canvas[enemy_x[k]][enemy_y[k]]=0;
                enemy_x[k]++;
                speed=0;
                canvas[enemy_x[k]][enemy_y[k]]=3;
            }
        }
    }
}

void updateWithInput()//与用户输入有关的更新
{
    char input;
    if(kbhit())//判断是否有输入
    {
        input=getch();//根据用户的不同输入来移动
        if(input=='a'||input=='A')
        {
            canvas[position_x][position_y]=0;
            position_y--;//位置左移
            if(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++;//位置右移
            if(position_y==Width-1)
                position_y--;
            canvas[position_x][position_y]=1;
        }
        else if(input=='w'||input=='W')
        {
            canvas[position_x][position_y]=0;
            position_x--;//位置上移
            if(position_x==0)
                position_x++;
            canvas[position_x][position_y]=1;
        }
        else if(input=='s'||input=='S')
        {
            canvas[position_x][position_y]=0;
            position_x++;//位置下移
            if(position_x==High)
                position_x--;
            canvas[position_x][position_y]=1;
        }
        else if(input==' ')//发射子弹
        {
            int left =position_y-BulletWidth;
            int right=position_y+BulletWidth;
            if(left<0)
                left=0;
            if(right>Width-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;
}

效果图如下:

五、增加一些小功能

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

代码如下:

#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<Windows.h>

#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;k<EnemyNum;k++)
    {
        enemy_x[k]=rand()%2;
        enemy_y[k]=rand()%Width;
        canvas[enemy_x[k]][enemy_y[k]]=3;
    }
    score=0;
    BulletWidth=0;
    EnemyMoveSpeed=20;
}

void show()//显示画面
{
    int i,j;
    gotoxy(0,0);//将光标移动到原点位置,以下重画清屏
    for(i=0;i<High;i++)
    {
        for(j=0;j<Width;j++)
        {
            if(canvas[i][j]==0)
                printf(" ");//输出空格
            else if(canvas[i][j]==1)
                printf("*");//输出空格
            else if(canvas[i][j]==2)
                printf("|");//输出子弹
            else if(canvas[i][j]==3)
                printf("+");//输出敌机
        }
        printf("\n");
    }
    printf("════════════════════════════════════════\n");
    printf("得分:%3d\n",score);
    system("date /t");
    system("time /t");
    printf("提示:按 z 键回到主菜单");
    Sleep(20);
}

//定义隐藏光标函数
void HideCursor()
{
    CONSOLE_CURSOR_INFO cursor;    
    cursor.bVisible = FALSE;    
    cursor.dwSize = sizeof(cursor);    
    HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);    
    SetConsoleCursorInfo(handle, &cursor);
}

int updateWithoutInput()//与用户输入无关的更新
{
    int i,j,k;
    for(i=0;i<High;i++)
    {
        for(j=0;j<Width;j++)
        {
            if(canvas[i][j]==2)//子弹向上移动
            {
                for(k=0;k<EnemyNum;k++)
                {
                    if( (i-1==enemy_x[k])&&(j==enemy_y[k]) )//子弹击中敌机
                    {
                        score++;//分数加一
                        if(score%5==0&&EnemyMoveSpeed>3)//达到一定积分后敌机变快
                            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;k<EnemyNum;k++)
    {
        if( (position_x==enemy_x[k])&&(position_y==enemy_y[k]) )//敌机撞到我机
        {
            system("cls");
            printf("失败\n");
            printf("得分:%d\n",score);
            printf("正在返回主菜单\n");
            Sleep(3000);
            return 1;
        }
        if(enemy_x[k]>High)//敌机跑出屏幕
        {
            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(speed<EnemyMoveSpeed)
            speed++;
        if(speed==EnemyMoveSpeed)
        {
            //敌机下落
            for(k=0;k<EnemyNum;k++)
            {
                canvas[enemy_x[k]][enemy_y[k]]=0;
                enemy_x[k]++;
                speed=0;
                canvas[enemy_x[k]][enemy_y[k]]=3;
            }
        }
    }
    return 0;
}

void updateWithInput(char input)//与用户输入有关的更新
{
        if(input=='a'||input=='A')
        {
            canvas[position_x][position_y]=0;
            position_y--;//位置左移
            if(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++;//位置右移
            if(position_y==Width-1)
                position_y--;
            canvas[position_x][position_y]=1;
        }
        else if(input=='w'||input=='W')
        {
            canvas[position_x][position_y]=0;
            position_x--;//位置上移
            if(position_x==0)
                position_x++;
            canvas[position_x][position_y]=1;
        }
        else if(input=='s'||input=='S')
        {
            canvas[position_x][position_y]=0;
            position_x++;//位置下移
            if(position_x==High)
                position_x--;
            canvas[position_x][position_y]=1;
        }
        else if(input==' ')//发射子弹
        {
            int left =position_y-BulletWidth;
            int right=position_y+BulletWidth;
            if(left<0)
                left=0;
            if(right>Width-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<High;i++)//数组初始化
    {
        for(j=0;j<Width;j++)
        {
            canvas[i][j]=0;
        }
        printf("\n");
    }
    startup();//数据的初始化
    system("cls");
    while(1)
    {
        show();//显示画面
        temp=updateWithoutInput();//与用户输入无关的更新
        if(kbhit())//判断是否有输入
        {
            input=getch();
            updateWithInput(input);//与用户输入有关的更新
            if(input=='z'||input=='Z')
                temp=1;
        }
        if(temp==1)
        {
            system("cls");
            break;
        }
    }
}
void help()//帮助菜单
{
    char input;
    system("cls");
    printf("\n\n\n\n\n\n\n\n");
    printf("---------------------------------------\n");
    printf("                 帮助菜单                \n\n");
    printf("      1. 按空格发射炮弹                 \n");
    printf("      2. a 键左移                      \n");
    printf("      3. d 键右移                      \n");
    printf("      4. w 键上移                      \n");
    printf("      5. s 键下移                      \n");
    printf("---------------------------------------\n");
    printf("\n\n提示:按 z 键回到主菜单\n");
    printf("\n\n               祝您玩的愉快!\n");
    while(1)
    {
        input=getch();
        if(input=='z')
        {
            break;
        }
    }
}
void quit()//退出菜单
{
    exit(0);
}

void menu()//主菜单
{
    char change;
    system("cls");
    printf("\n--------------------------------------------\n");
    printf("                   8\n");
    printf("                   88\n"); 
    printf("                    888\n");
    printf("                     8888\n");
    printf("                  8888888888888\n");
    printf("                     8888\n");
    printf("                    888\n");
    printf("                   88\n");
    printf("                   8\n");
    printf("\n\n\n               Welcome to fly war!\n");
    printf("\n\n\n\n");
    printf("                 主菜单                \n\n"); 
    printf("      1. 进入游戏                 \n");
    printf("      2. 帮助菜单                      \n");
    printf("      3. 退出游戏                      \n");
    printf("---------------------------------------\n");
    printf("\n\n               祝您玩的愉快!\n");
    change=getch();
    switch(change)
    {
    case '1':
        gamemenu();//游戏菜单
        break;
    case '2':
        help();//帮助菜单
        break;
    case '3':
        quit();//退出菜单
        break;      
    }
}
int main()
{
    HideCursor();
    system("title 游戏中");
    system("color 09");
    system("mode 50,30");
    while(1)//游戏循环执行
    {
        menu();
    }
    return 0;
}

效果图如下:

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

(0)

相关推荐

  • C语言实现飞机票务系统

    飞机票务系统设计要求:有登录系统界面.账号.密码:建立航班信息功能:查看从郑州到某终点站飞机票信息功能:飞机票购买功能:添加购票人信息功能:显示购票人信息功能:退定飞机票功能: 程序中的音乐可以改为自己指定的,用时把我用的音乐那行代码注释掉即可. 代码如下: #include<stdio.h> #include<string.h> #include<stdlib.h> #include<Windows.h> #include<conio.h>//

  • C语言实现打飞机小游戏

    本文实例为大家分享了C语言实现打飞机小游戏的具体代码,供大家参考,具体内容如下 编译环境:vs2019 需求: 在同一个平面内,控制大炮发射的三个方向,空格发射炮弹,敌军和友军飞机会一直随机在天上飞过,击中天上飞行的敌军飞机加一分,击中友军飞机减一分 思路: 先初始化程序,再画出说明和地图,接着进入无限循环,循环中分别实现飞机不停地在天上飞.通过awd空格键控制游戏内容.符合游戏条件时加分三个主要步骤. 做法: 首先要实现飞机的动画效果,本质是要在控制台上输出三条x轴上输出一个字符串,并要让这三

  • C语言控制台实现打飞机小游戏

    本文实例为大家分享了C语言实现打飞机小游戏的具体代码,供大家参考,具体内容如下 初学C语言总觉得不能做些什么好玩的,这个小游戏只需 "一点点" (千真万确)C语言知识就能完成! 总计不到200行的非空白代码(没有强行压缩行数) 操作说明: 1.W.S.A.D 控制 上 .下.左.右 方向,空格 攻击 2.每击中一架敌机增加1分,界面下方显示实时分数 3.撞到敌机后显示 game over! 2.5秒(时间可更改) 子弹连发 移动的同时发射子弹 飞机撞上敌机结束游戏 可通过更改相关变量的

  • C语言实现简单飞机大战

    本文实例为大家分享了C语言实现飞机大战的具体代码,供大家参考,具体内容如下 定义四个函数实现飞机大战 #include<stdio.h> #include<windows.h> #include<conio.h> //定义全局变量 int high,width; //定义边界 int position_x,position_y; //飞机位置 int bullet_x,bullet_y; //子弹位置 int enemy_x,enemy_y; int score; in

  • C语言实现飞机大战小游戏完整代码

    大一课设做的飞机大战,可以进行登入和注册,这个是利用单链表做的,源代码已经给出,这个是最基本的飞机大战模式,我设置了几个功能,比如排行榜之类的.排行榜是用结构体数组做的,已及冒泡排序,并且在文件里保存信息.比较简单. 这个是注册页面规范: 这个是登入页面: 游戏菜单:  飞机大战页面:  话不多说,直接上代码 以下是源代码  #include"stdio.h" #include"windows.h" //用于获取窗口的句柄与屏幕控制 #include"co

  • C语言实现打飞机游戏

    本文实例为大家分享了C语言实现打飞机游戏的具体代码,供大家参考,具体内容如下 #include<stdio.h> #include<stdlib.h> #include<windows.h> #include<time.h> #define U 1 #define D 2 #define L 3 #define R 4 typedef struct node //己方飞机的节点 { int x; int y; struct node *next; }node

  • C语言之飞机大战游戏

    本文实例为大家分享了C语言之飞机大战游戏的具体代码,供大家参考,具体内容如下 技术原型 1.void gotoxy(int x, int y) 函数,该函数可以使光标去到(x,y)的位置进行打印: 2.链表,用于存储状态: 3.windows.h中有非阻塞输入,_kbhit(): 4.随机生成数: 5.视觉暂留: 6.碰撞检测: 7.清屏函数: 8.设置边界: 技术路线 1.设置一个边界: 2.维护一个子弹的列表: 3.维护一个敌机的列表: 4.初始化飞机的位置: 5.每隔一秒钟生成一架敌机,生

  • C语言代码实现飞机大战

    本文实例为大家分享了C语言实现简单飞机大战的具体代码,供大家参考,具体内容如下 这个游戏的功能很单一,也就是"飞机大战",哈哈哈哈.总共只有300多行代码左右,你也可以想想它会有多简陋,把它复制下来编译一下可以直接执行,需要的同学可以自取~ PS:我运行的环境是 dev c++,前提你要在C99的环境中执行 以下是源代码 #include<stdio.h> #include<stdio.h> #include<windows.h> //将用户从键盘获

  • C语言版飞机大战游戏

    C语言版飞机大战,供大家参考,具体内容如下 不多说直接上代码 #include<iostream> #include<windows.h> #include<conio.h> #include<time.h> #include<string> using namespace std; /*=============== all the structures ===============*/ typedef struct Frame { COOR

  • C语言实现飞机订票系统

    问题描述与题目要求 问题描述: 假定某民航有M个航次的班机,每个航次都只到达一个地方.试为该机场售票处设计一个自动订票和退票系统,要求系统具有以下功能: (1) 订票:若该航次余票大于等于乘客订票数,则在该航次的乘客表中,插入订票乘客的信息项,并修改该航次有关数据,否则给出相应信息. (2) 退票:若该航次当前退票数小于等于乘客原订票数,则在相应的乘客表中找到该乘客项,修改该航次及乘客表中有关数据:当某乘客由于退票使订票数为零时,则从乘客表中撤消该数据项. 要求: (1)描述对航次表和乘客表选用

随机推荐