展示了游戏的大框架及部分功能,其他功能类似
/******************************************
*文件名: main.cpp
*创建人: K&J
*日期: 2020-5-25
*描述:C++第一阶段项目《小公举养成记》
*版本:1.0.0
******************************************/
#include //输入输出流
#include //控制输入输出格式
#include //程序可能涉及一些时间
#include //程序可能涉及一些集合
#include //程序可能涉及一些数组
#include
#include
using namespace std;
int main() {
/*父亲的姓名*/
string value_father_name;
/*女儿的姓名*/
string value_daughter_name;
/*女儿生日的月份*/
int value_birth_month;
/*女儿生日的日期*/
int value_birth_date;
/*女儿的星座*/
string value_daughter_constell;
/*女儿的五项基本信息:体力、智力、魅力、道德、气质*/
/*int value_array_baseinfo[5];*/
array<int, 5>value_array_baseinfo;//动态分配内存的数组
/*五项基本属性名*/
array<string, 5> value_array_baseinfo_names = {"体力","智力","魅力","道德","气质"};
/*初始金币*/
int value_daughter_gold = 500;
//vector value_array_baseinfo;
/*星座二维数组*/
string constell_names[12][2] = {
{ "山羊座","水瓶座" },//1月
{ "水瓶座","双鱼座" },//2月
{ "双鱼座","白羊座" },//3月
{ "白羊座","金牛座" },//4月
{ "金牛座","双子座" },//5月
{ "双子座","巨蟹座" },//6月
{ "巨蟹座","狮子座" },//7月
{ "狮子座","处女座" },//8月
{ "处女座","天秤座" },//9月
{ "天秤座","天蝎座" },//10月
{ "天蝎座","射手座" },//11月
{ "射手座","山羊座" },//12月
};
int choice, temp1, temp2, temp3;//临时变量
cout << "父亲的姓名: ";
cin >> value_father_name;
cout << "女儿的姓名: ";
cin >> value_daughter_name;
cout << "女儿的生日(MM DD): ";
cin >> value_birth_month >> value_birth_date;
/*各月份的跨星座日期*/
int constell_dates[]{20,19,21,20,21,22,23,23,23,24,23,22};
/*获得女儿的星座*/
value_daughter_constell = constell_names[value_birth_month - 1][value_birth_date / constell_dates[value_birth_month - 1]];
cout << "女儿的信息: ";
cout << "姓名: " << value_daughter_name << endl;
cout << "生日: 1659-" << value_birth_month << "-" << value_birth_date << endl;
cout << "星座: " << value_daughter_constell << endl;
cout << "金钱: " << value_daughter_gold << endl;
if (value_daughter_constell == "白羊座") {
value_array_baseinfo[0] = 80;//数组时使用这种格式
value_array_baseinfo[1] = 15;
value_array_baseinfo[2] = 15;
value_array_baseinfo[3] = 11;
value_array_baseinfo[4] = 21;
//value_vec_baseinfo.push_back(80);//vector时使用这种格式
//value_vec_baseinfo.push_back(15);
//value_vec_baseinfo.push_back(15);
//value_vec_baseinfo.push_back(11);
//value_vec_baseinfo.push_back(21);
}else if (value_daughter_constell == "金牛座") {
value_array_baseinfo[0] = 46;//数组时使用这种格式
value_array_baseinfo[1] = 30;
value_array_baseinfo[2] = 28;
value_array_baseinfo[3] = 20;
value_array_baseinfo[4] = 29;
}
else if (value_daughter_constell == "双子座") {
value_array_baseinfo[0] = 50;//数组时使用这种格式
value_array_baseinfo[1] = 35;
value_array_baseinfo[2] = 23;
value_array_baseinfo[3] = 8;
value_array_baseinfo[4] = 20;
}else if (value_daughter_constell == "巨蟹座") {
value_array_baseinfo[0] = 40;//数组时使用这种格式
value_array_baseinfo[1] = 31;
value_array_baseinfo[2] = 33;
value_array_baseinfo[3] = 17;
value_array_baseinfo[4] = 33;
}else if (value_daughter_constell == "狮子座") {
value_array_baseinfo[0] = 85;//数组时使用这种格式
value_array_baseinfo[1] = 9;
value_array_baseinfo[2] = 11;
value_array_baseinfo[3] = 20;
value_array_baseinfo[4] = 37;
}else if (value_daughter_constell == "处女座") {
value_array_baseinfo[0] = 35;//数组时使用这种格式
value_array_baseinfo[1] = 28;
value_array_baseinfo[2] = 36;
value_array_baseinfo[3] = 18;
value_array_baseinfo[4] = 40;
}else if (value_daughter_constell == "天秤座") {
value_array_baseinfo[0] = 42;//数组时使用这种格式
value_array_baseinfo[1] = 33;
value_array_baseinfo[2] = 25;
value_array_baseinfo[3] = 32;
value_array_baseinfo[4] = 28;
}else if (value_daughter_constell == "天蝎座") {
value_array_baseinfo[0] = 50;//数组时使用这种格式
value_array_baseinfo[1] = 25;
value_array_baseinfo[2] = 40;
value_array_baseinfo[3] = 18;
value_array_baseinfo[4] = 17;
}else if (value_daughter_constell == "射手座") {
value_array_baseinfo[0] = 57;//数组时使用这种格式
value_array_baseinfo[1] = 31;
value_array_baseinfo[2] = 15;
value_array_baseinfo[3] = 19;
value_array_baseinfo[4] = 20;
}else if (value_daughter_constell == "山羊座") {
value_array_baseinfo[0] = 56;//数组时使用这种格式
value_array_baseinfo[1] = 21;
value_array_baseinfo[2] = 16;
value_array_baseinfo[3] = 25;
value_array_baseinfo[4] = 23;
}else if (value_daughter_constell == "水瓶座") {
value_array_baseinfo[0] = 43;//数组时使用这种格式
value_array_baseinfo[1] = 43;
value_array_baseinfo[2] = 20;
value_array_baseinfo[3] = 13;
value_array_baseinfo[4] = 17;
}else if (value_daughter_constell == "双鱼座") {
value_array_baseinfo[0] = 41;//数组时使用这种格式
value_array_baseinfo[1] = 20;
value_array_baseinfo[2] = 29;
value_array_baseinfo[3] = 23;
value_array_baseinfo[4] = 32;
}
//1、为父女起名字
//2、为女儿录入初始信息(生日、星座)
// 根据女儿的星座,设置游戏的基本参数(体力、智力、魅力、道德、气质)
//3、开始游戏大循环
// 游戏从1659年6月开始
for (int year = 1659; year <= 1659 + 7; year++) {
for (int month = (year == 1659) ? 6 : 1; month <= 12; month++) {
//判断本月是否是女儿的生日
if (month == value_birth_month) {
cout << "本月是:" << value_daughter_name << "生日,要不要送礼物呢?" << endl;
//根据用户的输入进行判断
}
//显示游戏主菜单
cout << "\n1、查看状态\n2、安排行程\n3、亲自谈话\n4、存档\n5、读档" << endl;
cin >> choice;
switch(choice) {
case 1://查看状态
cout << "女儿的信息: \n";
cout << "姓名: " << value_daughter_name << endl;
cout << "生日: 1659-" << value_birth_month << "-" << value_birth_date << endl;
cout << "星座: " << value_daughter_constell << endl;
//打印核心属性
cout << left;
for (int i = 0; i < 5; i++) {
cout << value_array_baseinfo_names[i] << ": " << setw(6) << value_array_baseinfo[i];
//计算实心方框的数量
int solidCount = value_array_baseinfo[i] / 10;
for (int j = 0; j < 10; j++) {
if (j < solidCount)
cout << "■";
else
cout << "□";
}
cout << endl;
}
break;
case 2: {
string month_parts[] = {"上旬","中旬","下旬"};
for (int i = 0; i < 3; i++) {
cout << "1、学习武艺\n2、上私塾\n3、学习礼法\n4、出城修行\n5、打工赚钱" << endl;
cout << "请选择: ";
cin >> choice;
//这里注意,需要进行判断没钱的情况:强制打工
srand(time(NULL));
if (choice == 1) {//+体力+魅力-金钱
value_array_baseinfo[0] += temp1 = rand() % 11;
value_array_baseinfo[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 << "通过努力打工,赚到了" << temp2 << "个金币!" << endl;
}
}
break;
}
case 3:
break;
case 4:
break;
case 5:
break;
default:
break;
}
}
}
//4、根据各项参数,判定游戏结果
int sum = 0;
for (int i = 0; i < 5; i++) {
sum += value_array_baseinfo[i];
}
if (sum >= 2000) {
cout << "最优游戏结果: 登基为女王陛下" << endl;
}
else if (sum >= 1800 && sum < 2000) {
cout << "次优游戏结果: 成为王妃" << endl;
}
else if (sum >= 1200 && sum < 1600) {
int maxValue = value_array_baseinfo[0];
int maxIndex = 0;
for (int i = 1; i < 5; i++) {
if (maxValue < value_array_baseinfo[i]) {
maxValue = value_array_baseinfo[i];
maxIndex;
}
}
//只是判断了某几类情况,其他情况自行判断
if ("道德" == value_array_baseinfo_names[maxIndex] && value_array_baseinfo[2] > value_array_baseinfo[4]) {
cout << "经过长期的训练, " << value_daughter_name << "成长为一名光荣的高级祭司!" << endl;
}
}
return 0;
}