课程设计第三次实验总结

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.实现界面显示

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

原文地址:https://www.cnblogs.com/scafer/p/10990441.html

时间: 2024-10-08 21:12:44

课程设计第三次实验总结的相关文章

第五周课程总结&amp;第三次实验报告

实验三 String类的应用 实验目的 掌握类String类的使用: 学会使用JDK帮助文档: 实验内容 1.已知字符串:"this is a test of java".按要求执行以下操作:(要求源代码.结果截图.) 统计该字符串中字母s出现的次数. 统计该字符串中子串"is"出现的次数. 统计该字符串中单词"is"出现的次数. 实现该字符串的倒序输出. 2.请编写一个程序,使用下述算法加密或解密用户输入的英文字串.要求源代码.结果截图. 3.

2018/7html 课程设计(三)

插入超链接: 1 <div class="col-md-6 banner-left-grid"> 2 <h3>今日头条</h3> 3 <a href="single.html"><img src="images/b1.jpg" alt="" /></a> 4 <h4><a href="http://news.67.com/hon

《软件工程》课程设计-《四则运算》第三次冲刺!

经过三次冲刺,完成了课程设计,达到了实验要求:源程序已经在github上更新. 在<四则运算>中,有一到六年级的难度设置,难度各有高低,循序渐进,基本满足了小学生在数学上的练习需要. 在难度设置上,我们借鉴了小学的若干本数学教科书: 由对以上教科书的例会讨论,在出题难度上我们对三四年级的出题难度做出了一点小调整,降低了三年级的出题难度.略微提高了对四年级段的要求.(github上有说明) 团队分配以及贡献:

2019年春第三次课程设计实验报告

··2019年春第三次课程设计实验报告 一.实验项目名称 反弹球小游戏多球反弹动画 二.实验项目功能描述 能利用数组储存多个小球的速度和坐标,再利用循环语句实现球与球之间的碰撞和球与墙壁之间的碰撞 三.项目模块结构介绍 利用主函数定义全局变量,在使用while语句进行循环,再用批量绘制函数和延时函数 四.实现界面展现 五.代码托管链接 https://gitee.com/zhangwei666666/c_language_game 六.实验总结 这周第一次使用vs软件用起来有点不适应,边百度边摸

2019第三次课程设计实验报告

2019第三次课程设计实验报告 一.实验项目名称 反弹球游戏 二.实验项目功能描述 游戏用户通过控制挡板来反弹小球最后消除砖块,有的砖块可能会藏有金币,用户通过消除砖块接住金币来获得游戏分数,消除所有砖块,则游戏结束. 三.项目模块结构介绍 四.实现界面展示 五.代码托管链接 https://gitee.com/hxy2017826779/huang_hahas_warehouse/blob/master/%E5%8F%8D%E5%BC%B9%E7%90%83.cpp 六.实验总结 自己明显的感

二〇一九年第三次课程设计实验报告

二〇一九年第三次课程设计实验报告 一, 实验项目名称 疯狂的跳弹暨多球反弹(第四章第二个) 二, 实验项目功能描述 本项目为多球反弹 而项目的主体功能是:用easyx加载c语言的源代码以实现更加复杂和丰富的项目表现程度.本项目使用c语言的while循环来实现无限循环,并且使用for循环来计算有限循环,共计有八个子模块存在于主函数之中.以此来实现小球的反弹,以及背景的改变,并判断小球是否要反弹.最终实现多个小球的反弹. 三, 项目模块结构介绍 [一] 项目模型: [二] 文字介绍: 主函数一模块:

Java实验-课程设计报告一:个人银行账户管理系统SavingAccountManageSystem-具体文档+源码

课程设计报告一:个人银行账户管理系统 此文档及源码仅供参考 不得直接复制使用 author: [xxxxxxxxx xx xxxx] date: "2019-04-12" 作 者:31415926535x 出 处:https://www.cnblogs.com/31415926535x/p/10697659.html 版权声明:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本. 不建议直接复制文档.源码,没意义,这东西还是自己手敲一下才能涨经验 项目所有的内容都已上

第二次课程设计实验

2019春第二次课程设计实验报告 一. 实验项目名称 贪吃蛇游戏 二. 实验项目功能描述 一个能由用户手动输入实现的用户操控一串字符数组移动达成相应条件改变字符数组的贪吃蛇游戏 三. 项目模块结构介绍 四. 实现界面展示 五. 代码托管链接 https://gitee.com/llf1202/flappy-1/blob/master/tcs.cpp 六. 实验总结 问题:游戏运行时,出现sleep(2000)函数没有定义 解决:开始我是怀疑我的代码打错了,某个函数打错了,反复对照书上的代码还是没

第二次课程设计实验报告

2019春第二次课程设计实验报告 一.实验项目名称 贪吃蛇小游戏 二.实验项目功能描述 玩家通过键盘控制蛇在地图上寻找食物,蛇吃下食物,可以加分,碰到四壁或者自己游戏结束. 三.项目模块结构介绍 程序关键在于表示蛇的图形及蛇的移动.用一个小圆点来表示蛇的一节身体,身体每长一节,增加一个圆点,蛇头用四节来表示.移动时必须从蛇头开始,所以蛇不能向相反的大反向移动,如果不按任意键,蛇自行在当前方向上前移,如果按与蛇方向相反的方向键,此游戏就会暂停,再按向前的方向键才能继续游戏,但按下有效方向键后,蛇头