//工作模拟器1.3
#include <iostream>
#include <string>
#include <cstdlib>
#include <vector>
#include <ctime>
#include<windows.h>
// 替换Windows特定功能
#ifdef _WIN32
#include <windows.h>
#else
// 提供Linux/macOS的替代实现
#endif
#include <fstream>
using namespace std;
int math_ability = 0;
int language_ability = 0;
int science_ability = 0;
int art_ability = 0;
int programming_ability = 0;
int economics_ability = 0;
bool can_teach_math = false;
bool can_teach_language = false;
bool can_teach_science = false;
bool can_teach_art = false;
bool can_teach_programming = false;
struct GameData {
int money;
int tired;
int knowledge;
int work;
int bank_savings;
int bank_loan;
int loan_term;
int interest_rate;
int loan_rate;
};
namespace dj {
bool axj(long long key) {
return (GetKeyState(key) < 0) ? (true) : (false);
}
struct hl {
long long h,l;
};
void de(int x) {
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),x);
}
bool ax(long long key) {
return (GetKeyState(key) < 0) ? (true) : (false);
}
hl wz(bool x = 1, bool n = 1) {
HANDLE hOutput = GetStdHandle(STD_OUTPUT_HANDLE);
HWND h = GetForegroundWindow();
CONSOLE_FONT_INFO consoleCurrentFont;
hl hl;
POINT p;
if (x) {
GetCursorPos(&p);
ScreenToClient(h, &p);
} else {
GetCursorPos(&p);
}
if (n) {
GetCurrentConsoleFont(hOutput, FALSE, &consoleCurrentFont);
p.x /= consoleCurrentFont.dwFontSize.X;
p.y /= consoleCurrentFont.dwFontSize.Y;
}
hl.h = p.y + 1;
hl.l = p.x + 1;
return hl;
}
void ycbj() {
HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE);
DWORD mode;
GetConsoleMode(hStdin, &mode);
mode &= ~ENABLE_QUICK_EDIT_MODE;
SetConsoleMode(hStdin, mode);
return;
}
void ycgb() {
CONSOLE_CURSOR_INFO cursor;
cursor.bVisible = FALSE;
cursor.dwSize = sizeof(cursor);
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorInfo(handle, &cursor);
return;
}
inline void ydgb(long long h, long long l) {
COORD pos = { l - 1,h - 1 };
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hOut, pos);
return;
}
bool pdbj(int y,int x,int x1,int x2,int ys,string zt) {
ycgb();
ycbj();
hl z=wz(1,1);
bool a=0;
if(z.h==y&&z.l>=x1&&z.l<=x2) {
ydgb(y,x);
de(ys*16);
cout<<zt;
de(ys);
if(axj(VK_LBUTTON)) {
a=1;
}
} else {
ydgb(y,x);
de(ys);
cout<<zt;
}
de(15);
return a;
}
};
using namespace dj;//一定要有
int tired=50,work;
int money=1000000;
int knowledge = 100;/////////////////////////////////////
int study;
// 初始化银行数据
int bank_savings = 0;
int bank_loan = 0;
int loan_term = 0;
int interest_rate = 0.02; // 初始2%
int loan_rate = 0.07; // 初始7%
// 学生性格类型枚举
enum StudentPersonality {
EXTROVERTED, // 外向型
INTROVERTED, // 内向型
SENSORY, // 感觉型
INTUITIVE, // 直觉型
THINKING, // 思考型
FEELING, // 情感型
JUDGING, // 判断型
PERCEIVING // 感知型
};
// 学生结构体
struct Student {
string name;
int grade_level; // 1:小学, 2:初中, 3:高中, 4:大学
string subject; // 所学科目
int difficulty; // 教学难度 1-5
int base_pay; // 基础报酬
StudentPersonality personality; // 性格类型
int learning_speed; // 学习速度
string special_ability; // 特殊能力
};
// 特殊剧情结构体
struct SpecialEvent {
string title;
string description;
vector<string> choices;
vector<int> effects; // 对知识、金钱、体力的影响
};
int select_elective_course() {
system("cls");
cout << "=== 选修课系统 ===" << endl;
cout << "请选择您感兴趣的选修课程:" << endl;
cout << "1. 高等数学 - 提升数学能力" << endl;
cout << "2. 英语文学 - 提升语言能力" << endl;
cout << "3. 物理化学 - 提升科学能力" << endl;
cout << "4. 美术音乐 - 提升艺术能力" << endl;
cout << "5. 计算机编程 - 提升编程能力" << endl;
cout << "6. 经济学原理 - 提升经济能力" << endl;
int selected_course = 0;
while(1) {
if(pdbj(3,1,1,25,2,"1. 高等数学")) {
selected_course = 1;
break;
}
if(pdbj(4,1,1,25,3,"2. 英语文学")) {
selected_course = 2;
break;
}
if(pdbj(5,1,1,25,4,"3. 物理化学")) {
selected_course = 3;
break;
}
if(pdbj(6,1,1,25,5,"4. 美术音乐")) {
selected_course = 4;
break;
}
if(pdbj(7,1,1,25,6,"5. 计算机编程")) {
selected_course = 5;
break;
}
if(pdbj(8,1,1,25,7,"6. 经济学原理")) {
selected_course = 6;
break;
}
}
return selected_course;
}
// 特殊剧情处理函数
void handle_special_event(Student& student, int& teaching_quality, int& total_income) {
if(student.name == "神秘少年") {
cout << "神秘少年神秘一笑:老师,我们还会再见的..." << endl;
// 有概率获得隐藏奖励
int hidden_reward_roll = rand() % 100;
if(hidden_reward_roll < 30) { // 30%概率
cout << "获得神秘少年的感谢信!" << endl;
// 可以解锁后续剧情
}
if(student.name == "欧阳老师") {
cout << "欧阳老师:记住,真正的教育是点燃火焰,而不是填满容器。" << endl;
}
}
// 教学策略映射表
vector<pair<StudentPersonality, string>> teaching_strategies = {
{EXTROVERTED, "互动讨论+小组合作"},
{INTROVERTED, "独立思考+书面反馈"},
{SENSORY, "实际操作+案例分析"},
{INTUITIVE, "思维导图+未来规划"},
{THINKING, "逻辑推理+问题解决"},
{FEELING, "情感共鸣+合作学习"},
{JUDGING, "时间管理+目标设定"},
{PERCEIVING, "灵活应变+开放讨论"}
};
vector<Student> available_students = {
// 普通学生
{"小明", 1, "数学", 1, 50, EXTROVERTED, 3, "数学天才"},
{"小红", 2, "英语", 2, 80, INTROVERTED, 4, "语言天赋"},
{"小刚", 3, "物理", 3, 120, THINKING, 2, "逻辑思维"},
{"李华", 4, "编程", 4, 200, INTUITIVE, 5, "编程高手"},
// 特殊学生 - 带有特殊剧情
{"张伟", 2, "化学", 3, 100, SENSORY, 3, "实验能手"},
{"王芳", 3, "美术", 2, 90, FEELING, 4, "艺术天赋"},
{"赵雷", 4, "经济学", 4, 180, JUDGING, 3, "商业头脑"},
{"林雪", 1, "音乐", 1, 60, PERCEIVING, 2, "音乐天才"},
// 隐藏学生 - 稀有角色
{"神秘少年", 3, "综合", 5, 300, INTUITIVE, 6, "全能天才"},
{"欧阳老师", 4, "哲学", 5, 250, THINKING, 4, "智慧传承"}
};
int learn_subject(){
Sleep(100);
while(1) {
if(pdbj(1,1,1,20,3,"图书馆自学:免费")) {
return 1;
}
if(pdbj(2,1,1,20,2,"必修课:20元,专业导师")) {
return 2;
}
if(pdbj(3,1,1,20,1,"选修课:增加更多知识")) {
return 3;
}
}
}
void saveGame() {
ofstream saveFile("game_save.dat");
saveFile << money << endl;
saveFile << tired << endl;
saveFile << knowledge << endl;
saveFile << work << endl;
saveFile << bank_savings << endl;
saveFile << bank_loan << endl;
saveFile << loan_term << endl;
saveFile << interest_rate << endl;
saveFile << loan_rate << endl;
saveFile.close();
cout << "游戏数据已保存!" << endl;
Sleep(1000);
}
void loadGame() {
ifstream saveFile("game_save.dat");
if (saveFile.is_open()) {
saveFile >> money;
saveFile >> tired;
saveFile >> knowledge;
saveFile >> work;
saveFile >> bank_savings;
saveFile >> bank_loan;
saveFile >> loan_term;
saveFile >> interest_rate;
saveFile >> loan_rate;
}
saveFile.close();
cout << "游戏数据已加载!" << endl;
Sleep(1000);
}
//---银行
void cunkuan() {
system("cls");
cout << "=== 存款服务 ===" << endl;
cout << "当前现金:" << money << "元" << endl;
cout << "银行存款:" << bank_savings << "元" << endl;
cout << "请输入存款金额(按ESC取消):" << endl;
int deposit_amount = 0;
string input_str;
while(1) {
ydgb(5,1);
cout << "存款金额:";
getline(cin, input_str);
if(input_str == "") {
continue;
}
if(axj(VK_ESCAPE)) {
return;
}
try {
deposit_amount = stod(input_str);
if(deposit_amount <= 0) {
cout << "存款金额必须大于0!" << endl;
Sleep(1000);
system("cls");
cout << "=== 存款服务 ===" << endl;
cout << "当前现金:" << money << "元" << endl;
cout << "请输入存款金额(按ESC取消):" << endl;
continue;
}
if(deposit_amount > money) {
cout << "现金不足,无法存款!" << endl;
Sleep(1000);
system("cls");
cout << "=== 存款服务 ===" << endl;
cout << "当前现金:" << money << "元" << endl;
cout << "请输入存款金额(按ESC取消):" << endl;
continue;
}
break;
} catch(...) {
cout << "请输入有效的数字!" << endl;
Sleep(1000);
system("cls");
cout << "=== 存款服务 ===" << endl;
cout << "当前现金:" << money << "元" << endl;
cout << "请输入存款金额(按ESC取消):" << endl;
}
}
money -= deposit_amount;
bank_savings += deposit_amount;
system("cls");
cout << "=== 存款成功 ===" << endl;
cout << "存款金额:" << deposit_amount << "元" << endl;
cout << "当前现金:" << money << "元" << endl;
cout << "银行存款:" << bank_savings << "元" << endl;
cout << "预计年收益:" << (bank_savings * interest_rate) << "元" << endl;
Sleep(3000);
}
void qukuan() {
system("cls");
cout << "=== 取款服务 ===" << endl;
cout << "当前现金:" << money << "元" << endl;
cout << "银行存款:" << bank_savings << "元" << endl;
cout << "请输入取款金额(按ESC取消):" << endl;
int withdraw_amount = 0;
string input_str;
while(1) {
ydgb(5,1);
cout << "取款金额:";
getline(cin, input_str);
if(input_str == "") {
continue;
}
if(axj(VK_ESCAPE)) {
return;
}
try {
withdraw_amount = stod(input_str);
if(withdraw_amount <= 0) {
cout << "取款金额必须大于0!" << endl;
Sleep(1000);
system("cls");
cout << "=== 取款服务 ===" << endl;
cout << "当前现金:" << money << "元" << endl;
cout << "请输入取款金额(按ESC取消):" << endl;
continue;
}
if(withdraw_amount > bank_savings) {
cout << "存款不足,无法取款!" << endl;
Sleep(1000);
system("cls");
cout << "=== 取款服务 ===" << endl;
cout << "当前现金:" << money << "元" << endl;
cout << "请输入取款金额(按ESC取消):" << endl;
continue;
}
break;
} catch(...) {
cout << "请输入有效的数字!" << endl;
Sleep(1000);
system("cls");
cout << "=== 取款服务 ===" << endl;
cout << "当前现金:" << money << "元" << endl;
cout << "请输入取款金额(按ESC取消):" << endl;
}
}
bank_savings -= withdraw_amount;
money += withdraw_amount;
system("cls");
cout << "=== 取款成功 ===" << endl;
cout << "取款金额:" << withdraw_amount << "元" << endl;
cout << "当前现金:" << money << "元" << endl;
cout << "银行存款:" << bank_savings << "元" << endl;
Sleep(3000);
}
void shenqingdaikuan() {
system("cls");
if(bank_loan > 0) {
cout << "您已有未还清的贷款,请先还款!" << endl;
Sleep(2000);
return;
}
cout << "=== 贷款服务 ===" << endl;
cout << "贷款利率:年化" << (loan_rate * 100) << "%" << endl;
cout << "最大可贷款额度:" << (money * 5) << "元" << endl;
cout << "请输入贷款金额(按ESC取消):" << endl;
int loan_amount = 0;
string input_str;
while(1) {
ydgb(5,1);
cout << "贷款金额:";
getline(cin, input_str);
if(input_str == "") {
continue;
}
if(axj(VK_ESCAPE)) {
return;
}
try {
loan_amount = stod(input_str);
if(loan_amount <= 0) {
cout << "贷款金额必须大于0!" << endl;
Sleep(1000);
system("cls");
cout << "=== 贷款服务 ===" << endl;
cout << "最大可贷款额度:" << (money * 5) << "元" << endl;
cout << "请输入贷款金额(按ESC取消):" << endl;
continue;
}
if(loan_amount > (money * 5)) {
cout << "贷款金额超过最大额度!" << endl;
Sleep(1000);
system("cls");
cout << "=== 贷款服务 ===" << endl;
cout << "最大可贷款额度:" << (money * 5) << "元" << endl;
cout << "请输入贷款金额(按ESC取消):" << endl;
continue;
}
// 确认贷款
system("cls");
cout << "=== 贷款确认 ===" << endl;
cout << "贷款金额:" << loan_amount << "元" << endl;
cout << "年利息:" << (loan_amount * loan_rate) << "元" << endl;
cout << "是否确认申请贷款?(Y/N)" << endl;
char confirm;
cin >> confirm;
if(confirm == 'Y' || confirm == 'y') {
bank_loan = loan_amount;
money += loan_amount;
loan_term = 365; // 1年期限
cout << "贷款申请成功!" << endl;
cout << "请记得按时还款,逾期会产生额外费用!" << endl;
} else {
cout << "贷款申请已取消" << endl;
}
break;
} catch(...) {
cout << "请输入有效的数字!" << endl;
Sleep(1000);
system("cls");
cout << "=== 贷款服务 ===" << endl;
cout << "请输入贷款金额(按ESC取消):" << endl;
}
}
Sleep(3000);
}
void huankuan() {
system("cls");
if(bank_loan <= 0) {
cout << "您当前没有需要还款的贷款!" << endl;
Sleep(2000);
return;
}
cout << "=== 还款服务 ===" << endl;
cout << "当前贷款:" << bank_loan << "元" << endl;
cout << "请输入还款金额(按ESC取消):" << endl;
int repay_amount = 0;
string input_str;
while(1) {
ydgb(5,1);
cout << "还款金额:";
getline(cin, input_str);
if(input_str == "") {
continue;
}
if(axj(VK_ESCAPE)) {
return;
}
try {
repay_amount = stod(input_str);
if(repay_amount <= 0) {
cout << "还款金额必须大于0!" << endl;
Sleep(1000);
system("cls");
cout << "=== 还款服务 ===" << endl;
cout << "请输入还款金额(按ESC取消):" << endl;
continue;
}
if(repay_amount > money) {
cout << "现金不足,无法还款!" << endl;
Sleep(1000);
system("cls");
cout << "=== 还款服务 ===" << endl;
cout << "请输入还款金额(按ESC取消):" << endl;
continue;
}
if(repay_amount > bank_loan) {
cout << "还款金额超过贷款总额!" << endl;
Sleep(1000);
system("cls");
cout << "=== 还款服务 ===" << endl;
cout << "请输入还款金额(按ESC取消):" << endl;
continue;
}
money -= repay_amount;
bank_loan -= repay_amount;
system("cls");
cout << "=== 还款成功 ===" << endl;
cout << "还款金额:" << repay_amount << "元" << endl;
cout << "剩余贷款:" << bank_loan << "元" << endl;
cout << "当前现金:" << money << "元" << endl;
if(bank_loan == 0) {
cout << "恭喜您已还清所有贷款!" << endl;
}
break;
} catch(...) {
cout << "请输入有效的数字!" << endl;
Sleep(1000);
system("cls");
cout << "=== 还款服务 ===" << endl;
cout << "请输入还款金额(按ESC取消):" << endl;
}
}
Sleep(3000);
}
void zhanghuxiangqing() {
system("cls");
cout << "=== 银行账户详情 ===" << endl;
cout << "现金余额:" << money << "元" << endl;
cout << "银行存款:" << bank_savings << "元" << endl;
cout << "银行贷款:" << bank_loan << "元" << endl;
cout << "存款利率:年化" << (interest_rate * 100) << "%" << endl;
cout << "贷款利率:年化" << (loan_rate * 100) << "%" << endl;
cout << endl;
// 计算预计收益
int yearly_interest = bank_savings * interest_rate;
int loan_interest = bank_loan * loan_rate;
cout << "存款年收益:" << yearly_interest << "元" << endl;
cout << "贷款年利息:" << loan_interest << "元" << endl;
cout << endl;
if(bank_savings > 0) {
cout << "每日存款收益:" << (yearly_interest / 365) << "元" << endl;
}
Sleep(5000);
}
void calculate_daily_interest() {
// 每日存款利息
if(bank_savings > 0) {
int daily_interest = bank_savings * interest_rate / 365;
bank_savings += daily_interest;
cout << "今日存款利息:" << daily_interest << "元" << endl;
}
// 每日贷款利息
if(bank_loan > 0) {
int daily_loan_interest = bank_loan * loan_rate / 365;
bank_loan += daily_loan_interest;
cout << "今日贷款利息:" << daily_loan_interest << "元" << endl;
}
}
void update_bank_rates() {
// 根据存款金额调整利率
if(bank_savings < 1000) {
interest_rate = 0.015; // 1.5%
} else if(bank_savings < 10000) {
interest_rate = 0.02; // 2.0%
} else if(bank_savings < 50000) {
interest_rate = 0.025; // 2.5%
} else {
interest_rate = 0.03; // 3.0%
}
// 贷款利率固定比存款利率高
loan_rate = interest_rate + 0.05; // 贷款利率比存款利率高5%
}
void bank() {
system("cls");
Sleep(1000);
cout << "=== 莫尔德帝国银行 ===" << endl;
cout << "当前现金:" << money << "元" << endl;
cout << "银行存款:" << bank_savings << "元" << endl;
if(bank_loan > 0) {
cout << "银行贷款:" << bank_loan << "元" << endl;
}
cout << "存款利率:年化" << (interest_rate * 100) << "%" << endl;
if(bank_loan > 0) {
cout << "贷款利率:年化" << (loan_rate * 100) << "%" << endl;
}
cout << "请选择银行服务:" << endl;
int selected_option = 0;
while(1) {
// 显示选项按钮
if(pdbj(7,1,1,15,2,"1. 存款")) {
selected_option = 1;
break;
}
if(pdbj(8,1,1,15,3,"2. 取款")) {
selected_option = 2;
break;
}
if(pdbj(9,1,1,15,4,"3. 申请贷款")) {
selected_option = 3;
break;
}
if(pdbj(10,1,1,15,5,"4. 还款")) {
selected_option = 4;
break;
}
if(pdbj(11,1,1,15,6,"5. 账户详情")) {
selected_option = 5;
break;
}
if(axj(VK_ESCAPE)) {
return;
}
}
// 处理选择的银行服务
switch(selected_option) {
case 1: // 存款
cunkuan();
break;
case 2: // 取款
qukuan();
break;
case 3: // 申请贷款
shenqingdaikuan();
break;
case 4: // 还款
huankuan();
break;
case 5: // 查看账户详情
zhanghuxiangqing();
break;
}
}
// ---
int job() {
Sleep(100);
while(1) {
if(pdbj(1,1,1,33,6,"工地基础材料搬运工,多劳多得,无限制")) {
return 1;
}
if(pdbj(2,1,1,33,1,"保鲜膜生产制作工人,多劳多得,无限制")) {
return 2;
}
if(pdbj(3,1,1,33,7,"家教,要求专项能力,收益更高")) {
// 检查是否有可用的专项家教资格
if(can_teach_math || can_teach_language || can_teach_science || can_teach_art || can_teach_programming) {
return 3;
} else {
cout << "需要先学习专项能力才能从事家教!";
Sleep(1000);
return 0;
}
}
if(pdbj(4,1,1,33,8,"房地产开发商,需要100万启动资金")) {
if(money >= 1000000) {
return 4;
} else {
cout << "资金不足,无法进入房地产市场!";
Sleep(1000);
return 0;
}
}
}
}
//学习
void check_unlocked_teaching_types() {
// 解锁数学家教
if(math_ability >= 10 && !can_teach_math) {
can_teach_math = true;
cout << "恭喜!您已获取高等数学教师资格证!" << endl;
}
// 解锁语言家教
if(language_ability >= 10 && !can_teach_language) {
can_teach_language = true;
cout << "恭喜!您已解锁英语文学教师资格证!" << endl;
}
// 解锁科学家教
if(science_ability >= 10 && !can_teach_science) {
can_teach_science = true;
cout << "恭喜!您已解锁物理化学教师资格证!" << endl;
}
// 解锁艺术家教
if(art_ability >= 10 && !can_teach_art) {
can_teach_art = true;
cout << "恭喜!您已解锁美术音乐教师资格证!" << endl;
}
// 解锁编程家教
if(programming_ability >= 7 && !can_teach_programming) {
can_teach_programming = true;
cout << "恭喜!您已解锁计算机编程教师资格证!" << endl;
}
}
void study_process(int subject) {
system("cls");
int study_points = 0;
bool completed = false;
// 选修课变量
int elective_course = 0;
string subject_name, study_content;
int cost_per_hour, points_per_hour;
int energy_cost;
int ability_type = 0; // 1:数学, 2:语言, 3:科学, 4:艺术, 5:编程, 6:经济
switch(subject) {
case 1: // 自学模式
subject_name = "自学";
study_content = "《论语》,《离骚》,《相对论》";
cost_per_hour = 0.0;
points_per_hour = 1.0;
energy_cost = 5;
ability_type = 0;
break;
case 2: // 必修课模式
subject_name = "必修课";
study_content = "∫x2dx = x3/3 + C lim(x→∞)(1+1/x)? = e";
cost_per_hour = 20.0;
points_per_hour = 3.0;
energy_cost = 2;
ability_type = 0;
break;
case 3: // 选修课模式
Sleep(1000);
elective_course = select_elective_course();
switch(elective_course) {
case 1: // 高等数学
subject_name = "高等数学";
study_content = "微积分、线性代数、概率统计";
cost_per_hour = 15.0;
points_per_hour = 2.5;
energy_cost = 3;
ability_type = 1;
break;
case 2: // 英语文学
subject_name = "英语文学";
study_content = "莎士比亚作品、英语语法、写作技巧";
cost_per_hour = 18.0;
points_per_hour = 2.8;
energy_cost = 3;
ability_type = 2;
break;
case 3: // 物理化学
subject_name = "物理化学";
study_content = "牛顿定律、化学反应、实验操作";
cost_per_hour = 20.0;
points_per_hour = 3.0;
energy_cost = 4;
ability_type = 3;
break;
case 4: // 美术音乐
subject_name = "美术音乐";
study_content = "绘画技巧、音乐理论、艺术鉴赏";
cost_per_hour = 25.0;
points_per_hour = 2.0;
energy_cost = 2;
ability_type = 4;
break;
case 5: // 计算机编程
subject_name = "计算机编程";
study_content = "C++语法、算法设计、项目开发";
cost_per_hour = 30.0;
points_per_hour = 3.5;
energy_cost = 4;
ability_type = 5;
break;
case 6: // 经济学原理
subject_name = "经济学原理";
study_content = "供需关系、市场分析、投资策略";
cost_per_hour = 22.0;
points_per_hour = 2.2;
energy_cost = 3;
ability_type = 6;
break;
default:
return;
}
break;
default:
return;
}
system("cls");
cout << "正在学习:" << subject_name << endl;
cout << "学习内容:" << study_content << endl;
if(cost_per_hour > 0) {
cout << "每小时费用:" << cost_per_hour << "元" << endl;
} else {
cout << "免费学习" << endl;
}
cout << "按空格键学习,ESC键结束" << endl;
while(1) {
if(axj(VK_SPACE)) {
if(money >= cost_per_hour) {
if(cost_per_hour > 0) {
money -= cost_per_hour;
}
study_points += points_per_hour;
tired -= energy_cost;
cout << "学习进度:" << study_points << " 知识+" << points_per_hour;
// 根据选修课类型增加专项能力
if(ability_type > 0 && study_points % 2 == 0) {
switch(ability_type) {
case 1: // 数学能力
math_ability++;
cout << " 数学能力+" << 1;
break;
case 2: // 语言能力
language_ability++;
cout << " 语言能力+" << 1;
break;
case 3: // 科学能力
science_ability++;
cout << " 科学能力+" << 1;
break;
case 4: // 艺术能力
art_ability++;
cout << " 艺术能力+" << 1;
break;
case 5: // 编程能力
programming_ability++;
cout << " 编程能力+" << 1;
break;
case 6: // 经济能力
economics_ability++;
cout << " 经济能力+" << 1;
break;
}
}
cout << endl;
Sleep(500);
} else {
cout << "资金不足,无法继续学习!" << endl;
Sleep(1000);
break;
}
}
if(axj(VK_ESCAPE)) {
break;
}
if(tired <= 0) {
cout << "太累了,需要休息!" << endl;
Sleep(1000);
break;
}
if(study_points >= 10) {
completed = true;
break;
}
}
if(completed) {
knowledge += study_points;
cout << "恭喜完成本次学习!知识水平+" << study_points << endl;
check_unlocked_teaching_types();
} else {
knowledge += study_points * 0.5;
cout << "学习结束,获得知识:" << study_points * 0.5 << endl;
}
Sleep(2000);
}
void knowledge_level(int knowledge) {
if(knowledge < 10) {
cout << "初中";
} else if(knowledge < 30) {
cout << "高中";
} else if(knowledge < 100) {
cout << "大学";
} else if(knowledge < 150) {
cout << "研究生";
} else {
cout << "硕士";
}
}
//
void gongchang() {
int zs=0;
while(1) {
ydgb(1,1);
cout<<"=====把传送带上的东西做完!"<<endl;
if(pdbj(1,1,1,1,1,"=")) {
while(1) {
system("cls");
ydgb(1,1);
cout<<"=====";
system("cls");
if(pdbj(1,2,2,2,1,"=")) {
while(1) {
system("cls");
ydgb(1,1);
cout<<"=====";
if(pdbj(1,3,3,3,1,"=")) {
while(1) {
system("cls");
ydgb(1,1);
cout<<"=====";
if(pdbj(1,4,4,4,1,"=")) {
while(1) {
system("cls");
ydgb(1,1);
cout<<"=====";
if(pdbj(1,5,5,5,1,"=")) {
break;
}
}
break;
}
}
break;
}
}
break;
}
}
zs++;
tired--;
}
cout<<endl;
cout<<"已制作保鲜膜:"<<zs;
if(pdbj(3,1,1,4,15,"下工")) {
break;
}
if(tired<=0) {
cout<<"饿倒了";
Sleep(1000);
break;
}
}
system("cls");
cout<<"本次工资:"<<zs;
money+=zs;
Sleep(1000);
return ;
}
void banzhuan() {
cout<<"这不就是搬砖吗?";
Sleep(1000);
system("cls");
bool fl=1;
int zs=0;
int h,l;
while(1) {
ydgb(1,1);
cout<<"___________________________________________________"<<endl;
cout<<"| |"<<endl;
cout<<"| |"<<endl;
cout<<"| |"<<endl;
cout<<"| |"<<endl;
cout<<"| |"<<endl;
cout<<"| |"<<endl;
cout<<"| |"<<endl;
cout<<"| |"<<endl;
cout<<"| |"<<endl;
cout<<"| |"<<endl;
cout<<"|_________________________________________________|"<<endl;
cout<<" 高高兴兴上班,平平安安回家 已搬砖数:"<<zs;
if(fl) {
h=rand()%30+2;
l=rand()%10+2;
fl=0;
}
const int h1=h;
const int l1=l;
if(pdbj(l1,h1,h1,h1+2,6,"砖")) {
zs++;
fl=1;
tired--;
system("cls");
continue;
}
if(pdbj(16,1,1,4,15,"下工")) {
break;
}
if(tired==0) {
system("cls");
cout<<"你快饿扁了!"<<endl;
break;
}
}
Sleep(500);
system("cls");
cout<<"本次工资:"<<zs;
money+=zs;
Sleep(500);
return ;
}
void jiajiao() {
system("cls");
if(tired < 20) {
cout << "太累了,无法进行家教工作!" << endl;
Sleep(1000);
return;
}
// 随机选择学生(稀有学生有较低概率)
int student_index;
int rarity_roll = rand() % 100;
if(rarity_roll < 5) { // 5%概率遇到隐藏学生
student_index = 6; // 神秘少年
} else if(rarity_roll < 15) { // 10%概率遇到特殊学生
student_index = 4 + rand() % 2; // 张伟或王芳
} else {
student_index = rand() % 4; // 普通学生
}
Student current_student = available_students[student_index];
cout << "=== 家教工作系统 ===" << endl;
cout << "学生信息:" << endl;
cout << "姓名:" << current_student.name << endl;
cout << "年级:";
switch(current_student.grade_level) {
case 1: cout << "小学"; break;
case 2: cout << "初中"; break;
case 3: cout << "高中"; break;
case 4: cout << "大学"; break;
}
cout << endl;
cout << "科目:" << current_student.subject << endl;
// 显示学生性格
cout << "性格特点:";
switch(current_student.personality) {
case EXTROVERTED: cout << "外向活泼,喜欢互动"; break;
case INTROVERTED: cout << "内向安静,需要引导"; break;
case SENSORY: cout << "注重实际,喜欢动手"; break;
case INTUITIVE: cout << "富有想象力,善于思考"; break;
case THINKING: cout << "逻辑性强,追求真理"; break;
case FEELING: cout << "情感丰富,重视和谐"; break;
case JUDGING: cout << "有条理,喜欢计划"; break;
case PERCEIVING: cout << "灵活多变,适应性强"; break;
}
cout << endl;
if(!current_student.special_ability.empty()) {
cout << "特殊能力:" << current_student.special_ability << endl;
}
// 显示可用的家教类型
vector<string> available_courses;
vector<int> course_types;
// 基础数学家教
available_courses.push_back("初中数学家教");
course_types.push_back(0);
// 专项家教类型
if(can_teach_math) {
available_courses.push_back("高等数学家教");
course_types.push_back(1);
}
if(can_teach_language) {
available_courses.push_back("英语文学家教");
course_types.push_back(2);
}
if(can_teach_science) {
available_courses.push_back("物理化学家教");
course_types.push_back(3);
}
if(can_teach_art) {
available_courses.push_back("美术音乐家教");
course_types.push_back(4);
}
if(can_teach_programming) {
available_courses.push_back("计算机编程家教");
course_types.push_back(5);
}
// 显示可用选项
for(int i = 0; i < available_courses.size(); i++) {
cout << (i+1) << ". " << available_courses[i] << endl;
}
cout << "按ESC返回" << endl;
int selected_course = 0;
int y_pos = 10;
while(1) {
for(int i = 0; i < available_courses.size(); i++) {
if(pdbj(y_pos+i, 1, 1, 25, 2+i, (to_string(i+1) + ". " + available_courses[i])) {
selected_course = course_types[i];
break;
}
}
if(axj(VK_ESCAPE)) {
return;
}
if(selected_course > 0) {
break;
}
}
system("cls");
// 根据学生年级调整教学难度和收益
double teaching_multiplier = 1.0;
switch(current_student.grade_level) {
case 1: teaching_multiplier = 0.8; break; // 小学
case 2: teaching_multiplier = 1.0; break; // 初中
case 3: teaching_multiplier = 1.3; break; // 高中
case 4: teaching_multiplier = 1.8; break; // 大学
}
cout << "=== 家教工作开始 ===" << endl;
cout << "学生:" << current_student.name << endl;
cout << "年级:";
switch(current_student.grade_level) {
case 1: cout << "小学"; break;
case 2: cout << "初中"; break;
case 3: cout << "高中"; break;
case 4: cout << "大学"; break;
}
cout << endl;
cout << "科目:" << current_student.subject << endl;
// 根据性格提供教学策略建议
cout << "教学策略建议:";
switch(current_student.personality) {
case EXTROVERTED:
cout << "采用互动讨论和小组合作方式";
break;
case INTROVERTED:
cout << "提供独立思考时间,逐步引导";
break;
case SENSORY:
cout << "注重实际操作和案例分析";
break;
case INTUITIVE:
cout << "使用思维导图和未来规划";
break;
case THINKING:
cout << "强化逻辑推理和问题解决";
break;
case FEELING:
cout << "建立情感共鸣,采用合作学习";
break;
case JUDGING:
cout << "培养时间管理和目标设定";
break;
case PERCEIVING:
cout << "保持灵活应变,鼓励开放讨论";
break;
}
cout << endl;
cout << "按空格键进行教学,ESC键结束" << endl;
int teaching_progress = 0;
int teaching_quality = 0;
bool completed = false;
bool special_event_triggered = false;
// 根据知识水平决定基础教学质量
if(knowledge >= 100) {
teaching_quality = 3; // 教授水平
} else if(knowledge >= 50) {
teaching_quality = 2; // 研究生水平
} else if(knowledge >= 30) {
teaching_quality = 1; // 大学水平
} else {
teaching_quality = 0; // 基础水平
}
// 特殊剧情触发条件
if(current_student.name == "神秘少年" || current_student.name == "欧阳老师") {
special_event_triggered = true;
}
while(1) {
if(axj(VK_SPACE)) {
// 基础进度增加
teaching_progress += (5 + teaching_quality);
tired -= (2 + current_student.difficulty);
cout << "教学进度:" << teaching_progress;
// 根据学生性格显示不同反馈
switch(current_student.personality) {
case EXTROVERTED:
cout << " 学生:老师,这个游戏真好玩!";
break;
case INTROVERTED:
cout << " 学生:嗯...我懂了";
break;
case SENSORY:
cout << " 学生:让我试试看!";
break;
case INTUITIVE:
cout << " 学生:哇,原来是这样!";
break;
case THINKING:
cout << " 学生:这个逻辑我明白了";
break;
case FEELING:
cout << " 学生:老师您真好!";
break;
case JUDGING:
cout << " 学生:我会按照计划学习的";
break;
case PERCEIVING:
cout << " 学生:这个新方法很有趣!";
break;
}
// 特殊剧情触发
if(!special_event_triggered && teaching_progress >= 30) {
special_event_triggered = true;
// 神秘少年特殊剧情
if(current_student.name == "神秘少年") {
cout << endl;
cout << "‌*** 特殊剧情:神秘少年的挑战 ***‌" << endl;
cout << "神秘少年突然说:老师,我们来玩个游戏吧!" << endl;
cout << "如果你能解答我的问题,我会给你双倍报酬!" << endl;
// 玩家选择:是否接受挑战
cout << "1. 接受挑战(风险高,收益高)" << endl;
cout << "2. 继续正常教学(稳定收益)" << endl;
int challenge_choice = 0;
while(challenge_choice == 0) {
if(pdbj(12,1,1,20,10,"1. 接受挑战")) {
challenge_choice = 1;
}
if(pdbj(13,1,1,20,11,"2. 继续教学")) {
challenge_choice = 2;
}
}
if(challenge_choice == 1) {
// 挑战成功概率基于玩家知识水平
int challenge_success_rate = min(90, knowledge);
int challenge_roll = rand() % 100;
if(challenge_roll < challenge_success_rate) {
cout << "恭喜!你成功解答了神秘少年的问题!" << endl;
teaching_quality += 2; // 大幅提升教学质量
} else {
cout << "很遗憾,你未能解答神秘少年的问题。" << endl;
}
}
cout << endl;
Sleep(300);
}
if(axj(VK_ESCAPE)) {
break;
}
if(tired <= 0) {
cout << "体力耗尽,无法继续教学!" << endl;
Sleep(1000);
break;
}
if(teaching_progress >= 100) {
completed = true;
break;
}
}
// 计算报酬
int base_salary = current_student.base_pay;
int quality_bonus = teaching_quality * 30;
int completion_bonus = completed ? 80 : 0;
// 特殊能力加成
int special_bonus = 0;
if(!current_student.special_ability.empty()) {
special_bonus = 0;
} else {
// 根据特殊能力给予额外奖励
if(current_student.special_ability == "数学天才") {
special_bonus = 60;
} else if(current_student.special_ability == "语言天赋") {
special_bonus = 50;
} else if(current_student.special_ability == "编程高手") {
special_bonus = 100;
}
}
int total_income = (base_salary + quality_bonus + completion_bonus + special_bonus) * teaching_multiplier;
money += total_income;
system("cls");
cout << "=== 家教工作结束 ===" << endl;
cout << "学生:" << current_student.name << endl;
cout << "基础工资:" << base_salary << "元" << endl;
if(quality_bonus > 0) {
cout << "教学质量奖励:" << quality_bonus << "元" << endl;
}
if(completion_bonus > 0) {
cout << "完成课时奖励:" << completion_bonus << "元" << endl;
}
if(special_bonus > 0) {
cout << "特殊能力奖励:" << special_bonus << "元" << endl;
}
cout << "总收入:" << total_income << "元" << endl;
cout << "当前余额:" << money << "元" << endl;
// 知识水平提升(基于教学难度和学生特殊能力)
if(completed) {
int knowledge_gain = 2 + current_student.difficulty;
if(!current_student.special_ability.empty()) {
knowledge_gain += 1; // 特殊学生提供更多经验
}
knowledge += knowledge_gain;
cout << "教学相长,知识水平+" << knowledge_gain << endl;
}
// 欧阳老师特殊剧情 - 智慧传承
if(current_student.name == "欧阳老师" && completed) {
cout << "‌*** 特殊奖励:智慧传承 ***‌" << endl;
cout << "欧阳老师对你说:年轻人,你的教学很有潜力。" << endl;
cout << "作为回报,我传授你一些人生智慧。" << endl;
knowledge += 10; // 大量知识提升
cout << "获得欧阳老师的智慧传承,知识水平+10!" << endl;
}
Sleep(3000);
}
void fangdichan() {
system("cls");
Sleep(100);
// 经济限制检查
if(money < 1000000) {
cout << "=== 资金不足 ===" << endl;
cout << "当前现金:" << money << "元" << endl;
cout << "房地产开发商需要100万启动资金!" << endl;
Sleep(3000);
return;
}
cout << "=== 房地产开发商工作 ===" << endl;
cout << "启动资金:100万元" << endl;
cout << "当前现金:" << money << "元" << endl;
cout << "请选择开发项目:" << endl;
cout << "1. 住宅小区开发(投资50万,收益80万)" << endl;
cout << "2. 商业中心建设(投资80万,收益120万)" << endl;
cout << "3. 豪华别墅项目(投资150万,收益200万)" << endl;
cout << "按ESC返回" << endl;
int selected_project = 0;
while(1) {
if(pdbj(5,1,1,25,2,"1. 住宅小区开发")) {
selected_project = 1;
break;
}
if(pdbj(6,1,1,25,3,"2. 商业中心建设")) {
selected_project = 2;
break;
}
if(pdbj(7,1,1,25,4,"3. 豪华别墅项目")) {
selected_project = 3;
break;
}
if(axj(VK_ESCAPE)) {
return;
}
}
// 处理选择的开发项目
int investment = 0;
int profit = 0;
string project_name;
switch(selected_project) {
case 1: // 住宅小区
investment = 500000;
profit = 800000;
project_name = "住宅小区开发";
break;
case 2: // 商业中心
investment = 800000;
profit = 1200000;
project_name = "商业中心建设";
break;
case 3: // 豪华别墅
investment = 1500000;
project_name = "豪华别墅项目";
break;
}
// 二次资金检查
if(money < investment) {
cout << "资金不足,无法启动该项目!" << endl;
Sleep(2000);
return;
}
// 项目执行过程
system("cls");
cout << "=== " << project_name << " ===" << endl;
cout << "项目投资:" << investment << "元" << endl;
cout << "预计收益:" << profit << "元" << endl;
cout << "按空格键推进项目进度" << endl;
int progress = 0;
bool project_success = true;
while(1) {
if(axj(VK_SPACE)) {
progress += 10;
tired -= 5;
cout << "项目进度:" << progress << "%" << endl;
// 随机事件:可能影响项目收益
int random_event = rand() % 100;
if(random_event < 10) { // 10%概率遇到问题
cout << "?? 遇到施工问题,需要额外处理!" << endl;
}
Sleep(500);
}
if(axj(VK_ESCAPE)) {
project_success = false;
break;
}
if(tired <= 20) {
cout << "体力不足,无法继续推进项目!" << endl;
project_success = false;
Sleep(1000);
break;
}
if(progress >= 100) {
break;
}
}
// 结算收益
if(project_success) {
money -= investment; // 扣除投资
money += profit; // 获得收益
knowledge += 5; // 经验积累
system("cls");
cout << "=== 项目完成 ===" << endl;
cout << "项目名称:" << project_name << endl;
cout << "投资金额:" << investment << "元" << endl;
cout << "收益金额:" << profit << "元" << endl;
cout << "净利润:" << (profit - investment) << "元" << endl;
cout << "知识水平+5" << endl;
} else {
cout << "项目中断,投资损失!" << endl;
money -= investment * 0.3; // 损失30%投资
}
Sleep(3000);
}
//民以食为天
void bdje(int tired) {
if(tired < 10) {
cout << "极度饥饿,急需进食!";
} else if(tired < 30) {
cout << "非常饥饿,需要吃饭";
} else if(tired < 50) {
cout << "比较饥饿";
} else if(tired == 50) {
cout << "肚子不算饿";
} else if(tired < 80) {
cout << "饱了";
} else if(tired < 90) {
cout << "很饱";
} else {
cout << "太撑了,不能再吃了!";
}
}
void chifan() {
system("cls");
Sleep(1000);
cout << "=== 餐饮系统 ===" << endl;
cout << "当前饥饿状态:";
bdje(tired);
cout<<endl;
cout << "请选择餐饮方式:" << endl;
cout << "1. 快餐 (10元,恢复20体力)" << endl;
cout << "2. 自助餐 (30元,恢复50体力)" << endl;
cout << "3. 高级餐厅 (80元,恢复80体力)" << endl;
cout << "4. 豪华大餐 (150元,恢复100体力)" << endl;
cout << "5. 自己做饭 (5元,恢复15体力)" << endl;
cout << "按ESC返回" << endl;
int selected_option = 0;
while(1) {
// 显示选项按钮
if(pdbj(4,1,1,15,2,"1. 快餐 (10元")) {
selected_option = 1;
break;
}
if(pdbj(5,1,1,15,3,"2. 自助餐 (30元")) {
selected_option = 2;
break;
}
if(pdbj(6,1,1,15,4,"3. 高级餐厅 (80元")) {
selected_option = 3;
break;
}
if(pdbj(7,1,1,15,5,"4. 豪华大餐 (150元")) {
selected_option = 4;
break;
}
if(pdbj(8,1,1,15,6,"5. 自己做饭 (5元")) {
selected_option = 5;
break;
}
if(axj(VK_ESCAPE)) {
return;
}
}
Sleep(100);
system("cls");
// 处理选择的餐饮方式
switch(selected_option) {
case 1: // 快餐
if(money < 10) {
cout << "余额不足,无法享用快餐!" << endl;
Sleep(1000);
return;
}
if(tired > 90) {
cout << "已经太饱了,吃不下了!" << endl;
Sleep(1000);
return;
}
money -= 10;
tired += 20;
cout << "享用快餐,体力恢复20点!" << endl;
break;
case 2: // 自助餐
if(money < 30) {
cout << "余额不足,无法享用自助餐!" << endl;
Sleep(1000);
return;
}
if(tired > 80) {
cout << "已经比较饱了,建议选择更便宜的餐饮!" << endl;
Sleep(1000);
return;
}
money -= 30;
tired += 50;
cout << "享用自助餐,体力恢复50点!" << endl;
break;
case 3: // 高级餐厅
if(money < 80) {
cout << "余额不足,无法享用高级餐厅!" << endl;
Sleep(1000);
return;
}
if(tired > 50) {
cout << "当前体力充足,建议选择更经济的餐饮!" << endl;
Sleep(1000);
return;
}
money -= 80;
tired += 80;
cout << "享用高级餐厅美食,体力恢复80点!" << endl;
break;
case 4: // 豪华大餐
if(money < 150) {
cout << "余额不足,无法享用豪华大餐!" << endl;
Sleep(1000);
return;
}
if(tired > 20) {
cout << "当前体力尚可,豪华大餐有些浪费!" << endl;
Sleep(1000);
return;
}
money -= 150;
tired = 100; // 直接恢复满体力
cout << "享用豪华大餐,体力完全恢复!" << endl;
break;
case 5: // 自己做饭
if(money < 5) {
cout << "余额不足,无法购买食材!" << endl;
Sleep(1000);
return;
}
money -= 5;
tired += 15;
cout << "自己动手做饭,体力恢复15点!" << endl;
break;
}
// 确保体力不超过上限
if(tired > 100) {
tired = 100;
}
// 显示用餐效果
cout << endl;
cout << "用餐后状态:" << endl;
cout << "余额:" << money << "元" << endl;
cout << "体力:" << tired << "/100" << endl;
Sleep(2000);
}
//
void shangban(int wk) {
if(tired <= 0) {
cout << "先吃饭吧";
Sleep(1000);
return;
}
if(wk == 1) {
banzhuan();
} else if(wk == 2) {
gongchang();
} else if(wk == 3) {
jiajiao();
} else if(wk == 4) { // 新增房地产开发商
fangdichan();
} else {
cout << "你都没有应聘好吗?";
}
Sleep(1000);
return;
}
void ctjb(int work) {
if(work==1) {
cout<<"工地基础材料搬运工";
} else if(work==2) {
cout<<"钟点工人";
} else if(work==3) {
cout<<"私人家教";
}else if(work==4){
cout<<"房地产开发商";
} else {
cout<<"无业游民";
}
}
int main() {
ifstream testFile("game_save.dat");
cout << "是否加载存档文件?(Y/N)//之前没玩过的建议不要加载,否则会遇见0元的尴尬情况" << endl;
char choice;
cin >> choice;
if (choice == 'Y' || choice == 'y') {
loadGame();
}
testFile.close();
system("mode con cols=150 lines=50");
srand(time(0));
cout<<"======================================================================================================================================================"<<endl;
cout<<" 欢迎来到莫尔德帝国,你要在这里生活下去了"<<endl;
Sleep(1000);
cout<<" 我先给你200,等你钱够多了我再来找你哦~"<<endl;
Sleep(5000);
system("cls");
cout<<"那人是谁?算了不管了,这个地方——算了不管了,先解决温饱吧";
Sleep(5000);
system("cls");
while(money>=0) {
// 在工作、学习、吃饭函数结束时调用
if(money>=100000000) {
system("cls");
cout<<"你成为了全帝国数一数二的富翁,却再也没见过那人了~";
return 0;
}
if(knowledge>=500) {
system("cls");
cout<<"你通过努力学习,成为了一名教授,事迹感人,教授不是你的终点,而是你的起点,加油!";
return 0;
}
ydgb(1,1);
cout<<"余额:"<<money<<" ";
bdje(tired);
cout<<endl;
cout<<"当前职业:";
ctjb(work);
cout<<" 学历:";
knowledge_level(knowledge);
if(pdbj(3,1,1,8,15,"选择职业")) {
system("cls");
work=job();
system("cls");
Sleep(100);
}
if(pdbj(4,1,1,4,15,"工作")) {
system("cls");
shangban(work);
system("cls");
Sleep(100);
}
if(pdbj(5,1,1,4,15,"吃饭")) {
system("cls");
chifan();
system("cls");
Sleep(100);
}
if(pdbj(6,1,1,4,15,"学习")) {
system("cls");
study = learn_subject();
system("cls");
study_process(study);
system("cls");
Sleep(100);
}
// 在主循环的按钮部分添加
if(pdbj(7,1,1,8,15,"银行服务")) {
system("cls");
bank();
system("cls");
Sleep(100);
}
// 在主循环的按钮部分添加
if(pdbj(8,1,1,8,15,"保存游戏")) {
saveGame();
Sleep(1000);
system("cls");
}
}
system("cls");
cout<<"你破产了,流浪街头……";
return 0;
}