经典养成类游戏简单实践-小公主养成记

《老九学堂C++课程》学习笔记。《老九学堂C++课程》详情请到B站搜索《老九零基础学编程C++入门》
-------------简单的事情重复做,重复的事情用心做,用心的事情坚持做(老九君)---------------
致敬:日本Gainax公司推出养成游戏,美少女梦工厂

使用控制台编写一个小游戏需要实现的基础功能

  1. 新增数据
  2. 修改数据
  3. 删除数据
  4. 查询数据

游戏规则:游戏一共运行78个月,安排每个月的行程,合理规划增加基础属性。最后主人公成为什么靠的是不同的培养模式。

将使用的技能点:分支结构,循环结构,数组,*vector/array, 指针

剧情策划-》原画-》剧情动画-》写程序把动画串起来成为场景(10几个人,2年)

/****************************** 文件名:main.cpp* 创建人:cyy* 日 期:2021-01-08* 描 述:C++第一阶段项目《小公主养成记》* 修改人:somebody* 日 期:someday* 版 本:1.0.0* *****************************/
#include <iostream>
#include <iomanip>
#include <ctime>
#include <vector>
#include <array>
#include <cstdlib>using namespace std;int main(){// 1.为父亲女儿取名字/** 父亲姓名 */string value_father_name;/** 女儿姓名 */string value_daughter_name;/** 女儿生日的月份 */int value_birth_month = 7;/** 女儿生日的日期 */int value_birth_day = 5;/** 女儿的五项基本信息:体力、智力、魅力、道德、气质*/vector<int> value_daughter_baseinfos;/** 五项基本属性名 */array<string, 5> value_arrary_baseinfoname = {"体力","智力","魅力","道德","气质"};/** 女儿的初始金币*/int value_daughter_gold = 500;string value_daughter_constell;string constell_name[12][2]={{"山羊座", "水瓶座"}, // 一月{"水瓶座", "双鱼座"}, // 二月{"双鱼座", "白羊座"}, // 三月{"白羊座", "金牛座"}, // 四月{"金牛座", "双子座"}, // 五月{"双子座", "巨蟹座"}, // 六月{"巨蟹座", "狮子座"}, // 七月{"狮子座", "处女座"}, // 八月{"处女座", "天秤座"}, // 九月{"天秤座", "天蝎座"}, // 十月{"天蝎座", "射手座"}, // 十一月{"射手座", "山羊座"}, // 十二月};int choice, temp1, temp2, temp3;// 2.为女儿录入初始信息,cout << "父亲的姓名: ";cin >> value_father_name;cout << "女儿的姓名: ";cin >> value_daughter_name;cout << "女儿的生日(MM DD): ";cin >> value_birth_month >> value_birth_day;/** 每个星座的最后一天 */int constell_dates[] = {20, 19, 21, 20, 21, 22, 23, 23, 23, 24, 23, 22};value_daughter_constell = constell_name[value_birth_month-1][value_birth_day / constell_dates[value_birth_month-1]];cout << "女儿的信息:";cout << "姓名:" << value_daughter_name << endl;cout << "生日:1659-" << value_birth_month << "-" << value_birth_day << endl;cout << "星座:" << value_daughter_constell << endl;// .依据女儿的星座,设置游戏的基本参数(体力,智力,魅力,道德,气质)if(value_daughter_constell == "山羊座" || value_daughter_constell == "双鱼座" || value_daughter_constell == "白羊座"){value_daughter_baseinfos.push_back(80);value_daughter_baseinfos.push_back(15);value_daughter_baseinfos.push_back(15);value_daughter_baseinfos.push_back(11);value_daughter_baseinfos.push_back(11);}else if(value_daughter_constell == "金牛座" || value_daughter_constell =="双子座" || value_daughter_constell =="巨蟹座"){value_daughter_baseinfos.push_back(30);value_daughter_baseinfos.push_back(20);value_daughter_baseinfos.push_back(23);value_daughter_baseinfos.push_back(35);value_daughter_baseinfos.push_back(47);}else if(value_daughter_constell == "狮子座" || value_daughter_constell =="处女座" || value_daughter_constell=="天平座"){value_daughter_baseinfos.push_back(12);value_daughter_baseinfos.push_back(13);value_daughter_baseinfos.push_back(23);value_daughter_baseinfos.push_back(32);value_daughter_baseinfos.push_back(21);}else{value_daughter_baseinfos.push_back(2);value_daughter_baseinfos.push_back(32);value_daughter_baseinfos.push_back(12);value_daughter_baseinfos.push_back(33);value_daughter_baseinfos.push_back(26);}for(int i = 0; i < 5 ; i++){cout << value_daughter_baseinfos[i] << "\t";}// 3. 开始游戏大循环// 游戏从1659年6月开始for(int year = 1659; year <= 1659 + 7; year++){for(int month = (year == 1659 ? 6 : 1); month < 13; month++){// 判断本月是不是女儿的生日if(month == value_birth_month){cout << "本月是" << value_daughter_name << "的生日,要不要送礼物呢?" << endl;// 依据用户的输入做判断  }// 显示游戏主菜单cout << "\n 1.查看状态 \t2.安排行程 \t3.亲自谈话 \t4.存档 \t5.读档" << endl;cin >> choice;switch(choice){case 1:  //1.查看状态cout << "女儿的信息:";cout << "姓名:" << value_daughter_name << endl;cout << "生日:1659-" << value_birth_month << "-" << value_birth_day << endl;cout << "星座:" << value_daughter_constell << endl;cout << "金币:" << value_daughter_gold << endl;//打印核心属性"cout << left;for(int i = 0; i < 5; i++){cout << value_arrary_baseinfoname[i] << ": " << setw(4) << value_daughter_baseinfos[i];// 计算实心框的百分比int solidCount = value_daughter_baseinfos[i] / 10;for(int j = 0; j < 10; j++){if(j < solidCount){cout << "✅";} elsecout << "❌";}cout << endl;}break;case 2:  //2.安排行程: 一个月最多安排三个行程{string month_parts[] = {"上旬","中旬","下旬"};int num;      // 课上说case里面不能定义变量,需要打括号。但是我是可以的for(int i = 0; i < 3; i++){cout << "--" << month << "月--" << month_parts[i] << endl;cout << "1.学习武艺\n 2.上私塾\n 3.学习礼法\n 4.出城修行\n 5.打工赚钱" << endl;cout << "请选择:";cin >> choice;// 需要进行判断没钱的情况,强制打工srand(time(NULL));if(choice == 1){ // 加体力,加魅力,减金钱value_daughter_baseinfos[0] += temp1 = rand() % 11;value_daughter_baseinfos[2] += temp2 = rand() % 11;value_daughter_gold -= temp3 = rand() % 51;cout << "学习张无忌好榜样!!!!" << endl;cout << "体力+" << temp1 << ",魅力+" << temp2 << ",金钱-"<< temp3 << endl;}else if(choice == 5){value_daughter_gold -= temp3 = rand() % 101;cout << "通过努力打工赚到了" << temp3 << "金币" << endl;}}break;}case 3:  //3.亲自谈话break;case 4:  //4.存档break;case 5:  //5.读档break;default:break;}}}// 4. 根据各项阐述,判定游戏结果int sum = 0;for(int i = 0; i < 5; i++){sum += value_daughter_baseinfos[i];}if(sum >= 2000){cout << "最优游戏结果:登基为女王陛下" << endl;}else if(sum >= 1800 && sum < 2000){cout << "次优游戏结果:成为王妃" << endl;}else if(sum >= 1200 && sum < 1600){int maxValue = value_daughter_baseinfos[0];int maxIdex = 0;for(int i = 1; i < 5; i++){if(maxValue < value_daughter_baseinfos[i]){maxValue = value_daughter_baseinfos[i];maxIdex = i;}}if ( maxIdex == 4 && value_daughter_baseinfos[2] > value_daughter_baseinfos[4]){cout << "经过长期的训练" << value_daughter_name << "成为一名高荣的高级祭司" << endl;}return 0;
}

C++(11)--编程实践1-经典养成类游戏简单实践相关推荐

  1. lua游戏开发实践指南光盘_Godot游戏开发实践之三:容易被忽视的Resource

    一.前言 首先,特大喜讯,奔走相告, Godot 爱好者们又有新的窝了--我们国人自建的 Godot 论坛:Godot中文社区已经正式开放,这里有一手的开发资源,最新的科技动向,开发上有啥问题可以随时 ...

  2. lua游戏开发实践指南光盘_Godot游戏开发实践之一:用High Level Multiplayer API制作多人游戏(上)

    一.前言 距离上一次发文已经稳稳超过一年了,去年一直在做 #¥@#*!%--%#&-%&^# 然后待在家里了!偶尔写写 BUG ,一直默默关注着 Godot ,这不已经 3.2.2 版 ...

  3. Redis的简单实践

    Redis的简单实践 文章目录 Redis的简单实践 前言 Redis简介 Redis基本操作命令 Java使用Redis 使用IDEA搭建Redis项目 使用Jedis进行简单增删改查 使用Jedi ...

  4. python经典小游戏五子棋,适合python编程的小游戏

    python入门可以做的小游戏 1.Python入门拼图小游戏简单介绍:将图像分为m×n个矩形块,并将图像右下角的矩形块替换为空白块后,将这些矩形块随机摆放成原图像的形状. 2.Python入门推箱子 ...

  5. 做游戏,学编程(C语言)教材《C语言课程设计与游戏开发实践教程》出版了...

    经过半年多的写作.修改.校样.印制,我们的实践教材<C语言课程设计与游戏开发实践教程>终于出版了.这本书可以看成是"做游戏,学编程(C语言)专栏"的详细版本,以下为书中 ...

  6. 如何学好3D游戏引擎编程《转自3D游戏引擎网》

    此篇文章献给那些为了游戏编程不怕困难的热血青年,它的神秘要我永远不间断的去挑战自我,超越自我,这样才能攀登到游戏技术的最高峰         --阿哲VS自己 QQ79134054多希望大家一起交流与 ...

  7. [安全攻防进阶篇] 一.什么是逆向分析、逆向分析应用及经典扫雷游戏逆向

    从2019年7月开始,我来到了一个陌生的专业--网络空间安全.初入安全领域,是非常痛苦和难受的,要学的东西太多.涉及面太广,但好在自己通过分享100篇"网络安全自学"系列文章,艰难 ...

  8. 【游戏编程扯淡精粹】游戏编程设计模式

    [游戏编程扯淡精粹]游戏编程设计模式 本文最初写于2018/9/4 毛星云 RIP 如何练习设计模式 基本盘:长期维护一个大型工程,持续积累 维护一个设计模式表格,日常查找使用 多学几门编程语言和编程 ...

  9. 经典扫雷游戏的简单实现

    如果要盘点曾经深藏在电脑里的经典游戏,"扫雷"可以说是首当其冲,儿时之回忆,经典中经典. 所以,在学习编程打怪升级的过程中,有谁不想自己亲自实现一下扫雷游戏,重温童年回忆,致敬儿时 ...

最新文章

  1. Linux开发环境搭建一 ubuntu安装ssh
  2. 中文只占一个字符_一文搞懂字符和字节的含义
  3. Taro+react开发(19)--arr声明const报错
  4. java执行数学表达式_数学表达式解析-JAVA版
  5. 摩拜免押金;滴滴外卖订单骤降;小米最快本周 IPO | CSDN极客头条
  6. LINUX下载编译libx264
  7. php怎么做一个音乐播放器,音乐播放器的制作实例(html5)
  8. 索尼播放器Android系统,获得最新固件的索尼NW-ZX505,简直脱胎换骨!
  9. android的备忘录带闹钟提醒,‎App Store 上的“Reminders 3 - 款带有闹钟提醒功能的备忘录”...
  10. 用matlab画树叶,matlab画漂亮的树叶
  11. 苹果电脑上手写html,暴强:Mac电脑触控板也可用Apple Pencil手写笔
  12. 微信小程序使用 iconfont 彩色图标(mini-program-iconfont-cli)
  13. HOW TO:Be more productive aaron swartz
  14. 02-ROS的工程结构
  15. Html点击按钮自动刷新页面问题
  16. 22产品经理需要具备的推广能力
  17. 互联网思维:3个段子,9大分类,19条法则
  18. NetCore跨平台桌面框架Avalonia的OSX程序打包
  19. 字节byte转换为B,KB,MB,GB,TB
  20. 持之以恒,日益见长——计算机拐族人士

热门文章

  1. 东北师范大学计算机科学与技术录取分数线,东北师范大学计算机科学与技术专业2015年在河南理科高考录取最低分数线...
  2. 【转】DCM(DICOM)医学影像文件格式详解
  3. SharePoint学习札记[4] — 创建SharePoint站点
  4. Sharepoint页面里添加.net托管代码
  5. Sharepoint 修改密码
  6. SQL SERVER data tier application 的作用及如何使用SSDT进行SQL数据库的自动化部署到生产环境和版本控制
  7. java常见异常类图(分类了Error/RuntimeExecption、check Exception)
  8. 【Chrome浏览器】常用快捷键整理
  9. 【HDU - 5627】Clarke and MST(最大生成树,与运算性质,最小生成树MST变形)
  10. 【CodeForces - 202A】LLPS (思维,字符串)