博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
课程设计第三次实验总结
阅读量:5920 次
发布时间:2019-06-19

本文共 3923 字,大约阅读时间需要 13 分钟。

1.实验项目名称

空战游戏
2.实验项目功能描述
利用数组进一步该井空战游戏,实现多台敌机,发射散弹等效果;
3.项目模块介绍

//清屏功能void HideCuresor(){    CONSOLE_CURSOR_INFO cursor_info = { 1,0 };    SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);}void gotoxy(int x, int y){    HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);    COORD pos;    pos.X = x;    pos.Y = y;    SetConsoleCursorPosition(handle, pos);}//数据初始化void startup(){    pos_x = high - 1;    pos_y = width / 2;    canvas[pos_x][pos_y] = 1;    int k;    for (k = 0; k < enum; k++)    {        enemy_x[k] = rand() % 2;        enemy_y[k] = rand() % width;        canvas[enemy_x[k]][enemy_y[k]] = 3;    }    score = 0;    bulwidth = 0;    enespeed = 20;}//显示飞机void show(){    gotoxy(0, 0);    int i, j;    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("得分:%d\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 < enum; k++)                {                    if ((i == enemy_x[k]) && (j == enemy_y[k]))                    {                        score++;                        if (score % 5 == 0 && enespeed > 3)                            enespeed--;                        if (score % 5 == 0)                            bulwidth++;                        canvas[enemy_x[k]][enemy_y[k]] = 3;                        canvas[i][j] = 0;                    }                }                canvas[i][j] = 0;                if (i > 0)                    canvas[i - 1][j] = 2;            }        }    }    static int speed = 0;    if (speed < enespeed)        speed++;    for (k = 0; k < enum; k++)    {        if ((pos_x == enemy_x[k]) && (pos_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 (speed == enespeed)        {            for (k = 0; k < enum; 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'&&pos_y > 0)        {            canvas[pos_x][pos_y] = 0;            pos_y--;            canvas[pos_x][pos_y] = 1;        }        else if (input == 'd'&&pos_y < width - 1)        {            canvas[pos_x][pos_y] = 0;            pos_y++;            canvas[pos_x][pos_y] = 1;        }        else if (input == 'w')        {            canvas[pos_x][pos_y] = 0;            pos_x--;            canvas[pos_x][pos_y] = 1;        }        else if (input == 's')        {            canvas[pos_x][pos_y] = 0;            pos_x++;            canvas[pos_x][pos_y] = 1;        }        else if (input == ' ')        {            int left = pos_y - bulwidth;            int right = pos_y + bulwidth;            if (left < 0)                left = 0;            if (right > width - 1)                right = width - 1;            int k;            for (k = left; k <= right; k++)                canvas[pos_x - 1][k] = 2;        }    }}

4.实现界面显示

1581752-20190608124428980-210239917.png
5.代码托管链接
https://gitee.com/scfyer/first
6.实验总结
空战游戏变得比原来更有意思,进一步加深了对数组的理解与与运用。

转载于:https://www.cnblogs.com/scafer/p/10990441.html

你可能感兴趣的文章
XtraBackup应用说明(支持TokuDB)
查看>>
jira 跟工时有关的配置文件
查看>>
P1121 环状最大两段子段和
查看>>
SpringMVC详解(五)------参数绑定
查看>>
CSS3 渐变(Gradients)
查看>>
jQueryEasyUI Messager基本使用
查看>>
S2-052复现过程(附POC利用)
查看>>
ReactNative踩坑日志——fetch如何向服务器传递参数
查看>>
mdb文件怎么打开
查看>>
虚拟机配置静态 IP 以后无法连接的解决办法
查看>>
讲讲“池”的概念
查看>>
[LeetCode] Non-decreasing Array 非递减数列
查看>>
背水一战 Windows 10 (34) - 控件(进度类): RangeBase, Slider, ProgressBar, ProgressRing
查看>>
解决Linux安装 VMware tools 工具的方法
查看>>
ASP.NET Core:使用Dapper和SwaggerUI来丰富你的系统框架
查看>>
python获取自己的环境变量
查看>>
Do You Kown Asp.Net Core - 根据实体类自动创建Razor Page CURD页面模板
查看>>
TCP/IP(八)之总结TCP/IP四层模型
查看>>
剑指offer十七姊妹篇之二叉树的创建、遍历、判断子二叉树
查看>>
mysql乐观锁总结和实践(二)
查看>>