《冰征之旅》(升级版)
2026-10-12 22:05:52
发布于:上海
首先致敬原作者“哇!我传伞太准了Andy”!!!
代码修复了新老版本不通用、代码错误等问题
废话不多说,直接开始!!!
#include <iostream>
#include <windows.h>
#include <ctime>
#include <cstdlib>
#include <string>
#include <utility>
using namespace std;
// 宏不要加分号!修复宏bug
#define white SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE)
#define red SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED)
#define green SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN)
#define blue SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE)
#define yellow SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN)
#define pink SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_BLUE)
#define pause system("pause")
#define cls system("cls")
int Win = 0; // 是否胜利
int Day = 1, trt = -20; // 游戏天数,温度
int people = 20, food = 20, wood = 0, mei = 0, Tie = 0, fangwu = 0, yizhu = 0, mianji = 5000;
double Manyi = 50; // 人民满意度
const int MAX_PEOPLE = 1500;
int People_health[MAX_PEOPLE]; //0健康 1生病
int People_Food[MAX_PEOPLE]; //0饱腹 1饥饿
int People_Job[MAX_PEOPLE]; //0平民;1教师;2机械师
int Talent = 100; // 技能点
bool Rand(int n){ // 概率随机
int init = 1 + rand() % 100;
if(init <= n) return true;
else return false;
}
// 随机新人身体状态:start起始下标,b人数
void Rand_People_Health(int start, int b){
for(int i = start; i <= start + b -1; i ++){
if(Rand(75)) People_health[i] = 0;
else People_health[i] = 1;
}
}
// 随机新人进食状态
void Rand_People_Food(int start, int b){
for(int i = start; i <= start + b -1; i ++){
if(People_health[i] == 0){
if(Rand(50)) People_Food[i] = 0;
else People_Food[i] = 1;
}else{
if(Rand(25)) People_Food[i] = 0;
else People_Food[i] = 1;
}
}
}
// 随机新人职业
void Rand_People_Job(int start, int b){
for(int i = start; i <= start + b -1; i ++){
if(Rand(95)) People_Job[i] = 0;
else People_Job[i] = 1;
}
}
void Xinxi(){ // 信息
cls; blue;
cout << "========================= 冰征之旅 ========================= \n";
cout << "== 当前天数 :";
if(Day < 10) cout << " " << Day;
else cout << Day;
cout << " == \n";
cout << "== 当前温度 :" << trt << endl;
cout << "==舒适温度区间: 25℃ - 30℃ == \n";
cout << "============================================================ \n";
cout << "== 当前拥有资源:\n";
cout << "== 1. 食 物 :" << food << endl;
cout << "== 2. 木 头 :" << wood << endl;
cout << "== 3. 煤 炭 :" << mei << endl;
cout << "== 4. 铁 矿 :" << Tie << endl;
cout << "== 5. 房屋可居住人数 :" << fangwu << endl;
cout << "== 6. 房屋已居住人数 :" << yizhu << endl;
cout << "== 7. 可用建造面积 :" << mianji << endl;
cout << "============================================================ \n";
cout << "== 所有居民情况:\n";
for(int i = 1; i <= people; i ++){
cout << "== 居民" << i << " : ";
if(People_health[i] == 0){
green;
cout << "健康";
blue;
}else{
red;
cout << "生病";
blue;
}
cout << " ";
if(People_Food[i] == 0){
green;
cout << "饱腹";
blue;
}else{
red;
cout << "饥饿";
blue;
}
cout << " ";
if(People_Job[i] == 0){
white;
cout << "工人";
blue;
}else if(People_Job[i] == 1){
yellow;
cout << "教师";
blue;
}
cout << endl;
}
cout << "============================================================ \n";
pause;
}
int Is_Falv[5] = {1,1,1,1,1};
int Is_Jixie[5] = {0};
int Is_Tanxian[5] = {1,1,1,1,1};
int Is_Houqin[5] = {1,1,1,1,1};
void Falv(){ // 科技分支——法律分支
cls; red;
cout << "=======================科技分支:法律======================= \n";
for(int i = 1; i <= 4; i ++){
int x;
cout << "== ";
if(Is_Falv[i] >= 1){
green;
x = Is_Falv[i];
}else{
red;
x = Is_Falv[i] + 1;
}
if(i == 1) cout << "1 可颁布至多 " << x * 5 << " 条法令";
else if(i == 2) cout << "2 法令颁布后有 " << x * 20 + 5 << "% 的概率提升人民的幸福度";
else if(i == 3) cout << "3 法令种类增加至" << x;
else if(i == 4) cout << "4 每次颁布法令后有" << x * 1 + 5 << "% 的概率获得“人民的爱戴”";
cout << "\n";
red;
}
cout << "============================================================ \n";
cout << "== 请选择要学习的技能(请勿乱输, -1 退出): \n";
cout << " ";
int init;
cin >> init;
cls;
if(init == -1) return ;
if(init < 1 || init >4){
cout << "输入无效!";
Sleep(1200);
return;
}
if(Is_Falv[init] == 4){
white;
cout << "当前技能已满级!";
Sleep(2000);
return ;
}
cout << "升级此技能需要花费 5 点技能点 \n";
cout << "当前拥有 " << Talent << " 点技能点 \n";
if(Talent >= 5){
cout << "可以升级,请问你的选择是?(1 是 / 2 否)";
int Y_es;
cin >> Y_es;
if(Y_es == 1){
cls;
blue;
Is_Falv[init] += 1;
cout << "升级成功!";
Talent = Talent - 5;
Sleep(1000);
return ;
}else{
cout << "已退出";
Sleep(1000);
return ;
}
}else{
cout << "你无法升级此技能!请以后再来!\n";
Sleep(1000);
return ;
}
}
void Jixie(){ // 科技分支——机械分支
cls; yellow;
int x;
cout << "=======================科技分支:机械======================= \n";
for(int i = 1; i <= 4; i ++){
cout << "== ";
if(i == 1){
cout << "当前解锁燃气建筑:";
if(Is_Jixie[i] == 0){
cout << "天然矿场 \n ";
}else if(Is_Jixie[i] == 1){
cout << "燃烧炉 \n ";
}else if(Is_Jixie[i] == 2){
cout << "半自动煤燃烧室 \n ";
}else if(Is_Jixie[i] == 3){
cout << "蒸汽炉 \n ";
}
cout << "工作效率:";
if(Is_Jixie[i] == 0){
cout << " 5 煤炭 / 工人(可提升 0.4℃,维持 1 天)\n ";
}else if(Is_Jixie[i] == 1){
cout << " 10 煤炭 / 工人(可提升 0.8℃,维持 2 天)\n ";
}else if(Is_Jixie[i] == 2){
cout << " 15 煤炭 / 工人(可提升 1.2℃,维持 3 天)\n ";
}else if(Is_Jixie[i] == 3){
cout << " 30 煤炭 / 工人(可提升 2.4℃,维持 5 天)\n ";
}
cout << "最大工作人数:";
if(Is_Jixie[i] == 0){
cout << "无 \n";
}else if(Is_Jixie[i] == 1){
cout << "10 \n";
}else if(Is_Jixie[i] == 2){
cout << "20 \n";
}else if(Is_Jixie[i] == 3){
cout << "20 \n";
}
cout << " ";
cout << "占地面积:";
if(Is_Jixie[i] == 0){
cout << "无 \n";
}else if(Is_Jixie[i] == 1){
cout << "10 \n";
}else if(Is_Jixie[i] == 2){
cout << "25 \n";
}else if(Is_Jixie[i] == 3){
cout << "20 (是的你没看错,就是 20) \n";
}
cout << " ";
cout << "耗材:";
if(Is_Jixie[i] == 0){
cout << "无";
}else if(Is_Jixie[i] == 1){
cout << " 5 木头 2 铁 \n";
}else if(Is_Jixie[i] == 2){
cout << " 10 木头 5 铁 \n";
}else if(Is_Jixie[i] == 3){
cout << " 20 木头 8 铁 \n";
}
}else if(i == 2){
cout << "当前解锁房屋建筑:";
if(Is_Jixie[i] == 0){
cout << "帐篷 \n ";
}else if(Is_Jixie[i] == 1){
cout << "平屋 \n ";
}else if(Is_Jixie[i] == 2){
cout << "小居民楼 \n ";
}else if(Is_Jixie[i] == 3){
cout << "大居民楼 \n ";
}
cout << "可住人数:";
if(Is_Jixie[i] == 0){
cout << " 2 人 \n ";
}else if(Is_Jixie[i] == 1){
cout << " 5 人 \n ";
}else if(Is_Jixie[i] == 2){
cout << " 10 人 \n ";
}else if(Is_Jixie[i] == 3){
cout << " 25 人 \n ";
}
cout << "占地面积:";
if(Is_Jixie[i] == 0){
cout << "15 \n";
}else if(Is_Jixie[i] == 1){
cout << "30 \n";
}else if(Is_Jixie[i] == 2){
cout << "50 \n";
}else if(Is_Jixie[i] == 3){
cout << "100 \n";
}
cout << " ";
cout << "耗材:";
if(Is_Jixie[i] == 0){
cout << " 5 木头 \n";
}else if(Is_Jixie[i] == 1){
cout << " 10 木头 5 铁 \n";
}else if(Is_Jixie[i] == 2){
cout << " 20 木头 15 铁 \n";
}else if(Is_Jixie[i] == 3){
cout << " 50 木头 25 铁 \n";
}
}else if(i == 3){
cout << "当前解锁法律建筑:";
if(Is_Jixie[i] == 0){
cout << "民事部 \n ";
}else if(Is_Jixie[i] == 1){
cout << "法庭 \n ";
}else if(Is_Jixie[i] == 2){
cout << "监狱 \n ";
}else if(Is_Jixie[i] == 3){
cout << "行政庭 \n ";
}
cout << "可执行操作:";
if(Is_Jixie[i] == 0){
cout << " 处理人民日常意见和矛盾(处理初级事物) \n ";
}else if(Is_Jixie[i] == 1){
cout << " 处理人民的犯罪时间和颁布初级法令 \n ";
}else if(Is_Jixie[i] == 2){
cout << " 关押犯人 \n ";
}else if(Is_Jixie[i] == 3){
cout << " 公布高级法令 \n ";
}
cout << "占地面积:";
if(Is_Jixie[i] == 0){
cout << "50 \n";
}else if(Is_Jixie[i] == 1){
cout << "100 \n";
}else if(Is_Jixie[i] == 2){
cout << "500 \n";
}else if(Is_Jixie[i] == 3){
cout << "1000 \n";
}
cout << " ";
cout << "耗材:";
if(Is_Jixie[i] == 0){
cout << " 50 木头 \n";
}else if(Is_Jixie[i] == 1){
cout << " 100 木头 20 铁 \n";
}else if(Is_Jixie[i] == 2){
cout << " 300 木头 50 铁 \n";
}else if(Is_Jixie[i] == 3){
cout << " 500 木头 100 铁 \n";
}
}else if(i == 4){
cout << "当前解锁木材建筑:";
if(Is_Jixie[i] == 0){
cout << "天然树林 \n ";
}else if(Is_Jixie[i] == 1){
cout << "小型人工树场 \n ";
}else if(Is_Jixie[i] == 2){
cout << "中型人工树场 \n ";
}else if(Is_Jixie[i] == 3){
cout << "大型人工树场 \n ";
}
cout << "可执行操作:";
if(Is_Jixie[i] == 0){
cout << " 提供木材: 20 木头 / 人 (第一次暴风雪或采伐 200 木头后天然树林消失)\n ";
}else if(Is_Jixie[i] == 1){
cout << " 提供木材: 20 木头 / 人 (可抵挡 2 次暴风雪) \n ";
}else if(Is_Jixie[i] == 2){
cout << " 提供木材: 30 木头 / 人 (可抵挡 5 次暴风雪) \n ";
}else if(Is_Jixie[i] == 3){
cout << " 提供木材: 30 木头 / 人 (不可被暴风雪摧毁)\n ";
}
cout << "占地面积:";
if(Is_Jixie[i] == 0){
cout << "无 \n";
}else if(Is_Jixie[i] == 1){
cout << "100 \n";
}else if(Is_Jixie[i] == 2){
cout << "300 \n";
}else if(Is_Jixie[i] == 3){
cout << "700 \n";
}
cout << " ";
cout << "耗材:";
if(Is_Jixie[i] == 0){
cout << " 无 \n";
}else if(Is_Jixie[i] == 1){
cout << " 100 木头 10 铁 \n";
}else if(Is_Jixie[i] == 2){
cout << " 250 木头 30 铁 \n";
}else if(Is_Jixie[i] == 3){
cout << " 400 木头 75 铁 \n";
}
}
cout << "\n";
cout << "============================================================ \n";
}
red;
cout << "== 下一等级: \n";
for(int i = 1; i <= 4; i ++){
cout << "============================================================ \n";
if(Is_Jixie[i] + 1 == 4) continue;
if(i == 1){
cout << "燃气建筑:";
if(Is_Jixie[i] + 1 == 1){
cout << "燃烧炉 \n ";
}else if(Is_Jixie[i] + 1 == 2){
cout << "半自动煤燃烧室 \n ";
}else if(Is_Jixie[i] + 1 == 3){
cout << "蒸汽炉 \n ";
}
cout << "工作效率:";
if(Is_Jixie[i] + 1 == 1){
cout << " 10 煤炭 / 工人(可提升 0.8℃,维持 2 天)\n ";
}else if(Is_Jixie[i] + 1 == 2){
cout << " 15 煤炭 / 工人(可提升 1.2℃,维持 3 天)\n ";
}else if(Is_Jixie[i] + 1 == 3){
cout << " 30 煤炭 / 工人(可提升 2.4℃,维持 5 天)\n ";
}
cout << "最大工作人数:";
if(Is_Jixie[i] + 1 == 1){
cout << "10 \n";
}else if(Is_Jixie[i] + 1 == 2){
cout << "20 \n";
}else if(Is_Jixie[i] + 1 == 3){
cout << "20 \n";
}
cout << " ";
cout << "占地面积:";
if(Is_Jixie[i] + 1 == 1){
cout << "10 \n";
}else if(Is_Jixie[i] + 1 == 2){
cout << "25 \n";
}else if(Is_Jixie[i] + 1 == 3){
cout << "20 (是的你没看错,就是 20) \n";
}
cout << " ";
cout << "耗材:";
if(Is_Jixie[i] + 1 == 1){
cout << " 5 木头 2 铁 \n";
}else if(Is_Jixie[i] + 1 == 2){
cout << " 10 木头 5 铁 \n";
}else if(Is_Jixie[i] + 1 == 3){
cout << " 20 木头 8 铁 \n";
}
}else if(i == 2){
cout << "房屋建筑:";
if(Is_Jixie[i] + 1 == 1){
cout << "平屋 \n ";
}else if(Is_Jixie[i] + 1 == 2){
cout << "小居民楼 \n ";
}else if(Is_Jixie[i] + 1 == 3){
cout << "大居民楼 \n ";
}
cout << "可住人数:";
if(Is_Jixie[i] + 1 == 1){
cout << " 5 人 \n ";
}else if(Is_Jixie[i] + 1 == 2){
cout << " 10 人 \n ";
}else if(Is_Jixie[i] + 1 == 3){
cout << " 25 人 \n ";
}
cout << "占地面积:";
if(Is_Jixie[i] + 1 == 1){
cout << "30 \n";
}else if(Is_Jixie[i] + 1 == 2){
cout << "50 \n";
}else if(Is_Jixie[i] + 1 == 3){
cout << "100 \n";
}
cout << " ";
cout << "耗材:";
if(Is_Jixie[i] + 1 == 1){
cout << " 10 木头 5 铁 \n";
}else if(Is_Jixie[i] + 1 == 2){
cout << " 20 木头 15 铁 \n";
}else if(Is_Jixie[i] + 1 == 3){
cout << " 50 木头 25 铁 \n";
}
}else if(i == 3){
cout << "法律建筑:";
if(Is_Jixie[i] + 1 == 1){
cout << "法庭 \n ";
}else if(Is_Jixie[i] + 1 == 2){
cout << "监狱 \n ";
}else if(Is_Jixie[i] + 1 == 3){
cout << "行政庭 \n ";
}
cout << "可执行操作:";
if(Is_Jixie[i] + 1 == 1){
cout << " 处理人民的犯罪时间和颁布初级法令 \n ";
}else if(Is_Jixie[i] + 1 == 2){
cout << " 关押犯人 \n ";
}else if(Is_Jixie[i] + 1 == 3){
cout << " 公布高级法令 \n ";
}
cout << "占地面积:";
if(Is_Jixie[i] + 1 == 1){
cout << "100 \n";
}else if(Is_Jixie[i] + 1 == 2){
cout << "500 \n";
}else if(Is_Jixie[i] + 1 == 3){
cout << "1000 \n";
}
cout << " ";
cout << "耗材:";
if(Is_Jixie[i] + 1 == 1){
cout << " 100 木头 20 铁 \n";
}else if(Is_Jixie[i] + 1 == 2){
cout << " 300 木头 50 铁 \n";
}else if(Is_Jixie[i] + 1 == 3){
cout << " 500 木头 100 铁 \n";
}
}else if(i == 4){
cout << "木材建筑:";
if(Is_Jixie[i] + 1 == 1){
cout << "小型人工树场 \n ";
}else if(Is_Jixie[i] + 1 == 2){
cout << "中型人工树场 \n ";
}else if(Is_Jixie[i] + 1 == 3){
cout << "大型人工树场 \n ";
}
cout << "可执行操作:";
if(Is_Jixie[i] + 1 == 1){
cout << " 提供木材: 20 木头 / 人 (可抵挡 2 次暴风雪) \n ";
}else if(Is_Jixie[i] + 1 == 2){
cout << " 提供木材: 30 木头 / 人 (可抵挡 5 次暴风雪) \n ";
}else if(Is_Jixie[i] + 1 == 3){
cout << " 提供木材: 30 木头 / 人 (不可被暴风雪摧毁)\n ";
}
cout << "占地面积:";
if(Is_Jixie[i] + 1 == 1){
cout << "100 \n";
}else if(Is_Jixie[i] + 1 == 2){
cout << "300 \n";
}else if(Is_Jixie[i] + 1 == 3){
cout << "700 \n";
}
cout << " ";
cout << "耗材:";
if(Is_Jixie[i] + 1 == 1){
cout << " 100 木头 10 铁 \n";
}else if(Is_Jixie[i] + 1 == 2){
cout << " 250 木头 30 铁 \n";
}else if(Is_Jixie[i] + 1 == 3){
cout << " 400 木头 75 铁 \n";
}
}
cout << "\n";
}
yellow;
cout << "============================================================ \n";
cout << "== 请选择要升级的建筑(请勿乱输, -1 退出): \n";
cout << " ";
int init;
cin >> init;
cls;
if(init == -1) return;
if(init <1 || init>4){
cout << "输入无效"; Sleep(1200); return;
}
if(Is_Jixie[init] == 4){ //修复:Is_Jixie,不是Is_Falv
white;
cout << "当前技能已满级!";
Sleep(2000);
return ;
}
cout << "升级此建筑需要花费 3 点技能点 \n";
cout << "当前拥有 " << Talent << " 点技能点 \n";
if(Talent >= 3){
cout << "可以升级,请问你的选择是?(1 是 / 2 否)";
int Y_es;
cin >> Y_es;
if(Y_es == 1){
cls;
blue;
cout << "升级成功!";
Talent -= 3;
Is_Jixie[init] += 1;
Sleep(2000);
}else{
cout << "已退出";
Sleep(1000);
}
}else{
cout << "你无法升级此技能!请以后再来!\n";
}
pause;
}
void Tanxian(){ // 科技分支——探险分支
cls; green;
int x;
cout << "=======================科技分支:探险======================= \n";
for(int i = 1; i <= 4; i ++){
if(Is_Tanxian[i] >= 1){
green;
x = Is_Tanxian[i];
}else{
red;
x = Is_Tanxian[i] + 1;
}
cout << "== ";
if(i == 1) cout << "1 瞭望塔探测距离为 : " << x * 100;
else if(i == 2) cout << "2 每支探险队可派遣 " << x * 2 << " 人";
else if(i == 3) cout << "3 探险区域扩大至" << x * 200 + 50;
else if(i == 4) cout << "4 探险成功率提升到 " << x * 20 + 5 << "% ";
green;
cout << "\n";
red;
}
green;
cout << "============================================================ \n";
cout << "== 请选择要学习的技能(请勿乱输, -1 退出): \n";
cout << " ";
int init;
cin >> init;
cls;
if(init == -1) return ;
if(init <1 || init>4){
cout << "无效输入"; Sleep(1200); return;
}
if(Is_Tanxian[init] == 4){ //修复判断数组
white;
cout << "当前技能已满级!";
Sleep(2000);
return ;
}
cout << "升级此技能需要花费 5 点技能点 \n";
cout << "当前拥有 " << Talent << " 点技能点 \n";
if(Talent >= 5){
cout << "可以升级,请问你的选择是?(1 是 / 2 否)";
int Y_es;
cin >> Y_es;
if(Y_es == 1){
cls;
blue;
cout << "升级成功!";
Talent -= 5;
Is_Tanxian[init] += 1;
Sleep(2000);
}else{
cout << "已退出";
Sleep(1000);
}
}else{
cout << "你无法升级此技能!请以后再来!\n";
}
pause;
}
void Houqin(){ // 科技分支——后勤分支
cls; pink;
int x;
cout << "=======================科技分支:后勤======================= \n";
for(int i = 1; i <= 4; i ++){
if(Is_Houqin[i] >= 1){
green;
x = Is_Houqin[i];
}else{
red;
x = Is_Houqin[i] + 1;
}
cout << "== ";
if(i == 1) cout << "1 人民有 " << x * 1 + 1 << "% 的概率当天无需粮食(工人触发的概率降低)";
else if(i == 2) cout << "2 当粮食充足时,每天增加 " << x * 0.2 + Manyi * 0.01 << " 的满意度";
else if(i == 3) cout << "3 每次建筑时,有 " << x * 3 << "% 的概率减少一定的耗材(质量不变)";
else if(i == 4) cout << "4 每天行动点数增加 " << x * 1;
green;
cout << "\n";
red;
}
green;
cout << "============================================================ \n";
cout << "== 请选择要学习的技能(请勿乱输, -1 退出): \n";
cout << " ";
int init;
cin >> init;
cls;
if(init == -1) return ;
if(init <1 || init>4){
cout << "无效输入"; Sleep(1200); return;
}
if(Is_Houqin[init] == 4){ //修复判断数组
white;
cout << "当前技能已满级!";
Sleep(2000);
return ;
}
cout << "升级此技能需要花费 3 点技能点 \n";
cout << "当前拥有 " << Talent << " 点技能点 \n";
if(Talent >= 3){
cout << "可以升级,请问你的选择是?(1 是 / 2 否)";
int Y_es;
cin >> Y_es;
if(Y_es == 1){
cls;
blue;
cout << "升级成功!";
Talent -= 3;
Is_Houqin[init] += 1;
Sleep(2000);
}else{
cout << "已退出";
Sleep(1000);
}
}else{
cout << "你无法升级此技能!请以后再来!\n";
}
pause;
}
void Keji(){ // 科技树
while(true){
cls; blue;
cout << "========================= 冰征之旅 ========================= \n";
cout << "== 请选择要查看的科技分支: == \n";
cout << "== 1. 法律分支(用于颁布法令) == \n";
cout << "== 2. 机械分支(用于制造高级机器) == \n";
cout << "== 3. 探险分支(用于探险行动) == \n";
cout << "== 4. 后勤分支(用于为人民提供物品) == \n";
cout << "============================================================ \n";
cout << "== 请选择(请勿乱输, -1退出): \n";
cout << " ";
int init;
cin >> init;
if(init == 1){
Falv();
}else if(init == 2){
Jixie();
}else if(init == 3){
Tanxian();
}else if(init == 4){
Houqin();
}else if(init == -1){
return ;
}
}
}
pair<int, pair<string, int> > work[10];
// 以下为法律相关变量
int FalvCnt; // 最多可颁布法令数
int FalvAdd; // 法律提升满意度概率
int FalvType; // 可颁布法律类型
// 劳动类
int NotWorkerwork = 0; // 是否让非工人工作
int WorkerTime = 0; // 工人工作时间
int TeacherTime = 0; // 教师工作时间
int EngineerTime = 0; // 机械师工作时间
int DoctorTime = 0; // 医生工作时间
// 起居类
int WhoLive = 0; // 工人 / 教师 / 机械师 / 医生优先入住
int LiveWhat_1 = 0; // 1 级房屋优先入住
int LiveWhat_2 = 0; // 2 级房屋优先入住
int LiveWhat_3 = 0; // 3 级房屋优先入住
int Livewhat_4 = 0; // 4 级房屋优先入住
// 饮食类
int WorkerEat = 0; // 工人拥有双份口粮
int TeacherEat = 0; // 教师拥有双份口粮
int EngineerEat = 0; // 工程师拥有双份口粮
int DoctorEat = 0; // 医生拥有更多口粮
int EatBetter = 0; // 吃更好的饭
// 安全类
int SaveWho = 0; // 谁优先救治
int CanFight = 0; // 是否可以打架
int CanOut = 0; // 是否可以随意离开安全区
int CanSteal = 0; // 是否可以随意偷窃
int CanIn = 0; // 是否可以未经允许进入难民
string Talk[20];
int OK;
void Choose(){
OK = 0; //每次评审清零!重要修复
cls;
cout << "法律已公布,难民中选出的 5 位执政官正在评审.....\n";
for(int i = 1; i <= 10; i ++){
Sleep(rand() % 2000 + 500);
int x = rand() % 19 + 0;
if(x < 10){
green;
OK ++;
blue;
}else{
red;
OK --;
blue;
}
cout << Talk[x] << endl;
}
cls;
}
void Banbu(int Do){ // 颁布法令操作
blue; cls;
cout << "========================= 冰征之旅 ========================= \n";
cout << "== 请选择颁布法令类型: == \n";
if(FalvType == 0) cout << "== 法律分支技能未解锁,请解锁后继续 ~ == \n";
else{
if(FalvType >= 1) cout << "== 1. 劳动类 == \n";
if(FalvType >= 2) cout << "== 2. 起居类 == \n";
if(FalvType >= 3) cout << "== 3. 饮食类 == \n";
if(FalvType >= 4) cout << "== 4. 安全类 == \n";
}
cout << "============================================================ \n";
cout << "== 请选择颁布的法律类型(-1退出): == \n";
cout << "== ";
int init;
cin >> init;
if(init > FalvType){
cout << "当前未解锁此类法律!";
Sleep(1500);
return ;
}
if(init == -1){
return;
}
if(init == 1){
cls; blue;
cout << "============================================================ \n";
cout << "== 劳动类法令 == \n";
cout << "============================================================ \n";
cout << "== 1. 非工人应该上岗工作。 == \n";
cout << "== 2. 工人是否应该工作 12 小时 == \n";
cout << "== 3. 教师是否应该工作 12 小时 == \n";
cout << "== 4. 机械师是否应该工作 12 小时 == \n";
cout << "== 5. 医生是否应该工作 12 小时 == \n";
cout << "============================================================ \n";
cout << "== 请选择(-1退出): == \n";
cout << "== ";
int x;
cin >> x;
if(x == -1){
return;
}
if(x == 1){
if(Do >= 1){
cout << "可以颁布法令! \n";
cout << "注意:该法令颁布后有概率被驳回!\n";
cout << "输入 1 确定, 2 取消:";
int y;
cin >> y;
if(y == 1){
Choose();
Do --;
if(OK <= 0){
cout << "法律未通过!人民对你的决定感到愤怒!";
Manyi -= 5;
}else {
cout << "法律通过!你做了一个正确的决定!";
Manyi += 5;
WorkerTime = 1; //修复 == 改为 =
NotWorkerwork = 1;
}
}else return;
}else{
cout << "行动点不足! \n";
Sleep(2000);
return ;
}
}
if(x == 2){
if(Do >= 1){
cout << "可以颁布法令! \n";
cout << "注意:该法令颁布后有概率被驳回!\n";
cout << "输入 1 确定, 2 取消:";
int y;
cin >> y;
if(y == 1){
Choose();
Do --;
if(OK <= 0){ cout << "法律未通过!人民对你的决定感到愤怒!"; Manyi -= 5; }
else { cout << "法律通过!你做了一个正确的决定!"; Manyi += 5; WorkerTime = 1;}
}else return;
}else{
cout << "行动点不足! \n";
Sleep(2000);
return ;
}
}
if(x == 3){
if(Do >= 1){
cout << "可以颁布法令! \n";
cout << "注意:该法令颁布后有概率被驳回!\n";
cout << "输入 1 确定, 2 取消:";
int y;
cin >> y;
if(y == 1){
Choose();
Do --;
if(OK <= 0){ cout << "法律未通过!人民对你的决定感到愤怒!"; Manyi -= 5; }
else { cout << "法律通过!你做了一个正确的决定!"; Manyi += 5; TeacherTime = 1;}
}else return;
}else{
cout << "行动点不足! \n";
Sleep(2000);
return ;
}
}
if(x == 4){
if(Do >= 1){
cout << "可以颁布法令! \n";
cout << "注意:该法令颁布后有概率被驳回!\n";
cout << "输入 1 确定, 2 取消:";
int y;
cin >> y;
if(y == 1){
Choose();
Do --;
if(OK <= 0){ cout << "法律未通过!人民对你的决定感到愤怒!"; Manyi -= 5; }
else { cout << "法律通过!你做了一个正确的决定!"; Manyi += 5; EngineerTime = 1;}
}else return;
}else{
cout << "行动点不足! \n";
Sleep(2000);
return ;
}
}
if(x == 5){
if(Do >= 1){
cout << "可以颁布法令! \n";
cout << "注意:该法令颁布后有概率被驳回!\n";
cout << "输入 1 确定, 2 取消:";
int y;
cin >> y;
if(y == 1){
Choose();
Do --;
if(OK <= 0){ cout << "法律未通过!人民对你的决定感到愤怒!"; Manyi -= 5; }
else { cout << "法律通过!你做了一个正确的决定!"; Manyi += 5; DoctorTime = 1;}
}else return;
}else{
cout << "行动点不足! \n";
Sleep(2000);
return ;
}
}
if(Rand(FalvAdd) == true){
Manyi += 5;
cout << "你学的神奇小技能发力了,满意度 + 5!" << endl;
}
}
pause;
}
int Do;
void Zhiling(){
while(true){
blue; cls;
cout << "========================= 冰征之旅 ========================= \n";
cout << "== 请选择你的行动: == \n";
cout << "== 1. 颁布法令 == \n";
cout << "== 2. 派遣人员 == \n";
cout << "== 3. 建造设施 == \n";
cout << "== 4. 发明科技 == \n";
cout << "== 5. 外出探险 == \n";
cout << "== 6. 结束一天 == \n";
cout << "============================================================ \n";
cout << "== 当前正在进行的操作: == \n";
for(int i=0;i<10;i++){
pair<int, pair<string, int> > p = work[i];
if(p.first == 0) continue;
cout << "== ";
if(p.first == 1) cout << "建造:";
else if(p.first == 2) cout << "发明:";
else if(p.first == 3) cout << "探险:";
cout << p.second.first << " 剩余时间:" << p.second.second << "\n";
}
cout << "============================================================ \n";
cout << "== 请选择进行的操作(-1退出): == \n";
cout << "== 当前行动点:" << Do << endl;
cout << "== ";
int init;
cin >> init;
if(init == 1){
Banbu(Do);
}else if(init == 2){
//Paiqian(Do);
}else if(init == 3){
//Jianzao(Do);
}else if(init == 4){
//Faming(Do);
}else if(init == 5){
//Waichu(Do);
}else if(init == 6){
// 结束一天逻辑,这里简单写
Day++;
Do = 7 + Is_Houqin[4]; //后勤4级增加行动点
//温度、资源消耗后续你继续写
cout << "新一天到来!Day=" << Day <<endl;
Sleep(1200);
return;
}else if(init == -1){
return ;
}
}
}
void Menu(){ // 菜单界面
cls; blue;
FalvCnt = Is_Falv[1] * 5;
FalvAdd = Is_Falv[2] * 20 + 5;
FalvType = Is_Falv[3];
if(Day == 1) Do = 7;
cout << "========================= 冰征之旅 ========================= \n";
cout << "== 请选择你的行动: == \n";
cout << "== 1. 查看信息 == \n";
cout << "== 2. 查看科技 == \n";
cout << "== 3. 下达指令 == \n";
cout << "== 4. 自我放逐 == \n";
cout << "== 5. 提取 / 输入存档码 == \n";
cout << "============================================================ \n";
cout << "== 请输入(请勿乱输): == \n";
cout << " ";
int init;
cin >> init;
if(init == 1){
Xinxi();
}else if(init == 2){
Keji();
}else if(init == 3){
Zhiling();
}else if(init == 4){
//Fangzhu();
}else if(init == 5){
//Cundang();
}
}
int main(){ // 主函数
// 初始化评审台词
Talk[0] = "我支持这项法令";
Talk[1] = "这条法令很不错";
Talk[2] = "人民会喜欢这个政策";
Talk[3] = "我投赞成票";
Talk[4] = "这可以改善民生";
Talk[5] = "这项法律合理可行";
Talk[6] = "很好的决定";
Talk[7] = "可以颁布";
Talk[8] = "有利于部落发展";
Talk[9] = "同意!";
Talk[10] = "我反对这项法令";
Talk[11] = "这会引起民众不满";
Talk[12] = "风险太大,不能通过";
Talk[13] = "我不支持";
Talk[14] = "会降低大家的生活质量";
Talk[15] = "民众会抗议的";
Talk[16] = "这个决定太草率";
Talk[17] = "我投否决票";
Talk[18] = "弊大于利";
Talk[19] = "不能这么做";
// 设置随机种子!非常重要,不然随机数永远一样
srand((unsigned int)time(NULL));
// 初始化居民状态,初始20个人
Rand_People_Health(1, people);
Rand_People_Food(1, people);
Rand_People_Job(1, people);
// 游戏主循环
while(Win == 0){
Menu();
}
return 0;
}


(doge)
这里空空如也





















有帮助,赞一个