首页 > 其他分享 >软件开发与创新第一周实验——关于“打怪小游戏”的试玩体验与修改

软件开发与创新第一周实验——关于“打怪小游戏”的试玩体验与修改

时间:2024-03-02 14:22:05浏览次数:28  
标签:case cost cout 软件开发 void break gongjili 小游戏 试玩

一.“打怪小游戏”代码来源

http://blog.csdn.net/zjx120307/article/details/126221342?spm=1001.2014.3001.5506

二.运行环境及运行结果

1.运行环境:Windows11操作系统,C++运行环境

2.运行截图:

(1)功能6演示
image
(2)功能1演示
image
(3)功能2演示

image
(4)功能3演示
image
(5)功能4演示
image

image

image

原代码:

点击查看代码
#include <iostream> 
using namespace std;
double shengmingli = 2000;//定义主角初始生命力 
int gongjili = 150;//定义主角初始攻击力 
int fangyuli = 200;//定义主角初始防御力 
int money = 20;//定义主角初始金钱数量 
bool guoguan;//定义是否通关判定 
void wuqidian();//定义武器店函数 
void yaodian();//定义药店函数 
void guaiwu1();//定义小怪物函数 
void guaiwu2();//定义大怪物函数 
int main()
{
    cout << "欢迎你开始玩打怪物小游戏!\n";
    cout << "小镇\n";
    cout << "一个1000年的小镇。周围有一条河,有一片树林,很多房子和很多人。\n有一家药店" << endl;
    cout << "和一家武器店。\n";
    int xiaozhen;//定义选择项目 
    cout << "1.去武器店" << endl;
    cout << "2.去药品店" << endl;
    cout << "3.去打小怪物" << endl;
    cout << "4.去打大怪物" << endl;
    cout << "5.退出游戏" << endl;
    cout << "6.显示你的状态" << endl;
    cin >> xiaozhen;
    while (xiaozhen != 5)//输入5时退出游戏 
    {
        if (shengmingli <= 0)//主角生命力小于等于0时游戏结束 
        {
            cout << "你死啦!" << endl;
            break;
        }
        if (guoguan)
        {
            cout << "恭喜通关!" << endl;
            break;
        }
        if (xiaozhen == 6)//输入6可检测自己的状态 
        {
            cout << "你的生命力:" << shengmingli << endl;
            cout << "你的攻击力:" << gongjili << endl;
            cout << "你的防御力:" << fangyuli << endl;
            cout << "你拥有的钱:" << money << endl;
        }
        else
            switch (xiaozhen)
            {
            case 1: wuqidian(); break;
            case 2: yaodian(); break;
            case 3: guaiwu1(); break;
            case 4: guaiwu2(); break;
            default: cout << "请不要乱选!" << endl; break;
            }
        cin >> xiaozhen;
    }
    if (xiaozhen == 5)
    {
        cout << "正在退出游戏……" << endl;
    }
    cin.get();
    cin.get();
    return 0;
}
void wuqidian()
{
    cout << "欢迎来到武器店!" << endl;
    cout << "1、买小刀(1M加2攻击力)" << endl;
    cout << "2、买短剑(2M加20攻击力)" << endl;
    cout << "3、买大砍刀(5M加40攻击力)" << endl;
    cout << "4、买双节棍(7M加60攻击力)" << endl;
    cout << "5、买盾牌(2M加30防御力)" << endl;
    cout << "6、买铠甲(5M加60防御力)" << endl;
    cout << "7、离开武器店" << endl;
    int wuqidian;
    cin >> wuqidian;
    while (wuqidian != 7)//输入7时结束函数 
    {
        switch (wuqidian)
        {
        case 1: if (money < 10)
            cout << "你的钱不够" << endl;//钱不够时返回Flase 
              else
            cout << "购买成功!" << endl;//钱足够时返回True 
            gongjili += 2;
            money -= 1;
            break;
        case 2: if (money < 80)
            cout << "你的钱不够" << endl;
              else
            cout << "购买成功!" << endl;
            gongjili += 20;
            money -= 80;
            break;
        case 3: if (money < 140)
            cout << "你的钱不够" << endl;
              else
            cout << "购买成功!" << endl;
            gongjili += 40;
            money -= 140;
            break;
        case 4: if (money < 200)
            cout << "你的钱不够" << endl;
              else
            cout << "购买成功!" << endl;
            gongjili += 60;
            money -= 200;
            break;
        case 5: if (money < 60)
            cout << "你的钱不够" << endl;
              else
            cout << "购买成功!" << endl;
            fangyuli += 30;
            money -= 60;
            break;
            fangyuli += 60;
            money -= 100;
            break;
        default: cout << "无" << endl;
            break;
        }
        cin >> wuqidian;
    }
    if (wuqidian == 7)
    {	  //返回main()主函数 
        cout << "欢迎下次再来!" << endl;
        cout << "欢迎你开始玩打怪物小游戏!\n";
        cout << "小镇\n";
        cout << "一个1000年的小镇。周围有一条河,有一片树林,很多房子和很多人。\n有一家药店" << endl;
        cout << "和一家武器店。\n";
        cout << "1.去武器店" << endl;
        cout << "2.去药品店" << endl;
        cout << "3.去打小怪物" << endl;
        cout << "4.去打大怪物" << endl;
        cout << "5.退出游戏" << endl;
        cout << "6.显示你的状态" << endl;
    }
}
/*
yaodian()的设置与wuqidian()相同,可参照阅读.
*/
void yaodian()
{
    cout << "欢迎来到药品店!" << endl;
    cout << "1、买1号补血药(10M加200生命)" << endl;
    cout << "2、买2号补血药(50M加1000生命力)" << endl;
    cout << "3、买3号补血药(100M加2200生命力)" << endl;
    cout << "4、离开武器店" << endl;
    int yaodian;
    cin >> yaodian;
    while (yaodian != 4)
    {
        switch (yaodian)
        {
        case 1: if (money < 10)
            cout << "你的钱不够" << endl;
              else
            cout << "购买成功!" << endl;
            shengmingli += 200;
            money -= 10;
            break;
        case 2: if (money < 50)
            cout << "你的钱不够" << endl;
              else
            cout << "购买成功!" << endl;
            shengmingli += 1000;
            money -= 50;
            break;
        case 3: if (money < 100)
            cout << "你的钱不够" << endl;
              else
            cout << "购买成功!" << endl;
            shengmingli += 2200;
            money -= 100;
            break;
        default: cout << "无" << endl;
            break;
        }
        cin >> yaodian;
    }
    if (yaodian == 4)
    {
        cout << "欢迎下次再来!" << endl;
        cout << "欢迎你开始玩打怪物小游戏!\n";
        cout << "小镇\n";
        cout << "一个1000年的小镇。周围有一条河,有一片树林,很多房子和很多人。\n有一家药店" << endl;
        cout << "和一家武器店。\n";
        cout << "1.去武器店" << endl;
        cout << "2.去药品店" << endl;
        cout << "3.去打小怪物" << endl;
        cout << "4.去打大怪物" << endl;
        cout << "5.退出游戏" << endl;
        cout << "6.显示你的状态" << endl;
    }
}
/*这里是两个战斗函数,使用指针来处理.避免造成内存崩溃.*/
void guaiwu1()
{
    cout << "开始与小怪物战斗!!!" << endl;
    double* g_shengmingli = new double;//定义怪物生命 
    int* g_gongjili = new int;//定义怪物攻击力 
    int* g_fangyuli = new int;//定义怪物防御力 
    int* g_money = new int;//定义怪物金钱 
    *g_shengmingli = 100;
    *g_gongjili = 5;
    *g_fangyuli = 3;
    *g_money = 5;
    double* tongji1 = new double;//用来计算主角对怪物的杀伤 
    double* tongji2 = new double;//用来计算怪物对主角的杀伤 
    *tongji1 = 0;
    *tongji2 = 0;
    int* huihe = new int;//定义回合数 
    *huihe = 1;
    cout << "你开始对小怪物进行攻击!" << endl;
    int* xuanze = new int;
    /*
    攻击计算公式
    杀伤=攻击力*2-防御力
    玩家每回合可以选择攻击与逃跑
    */
    while ((*g_shengmingli) > 0 && shengmingli > 0 && (*xuanze) != 2)
    {
        cout << "现在是" << "第" << *huihe << "回合!" << endl;
        cout << "请选择你的动作:\n";
        cout << "1、攻击\n2、逃跑\n";
        cin >> *xuanze;
        switch ((*xuanze))
        {
        case 1: cout << "你对小怪物发动了攻击!" << endl;
            *g_shengmingli -= gongjili * 2 - (*g_fangyuli);
            *tongji1 = gongjili * 2 - (*g_fangyuli);
            cout << "你打掉了小怪物" << *tongji1 << "的生命!" << endl;
            cout << "小怪物还剩" << (*g_shengmingli) - (*tongji1) << "点生命" << endl;
            shengmingli -= (*g_gongjili) * 2 - fangyuli;
            *tongji2 = (*g_gongjili) * 2 - fangyuli;
            cout << "小怪物对你发动了攻击!" << endl;
            cout << "小怪物打掉了你" << *tongji2 << "的生命!" << endl;
            cout << "你还剩" << shengmingli - (*tongji2) << "点生命" << endl; break;
        case 2: cout << "你决定逃跑!" << endl;
            cout << "逃跑成功!" << endl; continue;
        default: cout << "请不要乱选!" << endl;
        }
        (*huihe)++;
    }
    if ((*g_shengmingli) <= 0)
    {//杀死怪物后的返回 
        cout << "小怪物被你杀死了!你真厉害!!!" << endl;
        money += (*g_money);
        cout << "欢迎你开始玩打怪物小游戏!\n";
        cout << "小镇\n";
        cout << "一个1000年的小镇。周围有一条河,有一片树林,很多房子和很多人。\n有一家药店" << endl;
        cout << "和一家武器店。\n";
        cout << "1.去武器店" << endl;
        cout << "2.去药品店" << endl;
        cout << "3.去打小怪物" << endl;
        cout << "4.去打大怪物" << endl;
        cout << "5.退出游戏" << endl;
        cout << "6.显示你的状态" << endl;
    }
    else
        if (shengmingli <= 0)
        {//被怪物杀死后的返回 
            cout << "你被小怪物杀死了!游戏结束!!!" << endl;
        }
        else
            if ((*xuanze) == 2)
            {//逃跑的返回 
                cout << "你逃回了小镇!" << endl;
                cout << "欢迎你开始玩打怪物小游戏!\n";
                cout << "小镇\n";
                cout << "一个1000年的小镇。周围有一条河,有一片树林,很多房子和很多人。\n有一家药店" << endl;
                cout << "和一家武器店。\n";
                cout << "1.去武器店" << endl;
                cout << "2.去药品店" << endl;
                cout << "3.去打小怪物" << endl;
                cout << "4.去打大怪物" << endl;
                cout << "5.退出游戏" << endl;
                cout << "6.显示你的状态" << endl;
            }
    delete g_shengmingli;
    delete g_gongjili;
    delete g_fangyuli;
    delete g_money;
    delete tongji1;
    delete tongji2;
}
/*
设置均与void函数guaiwu1()相同,可参照上例阅读.
*/
void guaiwu2()
{
    cout << "开始与大怪物战斗!!!" << endl;
    double* g_shengmingli = new double;
    int* g_gongjili = new int;
    int* g_fangyuli = new int;
    *g_shengmingli = 3600;
    *g_gongjili = 500;
    *g_fangyuli = 500;
    double* tongji1 = new double;
    double* tongji2 = new double;
    *tongji1 = 0;
    *tongji2 = 0;
    int* huihe = new int;
    *huihe = 1;
    cout << "你开始对大怪物进行攻击!" << endl;
    int* xuanze = new int;
    while ((*g_shengmingli) > 0 && shengmingli > 0 && (*xuanze) != 2)
    {
        cout << "现在是" << "第" << *huihe << "回合!" << endl;
        cout << "请选择你的动作:\n";
        cout << "1、攻击\n2、逃跑\n";
        cin >> *xuanze;
        switch ((*xuanze))
        {
        case 1: cout << "你对大怪物发动了攻击!" << endl;
            *g_shengmingli -= gongjili * 2 - (*g_fangyuli);
            *tongji1 = gongjili * 2 - (*g_fangyuli);
            cout << "你打掉了大怪物" << *tongji1 << "的生命!" << endl;
            cout << "大怪物还剩" << (*g_shengmingli) - (*tongji1) << "点生命" << endl;
            shengmingli -= (*g_gongjili) * 2 - fangyuli;
            *tongji2 = (*g_gongjili) * 2 - fangyuli;
            cout << "大怪物对你发动了攻击!" << endl;
            cout << "大怪物打掉了你" << *tongji2 << "的生命!" << endl;
            cout << "你还剩" << shengmingli - (*tongji2) << "点生命" << endl; break;
        case 2: cout << "你决定逃跑!" << endl;
            cout << "逃跑成功!" << endl; continue;
        default: cout << "请不要乱选!" << endl;
        }
        (*huihe)++;
    }
    if ((*g_shengmingli) <= 0)
    {
        cout << "大怪物被你杀死了!你真厉害!!!" << endl;
        guoguan = true;
        cout << "欢迎你开始玩打怪物小游戏!\n";
        cout << "小镇\n";
        cout << "一个1000年的小镇。周围有一条河,有一片树林,很多房子和很多人。\n有一家药店" << endl;
        cout << "和一家武器店。\n";
        cout << "1.去武器店" << endl;
        cout << "2.去药品店" << endl;
        cout << "3.去打小怪物" << endl;
        cout << "4.去打大怪物" << endl;
        cout << "5.退出游戏" << endl;
        cout << "6.显示你的状态" << endl;
    }
    else
        if (shengmingli <= 0)
        {
            cout << "你被大怪物杀死了!游戏结束!!!" << endl;
        }
        else
            if ((*xuanze) == 2)
            {
                cout << "你逃回了小镇!" << endl;
                cout << "欢迎你开始玩打怪物小游戏!\n";
                cout << "小镇\n";
                cout << "一个1000年的小镇。周围有一条河,有一片树林,很多房子和很多人。\n有一家药店" << endl;
                cout << "和一家武器店。\n";
                cout << "1.去武器店" << endl;
                cout << "2.去药品店" << endl;
                cout << "3.去打小怪物" << endl;
                cout << "4.去打大怪物" << endl;
                cout << "5.退出游戏" << endl;
                cout << "6.显示你的状态" << endl;
            }
    delete g_shengmingli;
    delete g_gongjili;
    delete g_fangyuli;
    delete tongji1;
    delete tongji2;
}

## 三.使用体验问题及调整方案

1.首先宏观上交互体验不佳,界面设置方面过于拥挤。

2.首尾闭环不够清晰,当成功攻击怪物后直接显示结束游戏(功能3.4)强制结束玩家的游戏进程,应该设置为返回游戏主页,让用户自主选择是否继续游戏。

3.游戏内容设置不够完整,整个游戏机制是基于玩家的金钱,生命力,攻击力足够支撑损耗的情况,除了初始化赋初值之外,整个过程中没有其他赚取金钱,生命力的方式。玩家生命力耗尽之后只能通过重开游戏,这让玩家在本游戏中的体验缺少连贯性。应该在多加一些功能用于赚钱金钱和生命力,例如增加“打工赚钱”功能获得金钱,“购买武林秘籍”功能提高攻击力,不仅提升游戏完整性,也增强玩家体验感。

4.逻辑方面存在错误处理:在各个函数中,应该考虑一些错误处理,比如当金钱不够时,应该提示用户而不是静默失败。

5.代码方面重复过多,展示菜单的代码在“武器店”“药品店”函数中重复出现,可以将其定义为函数适时调用。

四.重构测试截图

1.功能调整:增加“打工赚钱” “购买武功秘籍”两个功能函数,代码与运行结果

“打工赚钱功能,点击查看代码”
void dagong() {
    cout << "开始打工赚钱!" << endl;
    // 实现打工赚钱功能
    int workType;  // 工作类型
    int workTime;  // 工作时间
    int earnedMoney;  // 赚得的钱

    cout << "请选择工作类型:" << endl;
    cout << "1. 搬粮食(每小时1元)" << endl;
    cout << "2. 客栈小二(每小时2元)" << endl;
    cout << "3. 胡同杂技表演(每小时3元)" << endl;
    cout << "4. 跑腿送货(每小时2元)" << endl;
    cin >> workType;

    cout << "请输入你要工作的小时数:";
    cin >> workTime;

    switch (workType)
    {
    case 1:
        earnedMoney = workTime * 1;
        break;
    case 2:
        earnedMoney = workTime * 2;
        break;
    case 3:
        earnedMoney = workTime * 3;
        break;
    case 4:
        earnedMoney = workTime * 2;
        break;
    default:
        earnedMoney = 0;
        break;
    }

    money += earnedMoney;

    cout << "你工作了 " << workTime << " 小时,赚了 " << earnedMoney << " 元钱!" << endl;
    cout << "现在你总共有 " << money << " 元钱。" << endl;
    //zhuye();
}
购买武功秘籍功能,点击查看代码
void buyMartialArt() {
    cout << "欢迎来到武功秘籍店!" << endl;
    // 实现购买武功秘籍功能
    int martialArt;  // 武功秘籍选择

    cout << "请选择要购买的武功秘籍:" << endl;
    cout << "1. 葵花宝典(2元,加20点攻击力)" << endl;
    cout << "2. 独孤九剑(3元,加25点攻击力)" << endl;
    cout << "3. 凌波微步(4元,加30点攻击力)" << endl;
    cout << "4. 北冥神功(5元,加35点攻击力)" << endl;


    cin >> martialArt;

    int cost = 0;
    int gongjili = 0;

    switch (martialArt)
    {
    case 1:
        cost = 2;
        gongjili = 20;
        break;
    case 2:
        cost = 3;
        gongjili = 25;
        break;
    case 3:
        cost = 4;
        gongjili = 30;
        break;
    case 4:
        cost = 5;
        gongjili = 35;
        break;

    default:
        break;
    }

    if (money >= cost)
    {
        money -= cost;
        gongjili += gongjili;
        cout << "你购买了武功秘籍,当前攻击力为:" << gongjili << endl;
        cout << "钱数剩余:" << money << endl;
    }
    else
    {
        cout << "金钱不足,无法购买武功秘籍。" << endl;
    }
}

image
image
image

2.将菜单页面代码定义为函数

点击查看代码
void zhuye() {
    cout << "欢迎下次再来!" << endl;
   // cout << "欢迎你开始玩打怪物小游戏!\n";
    //cout << "小镇\n";
    //cout << "一个1000年的小镇。周围有一条河,有一片树林,很多房子和很多人。\n有一家药店" << endl;
    //cout << "和一家武器店。\n";
    cout << "                                  " << endl;
    cout << "                                  " << endl;
    cout << "******小镇*******" << endl;
    cout << "1.去武器店" << endl;
    cout << "2.去药品店" << endl;
    cout << "3.去打小怪物" << endl;
    cout << "4.去打大怪物" << endl;
    cout << "5.退出游戏" << endl;
    cout << "6.显示你的状态" << endl;
    cout << "7. 打工赚钱" << endl;  // 增加选项
    cout << "8. 购买武功秘籍" << endl;  // 增加选项
    cout << "————————————————————" << endl;  // 增加选项
    cout << "                                  " << endl;
    cout << "                                  " << endl;
}

标签:case,cost,cout,软件开发,void,break,gongjili,小游戏,试玩
From: https://www.cnblogs.com/u3389544/p/18044489

相关文章

  • C写的贪吃蛇小游戏
    用了三四个小时跟视频写的小游戏,还是优点漏洞,明明加了音乐但是没声音,代码也没报错不知道啥原因;哪位大佬可以帮忙看看环境:win10,vs2017专业版用到的库://里面有easyX图形库函数#include#include//里面有easyX图形库函数#include#include#include//#pragmaco......
  • 2.21软件开发
    事情变得有些复杂了,这篇文章写得跨度有些大了,有些细节直接跳过了没讲清楚,我学习的进度有些中断了,但我仍不断尝试。四、后端详解我在后端编写主要是用java,当然对其他开发语言熟悉的也可以使用其他语言开发后端。现在我就java编写后端api的讲解。主要框架springboot,开发工具myecli......
  • 一图揭秘为什么开发者都选择华为云软件开发生产线CodeArts
    华为云软件开发生产线CodeArts是一站式、全流程、安全可信的云原生DevSecOps云平台,集华为30年研发实践、前沿研发理念、先进研发工具为一体,覆盖需求、开发、测试、部署等软件交付全生命周期环节,为开发者打造全云化研发体验。体验通道→软件开发生产线CodeArts_DevOps_开发者平......
  • 软件开发工程师,几款常用的APP,你用过几款?最后一个测试网络必备
    作为一名程序员,手机里一定有几个常用的app,下面给大家推荐几款。1.CSDN国内最大编程论坛;虽然有多少人吐槽现在使用csdn就像屎里淘金,但是不得不承认他仍然是大家搜索技术资料、问题的首选。遇到问题打开app搜索,效率更高!https://blog.csdn.net/daocaokafei2.B站B站是一个非......
  • 软件开发全套文档资料(规格说明书、详细设计、测试计划、验收报告)
    在软件全周期中,每个阶段都涉及不同的文档和支撑材料,以确保项目的顺利进行和最终的成功交付。以下是针对您列出的每个阶段所需的文档和支撑材料的简要概述。所有资料获取:https://www.cnblogs.com/suchen621/p/180254681.开发阶段需求文档:详细记录用户需求、业务需求和功能需求......
  • 微信小游戏开发流程
    微信小游戏开发相对于传统的网页小游戏开发有一些特定的步骤和要求,以下是一个微信小游戏开发的基本流程。1.注册和准备:注册微信开发者账号,并在微信开放平台创建小游戏项目。下载并安装微信开发者工具。2.项目初始化:在微信开发者工具中创建一个新的小游戏项目。选择合适的开......
  • 【软件开发工具】——JetBrains,上海道宁为您带来软件开发人员和团队的必备工具——Jet
     在软件开发的工作中工具的选择往往决定了编程效率和质量JetBrains是业界知名的开发工具提供商以其出色的性能和丰富的功能赢得了全球开发者的信赖无论您的团队规模如何其产品都能确保您在构建代码、规划工作或协作时始终获得流畅而愉快的体验无论您使用哪种平台......
  • 软件开发全套技术文档|规格说明书|详细设计|测试计划|验收报告
    在软件全周期中,每个阶段都涉及不同的文档和支撑材料,以确保项目的顺利进行和最终的成功交付。以下是针对您列出的每个阶段所需的文档和支撑材料的简要概述。1.开发阶段需求文档:详细记录用户需求、业务需求和功能需求。设计文档:包括系统架构设计、数据库设计、接口设计等。开发......
  • 艾思解读《人月神话》:理解人月报价在软件开发中的重要性
    在软件开发领域,项目估算和报价是一个至关重要但又充满挑战的环节。弗雷德里克·布鲁克斯在其经典著作《人月神话》中提出了一个关键概念——人月(Man-Month),它至今仍对我们的项目管理实践产生深远影响。人月的概念人月是一种衡量软件开发工作量的单位,指一个人在一个月内可以完成的......
  • c++小游戏合集
    1.恶魔轮盘赌恶魔轮盘赌代码#include<windows.h>#include<bits/stdc++.h>usingnamespacestd;intYour=6,Other=6;stringdaojuname[]={"放大镜","手铐","小刀","烟","饮料"};doubleYourmoney;intshi,kong;intq[10],......