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

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


《老九学堂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; 
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/444825.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于房屋的风水学整理

第一步&#xff1a;看缺角&#xff0c;根据户型图的整体形状分析有无缺角户型的形状很多&#xff0c;有三角形的&#xff0c;手枪形的&#xff0c;锯齿型的等等&#xff0c;总的来说缺角就不好&#xff0c;方方正正好&#xff0c;适合“天方地圆”。如下图什么是缺角&#xff0…

房屋凶吉位判断

房屋的吉凶位按八宅来判断比较适合自身简易的操作&#xff0c;但每个房屋&#xff0c;都是既有共性&#xff0c;也有个性的&#xff0c;具体的吉凶方位的判断&#xff0c;可能要用到家中每个人的年命、运程&#xff0c;房屋周边的山水形势及地理环境要素。这些内容&#xff0c;…

leetcode226 反转二叉树

翻转一棵二叉树。 示例&#xff1a; 输入&#xff1a; 4 / \ 2 7 / \ / \ 1 3 6 9 输出&#xff1a; 4 / \ 7 2 / \ / \ 9 6 3 1 备注: 这个问题是受到 Max Howell 的 原问题 启发的 &#xff1a; 谷歌&#xff1a;我们90&#xff05;的…

Linux(9)-Vim编辑器的使用

Vim编辑器的使用1.指令模式常用快捷键1.1 定位快捷键1.2 编辑快捷键1.3查找相关的快捷键2.行末模式常用命令2.1 文件操作命令3. 切换默认编辑器nano->vim4.tip4.1显示行号vim编辑器有3种工作模式&#xff1a;指令模式–依据快捷键对文本进行编辑–复制、黏贴、删除、查找输入…

微信app公众平台开发

http://www.cnblogs.com/txw1958/p/wechat-tutorial.html

用awk一些常用技巧sort uniq

统计文件中第一列中同一IP出现的次数cat test123.122.123.12 12121212121.2332.121.11 232323255.255.255.255 21321123.122.123.12 12121212123.122.123.12 1212121er2123.122.123.12 12121212eer123.122.123.12 12121212ere255.255.255.255 21321121.2332.121.11 232323255.2…

leetcode234 回文链表

请判断一个链表是否为回文链表。 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 进阶&#xff1a; 你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题&#xff1f; 思路&#xff1a;逆置前一半&#xff0c;然后从中心出发开始比较即…

mysql导入source数据库sql的C++实现和封装

之前有好多人在为这件事情头疼不已: 想有一个不需要安装mysql客户端就可以导入数据库脚本,但找不到对应的api调用。所以得需要自己去实现导入数据库的实现方法: common.h #ifndef _COMMON_H #define _COMMON_H #ifdef WIN32#include <winsock2.h>typedef __int8 …

C++(12)--函数基础:按值传递、传递数组、函数指针

模块化编程--函数1. 函数基本知识2. 函数的参数2.1 按值传递机制&#xff08;小议按引用传递&#xff09;2.2 使用数组做函数参数&#xff08;用户头文件&#xff0c;const的防改&#xff09;2.3 使用二维数组作为函数的参数2.4 使用函数指针作为函数的参数2.4.1 函数指针的基本…

关于关闭SELinux的方法

原贴:http://www.diybl.com/course/6_system/linux/Linuxjs/2008629/129166.html关闭SELinux的方法&#xff1a;修改/etc/selinux/config文件中的SELINUX"" 为 disabled &#xff0c;然后重启。如果不想重启系统&#xff0c;使用命令setenforce 0注&#xff1a;seten…

leetcode739 每日温度

根据每日 气温 列表&#xff0c;请重新生成一个列表&#xff0c;对应位置的输入是你需要再等待多久温度才会升高超过该日的天数。如果之后都不会升高&#xff0c;请在该位置用 0 来代替。 例如&#xff0c;给定一个列表 temperatures [73, 74, 75, 71, 69, 72, 76, 73]&#…

scp免密码远程拷贝

有些时候&#xff0c;我们在复制/移动文件 到另一台机器时会用到scp&#xff0c;因为它比较安全。但如果每次都要输入密码&#xff0c;就比较烦了&#xff0c;尤其是在script里。不过&#xff0c;ssh有另一种用密钥对来验证的方式。下面写出我生成密匙对的过程&#xff0c;供大…

C++(13)--函数的进阶:内联、传递引用、参数默认值、重载、函数模板

模块化编程--函数的进阶1.内联函数1.1 inline基本情况1.2 inline 的前世今生-带参的宏替换2.传递引用&#xff08;重点&#xff09;2.1引用、理由、注意事项2.3 交换两个变量的数值3.返回引用3.1不要返回局部变量的引用3.2函数可以不返回值&#xff0c;默认返回传入的引用对象本…

终于,我读懂了所有Java集合——set篇

HashSet &#xff08;底层是HashMap&#xff09; Set不允许元素重复。 基于HashMap实现&#xff0c;无容量限制。 是非线程安全的。 成员变量 private transient HashMap<E,Object> map; // Dummy value to associate with an Object in the backing Map private s…

加速scp传输速度

当需要在机器之间传输400GB文件的时候&#xff0c;你就会非常在意传输的速度了。默认情况下(约125MB带宽&#xff0c;网络延迟17ms&#xff0c;Intel E5-2430&#xff0c;本文后续讨论默认是指该环境)&#xff0c;scp的速度约为40MB&#xff0c;传输400GB则需要170分钟&#xf…

tcpcopy使用方法

1、下载tcpcopy http://code.google.com/p/tcpcopy/downloads/list 2、配置、编译、安装 依此使用如下命令&#xff1a; 配置&#xff1a; ./configure 编译&#xff1a; make 安装&#xff1a; make install 3、使用方法 下面以mosquitto为例&#xff0c;说明tcpcopy的用法&a…

C++(14)--面向对象

面向对象1.面向对象编程(难点)2.类和对象demo1:地主类的实现版本1demo2:地主类的实现版本23.访问修饰符demo3:外部修改成员变量不安全(版本3)demo4: 使用封装防止直接修改成员变量&#xff08;版本3&#xff09;demo5:进一步封装&#xff1a;设置/获取名字&#xff0c;修改积分…

终于,我读懂了所有Java集合——map篇(多线程)

多线程环境下的问题 1.8中hashmap的确不会因为多线程put导致死循环&#xff08;1.7代码中会这样子&#xff09;&#xff0c;但是依然有其他的弊端&#xff0c;比如数据丢失等等。因此多线程情况下还是建议使用ConcurrentHashMap。 数据丢失&#xff1a;当多线程put的时候&…

system函数的返回值和执行脚本的返回值

1、先统一两个说法&#xff1a;&#xff08;1&#xff09;system返回值&#xff1a;指调用system函数后的返回值&#xff0c;比如上例中status为system返回值&#xff08;2&#xff09;shell返回值&#xff1a;指system所调用的shell命令的返回值&#xff0c;比如上例中&#x…

OJ汇总

国内&#xff1a;&#xff08;一下排名不分先后&#xff09; 浙江大学&#xff08;ZJU&#xff09;&#xff1a;http://acm.zju.edu.cn/ 北京大学&#xff08;PKU&#xff09;&#xff1a;http://acm.pku.edu.cn/JudgeOnline/ 同济大学&#xff08;TJU&#xff09;&#xff1a;…