C语言实现飞机大战程序设计

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

作业要求:

1.游戏当中出现多类型敌人
2.游戏中能进行存档和读档
3.玩家控制的飞机由多字符组成
4.游戏过程中没有出现BUG 
5.游戏显示制作者信息
6.游戏当中带有BGM
7.其他个性化设定

成效:

代码:

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<windows.h>
#include<mmsystem.h>                // 导入声音头文件
#pragma comment(lib,"Winmm.lib")    // 导入声音头文件库
 
#define High 20            // 游戏画面尺寸
#define Width 30
#define EnemyNum 5        // 敌机个数
#define BossNum 2        // Boss机个数
 
int flag;                // 飞机状态 
int color(int c);        // 更改文字颜色
void explation();        // 游戏提示
void show();            // 显示游戏界面
void endgame();            // 游戏结束
void startup();            // 数据初始化
void FileRead();        // 读档
 
// 全局变量
int position_x, position_y;                // 飞机位置
struct enemy{
    int x;
    int y;
    int life;
}Boss[BossNum], enemy[EnemyNum];        // 敌机位置
 
int canvas[High][Width] = {0};            // 二维数组存储游戏画布中对应的元素
                                        // 0为空格,1为飞机8,2为子弹o,3为敌机0 , 4为Boss敌机A
int score;                                // 得分
int number;                                // 销毁敌机数
int BulletWidth;                        // 子弹宽度
int EnemyMoveSpeed;                        // 敌机移动速度
 
// 光标移动到(x,y)位置
void gotoxy(int x, int y)
{
    HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD pos;
    pos.X = x;
    pos.Y = y;
    SetConsoleCursorPosition(handle, pos);
}
 
// 更改文字颜色
int color(int c)
{
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), c);
    return 0;
}
 
// 隐藏光标
void HideCursor()
{
    CONSOLE_CURSOR_INFO cursor_info = {1,0};
    SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}
 
// 开始界面
void welcometogame()
{
    int n, i, j = 1;
    system("cls");
    color(15);
    gotoxy(33, 1);
    printf("飞机大战 Plane War");
    color(56);
    for (i = 3; i <= 26; i++)       // 输出上下边框
    {
        for (j = 6; j <= 80; j++)   // 输出左右边框
        {
            gotoxy(j, i);
            if (i == 3 || i == 26)
                printf(" ");
            else if (j == 6 || j == 80)
                printf(" ");
        }
    }
    color(14);
    gotoxy(38, 6);
    printf("基本操作\n");
    gotoxy(19, 8);
    printf("空格:发射子弹  W:前进  A:左移  D:右移  S:后退\n");
    gotoxy(34, 11);
    printf("1.开始游戏(play)");
    gotoxy(34, 13);
    printf("2.游戏规则(rule)");
    gotoxy(34, 15);
    printf("3.读取存档(read)");
    gotoxy(34, 17);
    printf("4.退出游戏(quit)");
    color(15);
    gotoxy(22, 24);
    printf("游戏制作人:李歆灵   学号:420240320   联系方式:13530656670");
    color(14);
    gotoxy(33, 20);
    printf("请选择 1 2 3 4: ");
    color(14);
    scanf("%d", &n);   // 输入选项
    switch (n)
    {
    case 1:
        flag = 1;
        system("cls");
        break;
    case 2:
        explation();   // 游戏规则
        break;
    case 3:
        system("cls"); // 读档
        break;
    case 4:
        gotoxy(30, 28);
        exit(0);       // 退出游戏
        break;
    default:
        color(9);
        gotoxy(33, 22);
        printf("请输入1-4之间的数");
        _getch();       // 输入任意键
        system("cls");  // 清屏
        welcometogame();
    }
}
 
// 游戏规则
void explation()
{
    int i, j = 1;
    system("cls");
    color(15);
    gotoxy(30, 1);
    printf("游戏规则 Rules of game");
    color(56);
    for (i = 3; i <= 26; i++)       // 输出上下边框
    {
        for (j = 6; j <= 80; j++)   // 输出左右边框
        {
            gotoxy(j, i);
            if (i == 3 || i == 26)
                printf(" ");
            else if (j == 6 || j == 80)
                printf(" ");
        }
    }
    color(14);
    gotoxy(10, 6);
    printf("1. W,A,S,D 分别是控制飞机的移动,空格发射子弹");
    gotoxy(10, 9);
    printf("2. O是普通敌机(需一发子弹),A是Boss敌机(需两发子弹)");
    gotoxy(10, 12);
    printf("3. 击败普通敌机可获得1分,击败Boss敌机可获得2分");
    gotoxy(10, 15);
    printf("4. 敌机进入下边界减1分");
    gotoxy(10, 18);
    printf("5. 飞机碰到敌机会坠落");
    gotoxy(10, 21);
    printf("6. 按Z存档,按P暂停游戏");
    color(15);
    gotoxy(25, 23);
    printf("/*****按任意键返回主页面*****/");
    _getch();  // 按任意键返回主界面
    system("cls");
    welcometogame();
}
 
// 数据初始化
void startup()
{
    mciSendString("open D:\\plane\\game.mp3 alias bkmusic ",NULL,0,NULL);    // 打开背景音乐
    mciSendString("play bkmusic",NULL,0,NULL); // 循环播放
    position_x = High / 2;
    position_y = Width / 2;
    canvas[position_x][position_y] = 3;
    canvas[position_x + 1][position_y - 1] = 3;
    canvas[position_x + 1][position_y] = 3;
    canvas[position_x + 1][position_y + 1] = 3;
 
    int k;
    for (k = 0; k < EnemyNum; k++)
    {
        enemy[k].x = rand() % 2;
        enemy[k].y = rand() % Width;
        canvas[enemy[k].x][enemy[k].y] = 3;
    }
    for (k = 0; k < BossNum; k++)
    {
        Boss[k].x = rand() % 2;
        Boss[k].y = rand() % Width;
        canvas[Boss[k].x][Boss[k].y] = 4;
        Boss[k].life = 2;
    }
    int score = 0;            // 成绩
    int number = 0;            // 销毁敌机数
    BulletWidth = 0;
    EnemyMoveSpeed = 30;
    HideCursor();            // 光标
}
 
// 存档代码
void FileWrite()
{
    FILE *fp;                            // 文件指针
    fp = fopen("D:\\game.data", "w");    // 打开文件 "w": write写入文件
    int i, j;
    for (i = 0; i < EnemyNum; i++)
    {
        fwrite(&enemy[i], sizeof(struct enemy), 1, fp);
    }
    for (j = 0; j < BossNum; j++)
    {
        fwrite(&Boss[j], sizeof(struct enemy), 1, fp);
    }
    fwrite(&position_x, sizeof(int), 1, fp);
    fwrite(&position_y, sizeof(int), 1, fp);
    fwrite(&score, sizeof(int), 1, fp);
    fwrite(&number, sizeof(int), 1, fp);
    fwrite(&BulletWidth, sizeof(int), 1, fp);
    fwrite(&EnemyMoveSpeed, sizeof(int), 1, fp);
    fclose(fp);  // 关闭文件
    printf("\n保存成功\n");
}
 
// 读档代码
void FileRead()
{
    FILE *fp;                            // 文件指针
    fp = fopen("D:\\game.data", "r");    // 打开文件 "r": read读取文件
    mciSendString("open D:\\plane\\game.mp3 alias bkmusic ",NULL,0,NULL);    // 打开背景音乐
    mciSendString("play bkmusic",NULL,0,NULL); // 循环播放
    if(fp == NULL)
        startup();
    else
    {
        int i, j;
        for (i = 0; i < EnemyNum; i++)
        {
            fread(&enemy[i], sizeof(struct enemy), 1, fp);
        }
        for (j = 0; j < BossNum; j++)
        {
            fread(&Boss[j], sizeof(struct enemy), 1, fp);
        }
        fread(&position_x, sizeof(int), 1, fp);
        fread(&position_y, sizeof(int), 1, fp);
        fread(&score, sizeof(int), 1, fp);
        fread(&number, sizeof(int), 1, fp);
        fread(&BulletWidth, sizeof(int), 1, fp);
        fread(&EnemyMoveSpeed, sizeof(int), 1, fp);
    }
    fclose(fp);  // 关闭文件
    canvas[position_x][position_y] = 1;
    canvas[position_x + 1][position_y - 1] = 1;
    canvas[position_x + 1][position_y] = 1;
    canvas[position_x + 1][position_y + 1] = 1;
 
    int k;
    for (k = 0; k < EnemyNum; k++)
    {
        canvas[enemy[k].x][enemy[k].y] = 3;
    }
    for (k = 0; k < BossNum; k++)
    {
        canvas[Boss[k].x][Boss[k].y] = 4;
        Boss[k].life = 2;
    }
 
    HideCursor();
}
 
// 显示画面
void show()
{
    color(112);
    gotoxy(0, 0); // 光标移动到原点位置,以下重画清屏
    int i, j;
    for (i = 0; i < High; i++)
    {
        for (j = 0; j < Width; j++)
        {
            if ((j == Width - 1) || (i == High - 1) || (j == 0) || (i == 0))
                printf("#");             // 打印边界#
            else if (canvas[i][j] == 1)
                printf("8");             // 输出飞机8
            else if (canvas[i][j] == 2)
                printf("o");             // 输出子弹o
            else if (canvas[i][j] == 3)
                printf("O");             // 输出敌机O
            else if (canvas[i][j] == 4)
                printf("A");             // 输出Boss敌机A
            else
                printf(" ");
        }
        printf("\n");
    }
    color(14);
    printf("\n");
    printf("游戏得分: %d\n", score);
    printf("销毁敌机: %d\n\n", number);
    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[k].x) && (j == enemy[k].y))            // 子弹击中敌机
                    {
                        mciSendString("close gemusic",NULL,0,NULL);        // 先把前面一次的音乐关闭
                        mciSendString("open D:\\plane\\gotEnemy.mp3 alias gemusic ",NULL,0,NULL);    // 打开音乐
                        mciSendString("play gemusic",NULL,0,NULL);        // 仅播放一次
                        score++;                                        // 分数加1
                        number++;                                        // 销毁敌机数加1
                        if (number % 6 == 0 && EnemyMoveSpeed > 3)        // 达到一定积分后,敌机变快
                            EnemyMoveSpeed--;
                        if (number % 12 == 0)                           // 达到一定积分后,子弹变厉害
                            BulletWidth++;
                        canvas[enemy[k].x][enemy[k].y] = 0;                // 残影问题
                        enemy[k].x = rand() % 2;                        // 产生新的敌机
                        enemy[k].y = rand() % Width;
                        canvas[enemy[k].x][enemy[k].y] = 3;
                        canvas[i][j] = 0;                                // 子弹消失
                    }
                }
                for (k = 0; k < BossNum; k++)
                {
                    if ((i == Boss[k].x) && (j == Boss[k].y))    // 子弹击中Boss敌机
                    {
                        mciSendString("close gemusic",NULL,0,NULL);        // 先把前面一次的音乐关闭
                        mciSendString("open D:\\plane\\gotEnemy.mp3 alias gemusic ",NULL,0,NULL);    // 打开音乐
                        mciSendString("play gemusic",NULL,0,NULL);        // 仅播放一次    
                        Boss[k].life--;                                // Boss敌机生命值减1
                        if (Boss[k].life == 0)
                        {
                            canvas[Boss[k].x][Boss[k].y] = 0;    // 残影问题
                            Boss[k].x = rand() % 2;                    // 产生新Boss敌机
                            Boss[k].y = rand() % Width;
                            canvas[Boss[k].x][Boss[k].y] = 4;
                            canvas[i][j] = 0;                            // 子弹消失
                            Boss[k].life = 2;
                            score++;score++;                            // 分数加2
                            number++;                                    // 销毁敌机数加1
                        }
                    }
                }
                // 子弹向上移动
                canvas[i][j] = 0;
                if (i > 0)
                    canvas[i - 1][j] = 2;
            }
        }
    }
    static int speed = 0;
    if (speed < EnemyMoveSpeed)
        speed++;
    for (k = 0; k < EnemyNum; k++)
    {
        // 敌机撞到我机
        if ((position_x == enemy[k].x) && (position_y == enemy[k].y) || (position_x + 1 == enemy[k].x) && (position_y - 1 == enemy[k].y) || (position_x + 1 == enemy[k].x) && (position_y + 1 == enemy[k].y) || (position_x + 2 == enemy[k].x) && (position_y + 1 == enemy[k].y) || (position_x + 2 == enemy[k].x) && (position_y - 1 == enemy[k].y))
        {
            mciSendString("close bkmusic",NULL,0,NULL);        // 先把前面一次的音乐关闭
            mciSendString("open D:\\plane\\explode.mp3 alias exmusic",NULL,0,NULL);        // 打开音乐
            mciSendString("play exmusic",NULL,0,NULL);        // 仅播放一次
            color(11);
            printf("\n游戏结束!\n");
            Sleep(3000);
            system("pause");
            exit(0);
        }
 
        // 敌机跑出显示屏幕
        if (enemy[k].x > High)
        {
            canvas[enemy[k].x][enemy[k].y] = 0;
            enemy[k].x = rand() % 2; // 产生新的敌机
            enemy[k].y = rand() % Width;
            canvas[enemy[k].x][enemy[k].y] = 3;
            score--; // 减分
        }
 
        if (speed == EnemyMoveSpeed)
        {
            // 敌机下落
            for (k = 0; k < EnemyNum; k++)
            {
                canvas[enemy[k].x][enemy[k].y] = 0;
                enemy[k].x++;
                speed = 0;
                canvas[enemy[k].x][enemy[k].y] = 3;
            }
 
            // Boss敌机下落
            for (k = 0; k < BossNum; k++)
            {
                canvas[Boss[k].x][Boss[k].y] = 0;
                Boss[k].x++;
                speed = 0;
                canvas[Boss[k].x][Boss[k].y] = 4;
            }
        }
    }
 
    for (k = 0; k < BossNum; k++)
    {
        // Boss敌机撞到我机
        if ((position_x == Boss[k].x) && (position_y == Boss[k].y) || (position_x + 1 == Boss[k].x) && (position_y - 1 == Boss[k].y) || (position_x + 1 == Boss[k].x) && (position_y + 1 == Boss[k].y) || (position_x + 2 == Boss[k].x) && (position_y + 1 == Boss[k].y) || (position_x + 2 == Boss[k].x) && (position_y - 1 == Boss[k].y))
        {
            mciSendString("close exmusic",NULL,0,NULL);        // 先把前面一次的音乐关闭
            mciSendString("open D:\\plane\\explode.mp3 alias exmusic",NULL,0,NULL);        // 打开音乐
            mciSendString("play exmusic",NULL,0,NULL);        // 仅播放一次
            color(11);
            printf("\n游戏结束!\n");
            Sleep(3000);
            system("pause");
            exit(0);
        }
 
        // Boss敌机跑出显示屏幕
        if (Boss[k].x > High)
        {
            canvas[Boss[k].x][Boss[k].y] = 0;
            Boss[k].x = rand() % 2; // 产生新的Boss敌机
            Boss[k].y = rand() % Width;
            canvas[Boss[k].x][Boss[k].y] = 4;
            score--; // 减分
        }
    }
}
 
// 与用户输入有关的更新
void updateWithInput()
{
    char input;
    if (_kbhit()) // 判断是否有输入
    {
        input = _getch(); // 根据用户的不同输入来移动,不必输入回车
        if (input == 'a'&& position_y > 1 || input == 'A')
        {
            canvas[position_x][position_y] = 0;
            canvas[position_x + 1][position_y - 1] = 0;
            canvas[position_x + 1][position_y] = 0;
            canvas[position_x + 1][position_y + 1] = 0;
            position_y--; // 位置左移
            canvas[position_x][position_y] = 1;
            canvas[position_x + 1][position_y - 1] = 1;
            canvas[position_x + 1][position_y] = 1;
            canvas[position_x + 1][position_y + 1] = 1;
        }
        else if (input == 'd' && position_y < Width - 2 || input == 'D')
        {
            canvas[position_x][position_y] = 0;
            canvas[position_x + 1][position_y - 1] = 0;
            canvas[position_x + 1][position_y] = 0;
            canvas[position_x + 1][position_y + 1] = 0;
            position_y++; // 位置右移
            canvas[position_x][position_y] = 1;
            canvas[position_x + 1][position_y - 1] = 1;
            canvas[position_x + 1][position_y] = 1;
            canvas[position_x + 1][position_y + 1] = 1;
        }
        else if (input == 'w'&& position_x > 1 || input == 'W')
        {
            canvas[position_x][position_y] = 0;
            canvas[position_x + 1][position_y - 1] = 0;
            canvas[position_x + 1][position_y] = 0;
            canvas[position_x + 1][position_y + 1] = 0;
            position_x--; // 位置上移
            canvas[position_x][position_y] = 1;
            canvas[position_x + 1][position_y - 1] = 1;
            canvas[position_x + 1][position_y] = 1;
            canvas[position_x + 1][position_y + 1] = 1;
        }
        else if (input == 's'&& position_x < High - 3 || input == 'S')
        {
            canvas[position_x][position_y] = 0;
            canvas[position_x + 1][position_y - 1] = 0;
            canvas[position_x + 1][position_y] = 0;
            canvas[position_x + 1][position_y + 1] = 0;
            position_x++; // 位置下移
            canvas[position_x][position_y] = 1;
            canvas[position_x + 1][position_y - 1] = 1;
            canvas[position_x + 1][position_y] = 1;
            canvas[position_x + 1][position_y + 1] = 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;    // 发射子弹的初始位置在飞机的正上方
        }
        else if (input == 'P' || input == 'p')    // 按P暂停游戏
            system("pause");
        else if (input == 'Z' || input == 'z')    // 按Z存档
        {
            FileWrite();
            system("pause");
            exit(0);
        }
    }
}
 
 
int main()
{
    welcometogame();
    if (flag == 1)
        startup();                // 数据初始化
    else
        FileRead();                // 数据初始化
 
    while (1)                    // 游戏循环执行
    {
        show();                    // 显示画面
        updateWithoutInput();    // 与用户输入无关的更新
        updateWithInput();        // 与用户输入有关的更新
    }
    return 0;
}

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

(0)

相关推荐

  • 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语言实现简单飞机大战游戏的具体代码,供大家参考,具体内容如下 一.项目描述和最终的成果展示 项目描述: 显示出一个飞机,并可以控制移动,发出激光,打靶练习. 效果展示: 二.输出一个飞机模型 先输出一个飞机模型.后面再进一步完成控制飞机的功能. 代码如下: //输出飞机图案 #include<stdio.h> #include<st

  • C语言用封装方法实现飞机大战游戏

    目录 一.项目描述和最终的成果展示 二.用函数进行封装 三.新型的发射子弹功能 四.实现移动的敌机功能和更正屏幕闪烁,清除光标功能 五.订正一些BUG和完成一些美化 本文实例为大家分享了C语言用封装方法实现飞机大战游戏的具体代码,供大家参考,具体内容如下 这是上一次的飞机大战游戏的项目.项目: 最简单的飞机大战游戏 上次没有用函数进行的封装.这次在上次的基础上进行封装和一些功能的优化. 一.项目描述和最终的成果展示 项目描述:   在上一次的基础上用函数进行了封装,对于一些功能也进行了一些优化.

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

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

  • 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语言实现简单飞机大战

    本文实例为大家分享了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语言代码实现飞机大战

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

  • C语言控制台实现字符飞机大战

    本文实例为大家分享了C语言实现字符飞机大战的具体代码,供大家参考,具体内容如下 先看看效果吧 大一的时候做的,当时没有好的代码习惯,所以代码有点乱,代码直接复制就能用了,功能可以自行拓展. 代码: #include <stdio.h> #include <stdlib.h> #include <conio.h> int main () { int life=6;//生命 int i,j/*循环*/,plane_x,plane_y/*飞机所在坐标*/,a; plane_x

  • C语言实现飞机大战程序设计

    本文实例为大家分享了C语言实现飞机大战的具体代码,供大家参考,具体内容如下 作业要求: 1.游戏当中出现多类型敌人2.游戏中能进行存档和读档3.玩家控制的飞机由多字符组成4.游戏过程中没有出现BUG 5.游戏显示制作者信息6.游戏当中带有BGM7.其他个性化设定 成效: 代码: #include<stdio.h> #include<stdlib.h> #include<conio.h> #include<windows.h> #include<mmsy

  • C语言实现飞机大战

    本文实例为大家分享了C语言实现飞机大战的具体代码,供大家参考,具体内容如下 #include<stdio.h> #include<stdlib.h> #include<conio.h> #include<Windows.h> int score = 0; int plane_col, plane_row;//·É»úλÖà int bullet_col,bullet_row;//×Óµ¯µÄλÖà int area_height, area_width;

  • 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.每隔一秒钟生成一架敌机,生成位置x坐标随机,

  • 基于Java语言在窗体上实现飞机大战小游戏的完整步骤

    目录 小组项目 模块需求描述 总体开发思想 功能实现 1.登录与结束界面 2.播放音乐 3.子弹 运行测试 登陆界面 发射子弹 总结 小组项目 飞机大战:用 Java 语言在窗体上实现飞机大战小游戏,运行程序后,出现一个窗体,在窗体上用鼠标控制英雄机的移动,通过子弹打击敌机进行分数的计算,以及英雄机血量的计算等. 主要模块:登陆界面.音乐.子弹.敌机.英雄机.背景图.结束界面.BOSS 机.分数计算.血量计算. 负责模块:登陆界面.音乐.子弹.结束界面. 模块需求描述 登陆界面:运行程序后,弹出

随机推荐