恋爱向剧情游戏(要好好选择哦)
2025-06-21 23:24:06
发布于:广东
#include <iostream>
#include <string>
#include <vector>
#include <cstdlib>
#include <ctime>
#include <random>
#include <windows.h>
#include <chrono>
#include <thread>
#include <iomanip>
#include <algorithm>
using namespace std;
// 颜色定义
enum Color {
BLACK = 0,
BLUE = 1,
GREEN = 2,
CYAN = 3,
RED = 4,
MAGENTA = 5,
YELLOW = 6,
WHITE = 7,
GRAY = 8,
LIGHT_BLUE = 9,
LIGHT_GREEN = 10,
LIGHT_CYAN = 11,
LIGHT_RED = 12,
LIGHT_MAGENTA = 13,
LIGHT_YELLOW = 14,
BRIGHT_WHITE = 15
};
// 设置控制台颜色
void setColor(Color foreground, Color background = BLACK) {
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsole, foreground | (background << 4));
}
// 清屏函数
void clearScreen() {
system("cls");
}
// 角色类
class Character {
public:
string name;
int kindness;
int trust;
int intimacy;
bool hasConfessed;
bool isDating;
bool hasKissed;
Character(string n) : name(n), kindness(50), trust(50), intimacy(0),
hasConfessed(false), isDating(false), hasKissed(false) {
}
void adjustTraits(int k, int t, int i) {
kindness = max(0, min(100, kindness + k));
trust = max(0, min(100, trust + t));
intimacy = max(0, min(100, intimacy + i));
}
};
// 选择类
class Choice {
public:
string text;
int kindnessEffect;
int trustEffect;
int intimacyEffect;
int nextScene;
vector<pair<int, int>> randomEvents; // 随机事件概率和影响
string memory; // 选择后添加的记忆
Choice(string t, int k, int t_eff, int i, int next, string mem = "")
: text(t), kindnessEffect(k), trustEffect(t_eff), intimacyEffect(i),
nextScene(next), memory(mem) {
}
void addRandomEvent(int probability, int effect) {
randomEvents.push_back(make_pair(probability, effect));
}
};
// 场景类
class Scene {
public:
string description;
vector<Choice> choices;
vector<pair<string, int>> randomDescriptions;
Color textColor;
bool isEnding;
Scene(string desc, Color color = WHITE, bool ending = false)
: description(desc), textColor(color), isEnding(ending) {
}
void addChoice(Choice choice) {
choices.push_back(choice);
}
void addRandomDescription(string desc, int probability) {
randomDescriptions.push_back(make_pair(desc, probability));
}
string getRandomDescription() const {
if (randomDescriptions.empty()) return description;
int total = 0;
for (const auto& rd : randomDescriptions) {
total += rd.second;
}
int roll = rand() % total;
int cumulative = 0;
for (const auto& rd : randomDescriptions) {
cumulative += rd.second;
if (roll < cumulative) {
return rd.first;
}
}
return description;
}
};
// 随机数生成器
int getRandomInt(int min, int max) {
static random_device rd;
static mt19937 gen(rd());
uniform_int_distribution<> dis(min, max);
return dis(gen);
}
// 游戏类
class Game {
private:
Character player;
Character loveInterest;
vector<Scene> scenes;
int currentScene;
vector<string> memories;
time_t startTime;
int dateCount;
bool gameOver;
// 显示状态条
void showStatusBar() {
setColor(LIGHT_CYAN);
cout << "\n════════════════════════════════════════\n";
cout << "当前状态:" << loveInterest.name << " - ";
// 好感度
setColor(LIGHT_MAGENTA);
cout << "❤好感度:" << loveInterest.intimacy << " ";
// 信任度
setColor(LIGHT_BLUE);
cout << "🔒信任度:" << loveInterest.trust << " ";
// 友善度
setColor(LIGHT_GREEN);
cout << "☀友善度:" << loveInterest.kindness << "\n";
// 关系状态
if (loveInterest.hasKissed) {
setColor(LIGHT_RED);
cout << "💋 已亲吻";
}
else if (loveInterest.isDating) {
setColor(LIGHT_MAGENTA);
cout << "💑 恋爱中";
}
else if (loveInterest.hasConfessed) {
setColor(LIGHT_BLUE);
cout << "💌 已表白";
}
setColor(LIGHT_CYAN);
cout << "\n════════════════════════════════════════\n\n";
}
// 场景转换效果
void sceneTransition(string message = "场景转换中") {
setColor(LIGHT_BLUE);
cout << "\n" << message;
for (int i = 0; i < 3; i++) {
cout << ".";
cout.flush();
this_thread::sleep_for(chrono::milliseconds(300));
}
clearScreen();
}
// 打字机效果显示文本
void typewriterEffect(const string& text, Color color = WHITE, int delay = 30) {
setColor(color);
for (char c : text) {
cout << c;
cout.flush();
this_thread::sleep_for(chrono::milliseconds(delay));
// 检查按键加速
if (GetAsyncKeyState(VK_SPACE) & 0x8000) {
delay = 0;
}
}
cout << endl;
}
// 显示选择菜单
int showChoiceMenu(const vector<Choice>& choices) {
int choice;
do {
setColor(WHITE);
for (int i = 0; i < choices.size(); i++) {
cout << choices[i].text << endl;
}
setColor(YELLOW);
cout << "\n请输入你的选择 (1-" << choices.size() << "): ";
cin >> choice;
if (cin.fail() || choice < 1 || choice > choices.size()) {
setColor(LIGHT_RED);
cout << "无效的选择,请重新输入。\n";
cin.clear();
cin.ignore(10000, '\n');
}
else {
break;
}
} while (true);
return choice - 1;
}
// 添加记忆
void addMemory(const string& memory) {
if (!memory.empty()) {
memories.push_back(memory);
}
}
public:
Game() : player("林薇"), loveInterest("江辰"), currentScene(0),
dateCount(0), gameOver(false) {
srand(time(0));
startTime = time(0);
initializeScenes();
}
void initializeScenes() {
// 场景0: 介绍
Scene intro("暮春的雨丝如银线般斜织在图书馆的玻璃上,你抱着一摞厚重的专业书,正为突来的暴雨发愁。这时,一个身影撑着天青色的雨伞驻足在你面前。\n"
"他的白色连帽衫被雨水氤氲出淡淡水痕,细碎的刘海沾着晶莹的水珠,深棕色的眼睛弯成月牙:\"同学,需要一起走吗?我送你到宿舍楼下。\"", LIGHT_CYAN);
intro.addChoice(Choice("1. 抬眸对上他的目光,指尖轻轻拂过伞柄:\"谢谢,不过这雨看起来一时半会停不了,能搭个伞吗?\"",
5, 5, 5, 1, "第一次遇见江辰,他为我撑伞"));
intro.addChoice(Choice("2. 垂眸将书抱得更紧些,指尖微微蜷曲:\"不用了,谢谢,我再等等吧。\"",
3, 0, 0, 2, "拒绝了江辰的好意"));
intro.addChoice(Choice("3. 犹豫片刻后接过伞:\"那...谢谢你了\"",
4, 3, 3, 3, "江辰为我撑伞"));
scenes.push_back(intro);
// 场景1: 聊天成功
Scene chatSuccess("雨滴在伞面奏出轻快的旋律,江辰的帆布鞋踩过积雨的青石板路,溅起细小的水花。他忽然驻足,指尖点向图书馆前的樱花树:\"你看,雨打花落的样子像不像白色的蝴蝶?\"", LIGHT_BLUE);
chatSuccess.addChoice(Choice("1. 驻足凝视纷飞的花雨,睫毛沾着细碎的水珠:\"真的呢,像一场寂静的舞蹈。对了,还不知道你学什么专业的?\"",
5, 5, 10, 4, "和江辰聊起樱花雨"));
chatSuccess.addChoice(Choice("2. 加快脚步避开飘来的花瓣,耳尖微微发红:\"快走吧,雨好像又大了。\"",
3, 7, 5, 5, "匆匆结束了与江辰的同行"));
chatSuccess.addChoice(Choice("3. 拿出手机拍照:\"好美啊,我要拍下来\"",
4, 4, 8, 6, "和江辰一起欣赏樱花雨"));
scenes.push_back(chatSuccess);
// 场景2: 礼貌离开
Scene politeLeave("你礼貌地感谢了江辰后离开。几天后,你在校园里又遇到了他。他抱着一摞书,正艰难地试图打开教室的门。", YELLOW);
politeLeave.addChoice(Choice("1. 快步上前帮他扶住门:\"需要帮忙吗?\"",
5, 3, 3, 7, "帮助了抱书的江辰"));
politeLeave.addChoice(Choice("2. 犹豫了一下,还是低头走开了",
-2, -3, -1, 8, "避开了江辰"));
politeLeave.addChoice(Choice("3. 假装没看见,但偷偷回头看他",
0, -1, 2, 9, "偷偷关注江辰"));
scenes.push_back(politeLeave);
// 场景3: 犹豫接受
Scene hesitantAccept("你犹豫地接过伞,两人并肩走在雨中。江辰刻意放慢脚步配合你的节奏,伞微微向你这边倾斜。", LIGHT_GREEN);
hesitantAccept.addChoice(Choice("1. 注意到他的体贴,心里一暖",
5, 5, 8, 10, "注意到江辰的体贴"));
hesitantAccept.addChoice(Choice("2. 觉得不自在,加快脚步",
2, 0, 0, 11, "匆匆结束了与江辰的同行"));
hesitantAccept.addChoice(Choice("3. 主动聊起天气:\"这雨下得真突然\"",
3, 3, 5, 12, "和江辰聊起天气"));
scenes.push_back(hesitantAccept);
// 场景4: 询问专业
Scene askMajor("\"我是计算机系的,\"江辰微笑着回答,\"不过我对文学也很感兴趣。\"他指了指你怀里的《百年孤独》:\"这本书我很喜欢。\"", LIGHT_MAGENTA);
askMajor.addChoice(Choice("1. 惊喜地回应:\"真的吗?我最喜欢马尔克斯了!\"",
10, 5, 15, 13, "发现和江辰有共同喜欢的作家"));
askMajor.addChoice(Choice("2. 礼貌地微笑:\"是吗...\"",
3, 3, 5, 14, "礼貌回应江辰"));
askMajor.addChoice(Choice("3. 借机深入交流:\"你觉得布恩迪亚家族的命运...\"",
7, 7, 12, 15, "和江辰深入讨论文学"));
scenes.push_back(askMajor);
// 场景5: 加快脚步
Scene hurryUp("你们匆匆走到宿舍楼下。江辰的右肩已经被雨水打湿,但他似乎并不在意。\"到了,\"他微笑着说,\"改天见。\"", CYAN);
hurryUp.addChoice(Choice("1. 道谢后匆匆离开",
3, 3, 3, 16, "简单道别江辰"));
hurryUp.addChoice(Choice("2. 注意到他湿了的肩膀:\"你的衣服...\"",
5, 5, 10, 17, "注意到江辰为我淋湿了肩膀"));
hurryUp.addChoice(Choice("3. 主动提出还伞:\"怎么把伞还给你?\"",
5, 7, 8, 18, "找借口再次见到江辰"));
scenes.push_back(hurryUp);
// 场景6: 拍照留念
Scene takePhoto("你拿出手机拍照,江辰自然地站到一旁为你挡雨。\"要帮你拍吗?\"他问道,指了指你和樱花树。", LIGHT_RED);
takePhoto.addChoice(Choice("1. 害羞地点头:\"好啊...\"",
5, 5, 12, 19, "江辰为我拍照"));
takePhoto.addChoice(Choice("2. 拒绝:\"不用了,谢谢\"",
3, 3, 5, 20, "拒绝了江辰拍照的提议"));
takePhoto.addChoice(Choice("3. 提议合照:\"我们一起拍吧\"",
7, 7, 15, 21, "和江辰的第一张合照"));
scenes.push_back(takePhoto);
// 场景7: 帮助开门
Scene helpOpenDoor("你帮他扶住门,江辰感激地笑了:\"谢谢,你救了我一命。\"他幽默地说,\"这些书差点要了我的命。\"", LIGHT_YELLOW);
helpOpenDoor.addChoice(Choice("1. 开玩笑回应:\"那我该收救命恩人的费用了\"",
5, 5, 10, 22, "和江辰开起了玩笑"));
helpOpenDoor.addChoice(Choice("2. 好奇地问:\"这是什么书?\"",
5, 3, 8, 23, "询问江辰看的书"));
helpOpenDoor.addChoice(Choice("3. 简单点头后离开",
3, 0, 3, 24, "简单帮助了江辰"));
scenes.push_back(helpOpenDoor);
// 场景8: 低头走开
Scene walkAway("你低头走开,但心里有些后悔。几天后,你在食堂再次遇到江辰,他正独自用餐。", GRAY);
walkAway.addChoice(Choice("1. 鼓起勇气上前打招呼",
5, 5, 5, 25, "主动向江辰打招呼"));
walkAway.addChoice(Choice("2. 选择远离的位置坐下",
-2, -3, -3, 26, "再次避开江辰"));
walkAway.addChoice(Choice("3. 买杯饮料放在他桌上然后离开",
7, 3, 8, 27, "匿名给江辰送了饮料"));
scenes.push_back(walkAway);
// 场景9: 偷偷回头
Scene glanceBack("你假装没看见,但忍不住回头偷看。就在这时,江辰似乎感应到什么,突然抬头看向你的方向。", MAGENTA);
glanceBack.addChoice(Choice("1. 慌忙转身快步离开",
-2, -3, -2, 28, "被江辰发现偷看"));
glanceBack.addChoice(Choice("2. 尴尬地挥手示意",
3, 0, 3, 29, "尴尬地向江辰打招呼"));
glanceBack.addChoice(Choice("3. 走过去帮忙:\"需要帮忙吗?\"",
5, 5, 8, 30, "鼓起勇气帮助江辰"));
scenes.push_back(glanceBack);
// 场景10: 注意到体贴
Scene noticeKindness("你注意到江辰的右肩已经湿透,而他刻意将伞偏向你这边。他的睫毛上挂着细小的雨珠,在路灯下闪闪发光。", LIGHT_GREEN);
noticeKindness.addChoice(Choice("1. 轻声说:\"你的肩膀都湿了...\"并悄悄把伞推回去一点",
7, 8, 12, 31, "注意到江辰的体贴"));
noticeKindness.addChoice(Choice("2. 假装没看见,但心里记下了这份体贴",
5, 5, 10, 32, "暗自记下江辰的体贴"));
noticeKindness.addChoice(Choice("3. 突然停下:\"我们换一边走吧\"",
6, 7, 15, 33, "主动关心江辰"));
scenes.push_back(noticeKindness);
// 场景11: 匆匆结束同行
Scene rushEnd("你匆匆告别江辰,跑进宿舍楼。回头时,看到他仍站在原地,微笑着向你挥手。雨幕中,他的身影渐渐模糊。", BLUE);
rushEnd.addChoice(Choice("1. 发消息感谢他:\"刚才谢谢你送伞\"",
5, 5, 8, 34, "发消息感谢江辰"));
rushEnd.addChoice(Choice("2. 没有进一步联系",
0, -2, -1, 35, "没有联系江辰"));
rushEnd.addChoice(Choice("3. 在窗边偷偷看他离开",
3, 0, 5, 36, "偷偷目送江辰离开"));
scenes.push_back(rushEnd);
// 场景12: 聊起天气
Scene talkWeather("你们聊起这场突如其来的春雨。江辰说起他家乡的雨季,眼中闪烁着怀念的光芒。\"每到这个时候,妈妈总会煮姜茶...\"他突然停住,不好意思地笑了。", CYAN);
talkWeather.addChoice(Choice("1. 好奇地追问:\"你家乡在哪里?\"",
5, 5, 10, 37, "了解江辰的家乡"));
talkWeather.addChoice(Choice("2. 分享自己家乡的雨季",
7, 7, 12, 38, "分享家乡的故事"));
talkWeather.addChoice(Choice("3. 提议:\"下次带点姜茶给你\"",
8, 5, 15, 39, "提出给江辰带姜茶"));
scenes.push_back(talkWeather);
// 场景13: 共同喜欢的作家
Scene commonAuthor("你们惊喜地发现都喜欢马尔克斯。江辰的眼睛亮了起来:\"《霍乱时期的爱情》里,我最喜欢弗洛伦蒂诺等待的五十三年...\"他的声音温柔而坚定。", LIGHT_MAGENTA);
commonAuthor.addChoice(Choice("1. 激动地讨论书中的情节",
10, 8, 15, 40, "和江辰热烈讨论文学"));
commonAuthor.addChoice(Choice("2. 害羞地听他说,偶尔回应",
5, 5, 12, 41, "听江辰谈论文学"));
commonAuthor.addChoice(Choice("3. 提议一起读同一本书然后讨论",
8, 10, 18, 42, "提议和江辰共读一本书"));
scenes.push_back(commonAuthor);
// 场景14: 礼貌回应
Scene politeResponse("江辰似乎察觉到你兴趣不大,便转移了话题。\"快到宿舍了,\"他指了指前方,\"你是几号楼的?\"", YELLOW);
politeResponse.addChoice(Choice("1. 如实回答并反问",
5, 5, 8, 43, "告诉江辰宿舍号"));
politeResponse.addChoice(Choice("2. 含糊回答:\"就在前面\"",
3, 0, 3, 44, "含糊回答江辰"));
politeResponse.addChoice(Choice("3. 开玩笑:\"怎么,想送我回宿舍?\"",
7, 5, 12, 45, "和江辰开玩笑"));
scenes.push_back(politeResponse);
// 场景15: 深入讨论文学
Scene deepDiscussion("你们沉浸在文学讨论中,不知不觉走到了宿舍楼下。雨已经停了,但谁都没有提起该告别的事。夕阳透过云层,为湿漉漉的地面镀上一层金色。", LIGHT_BLUE);
deepDiscussion.addChoice(Choice("1. 提议:\"要不去食堂边吃边聊?\"",
8, 7, 15, 46, "邀请江辰共进晚餐"));
deepDiscussion.addChoice(Choice("2. 依依不舍地告别",
5, 5, 12, 47, "与江辰依依惜别"));
deepDiscussion.addChoice(Choice("3. 交换联系方式方便继续讨论",
7, 10, 18, 48, "和江辰交换联系方式"));
scenes.push_back(deepDiscussion);
// 场景16: 简单道别
Scene simpleGoodbye("你简单道别后转身离开,江辰站在原地目送你进入宿舍楼。雨后的空气中弥漫着泥土的清香。", GRAY);
simpleGoodbye.addChoice(Choice("1. 进入宿舍前回头看一眼",
3, 0, 5, 49, "回头看了江辰一眼"));
simpleGoodbye.addChoice(Choice("2. 直接进入宿舍",
0, 0, 0, 49, "直接离开了"));
simpleGoodbye.addChoice(Choice("3. 突然转身挥手",
5, 3, 8, 49, "最后向江辰挥手"));
scenes.push_back(simpleGoodbye);
// 场景17: 注意到淋湿的肩膀
Scene noticeWetShoulder("你指着江辰湿透的右肩,他低头看了看,无所谓地笑了笑:\"没关系,反正快到了。\"", LIGHT_BLUE);
noticeWetShoulder.addChoice(Choice("1. 坚持把伞推过去一点",
7, 8, 15, 50, "坚持与江辰分享雨伞"));
noticeWetShoulder.addChoice(Choice("2. 拿出纸巾递给他",
5, 5, 10, 51, "给江辰递纸巾"));
noticeWetShoulder.addChoice(Choice("3. 加快脚步结束尴尬",
3, 0, 5, 52, "匆匆结束同行"));
scenes.push_back(noticeWetShoulder);
// 场景18: 还伞计划
Scene returnUmbrella("听到你问还伞的事,江辰眼睛一亮:\"周三下午我都在图书馆三楼自习,你可以那时候给我。\"", LIGHT_GREEN);
returnUmbrella.addChoice(Choice("1. 认真记下时间地点",
5, 7, 12, 53, "计划去图书馆还伞"));
returnUmbrella.addChoice(Choice("2. 开玩笑说:\"不怕我不还吗?\"",
7, 5, 15, 54, "和江辰开玩笑"));
returnUmbrella.addChoice(Choice("3. 提议:\"要不一起吃个饭时还你?\"",
8, 5, 18, 55, "邀请江辰吃饭"));
scenes.push_back(returnUmbrella);
// 场景19: 被拍照
Scene beingPhotographed("江辰接过手机,后退几步找角度。\"头稍微向左偏一点...对,就是这样。\"他的声音透过雨幕传来,温柔而专注。", LIGHT_MAGENTA);
beingPhotographed.addChoice(Choice("1. 自然地微笑",
5, 5, 12, 56, "让江辰拍照"));
beingPhotographed.addChoice(Choice("2. 害羞地低头",
3, 3, 15, 57, "害羞地被拍照"));
beingPhotographed.addChoice(Choice("3. 做鬼脸",
7, 3, 10, 58, "对江辰做鬼脸"));
scenes.push_back(beingPhotographed);
// 场景20: 拒绝拍照
Scene refusePhoto("你婉拒了拍照提议,江辰理解地点点头:\"也是,下雨天不方便。\"他默默站回你身边继续撑伞。", BLUE);
refusePhoto.addChoice(Choice("1. 为拒绝感到抱歉",
3, 5, 5, 59, "为拒绝拍照道歉"));
refusePhoto.addChoice(Choice("2. 转移话题",
5, 0, 3, 60, "转移话题"));
refusePhoto.addChoice(Choice("3. 突然改变主意",
7, 3, 10, 61, "改变主意让江辰拍照"));
scenes.push_back(refusePhoto);
// 场景21: 第一张合照
Scene firstPhotoTogether("你们凑在手机前自拍,江辰的手稳稳举着手机,雨滴落在屏幕上形成模糊的光斑。\"三、二、一...\"他轻声倒数。", LIGHT_RED);
firstPhotoTogether.addChoice(Choice("1. 自然地靠向他",
8, 7, 18, 62, "和江辰亲密合照"));
firstPhotoTogether.addChoice(Choice("2. 保持距离但微笑",
5, 5, 12, 63, "保持距离合照"));
firstPhotoTogether.addChoice(Choice("3. 突然转头看他",
7, 3, 15, 64, "合照时看江辰"));
scenes.push_back(firstPhotoTogether);
// 场景22: 开玩笑回应
Scene jokeResponse("听到你的玩笑,江辰愣了一下随即笑出声:\"那救命恩人想要什么报酬?一杯奶茶够吗?\"他的眼睛弯成月牙。", LIGHT_YELLOW);
jokeResponse.addChoice(Choice("1. 顺势约定奶茶约会",
8, 7, 15, 65, "和江辰约定喝奶茶"));
jokeResponse.addChoice(Choice("2. 笑着说不用了",
5, 5, 10, 66, "婉拒江辰的好意"));
jokeResponse.addChoice(Choice("3. 开玩笑讨价还价",
7, 5, 12, 67, "和江辰讨价还价"));
scenes.push_back(jokeResponse);
// 场景23: 询问书籍
Scene askAboutBooks("江辰看了看怀里的书:\"这些啊,是下周研讨课要用的参考书。\"他抽出一本《算法导论》:\"这本简直能当凶器。\"", CYAN);
askAboutBooks.addChoice(Choice("1. 表示自己也感兴趣",
5, 5, 12, 68, "对江辰的课程表示兴趣"));
askAboutBooks.addChoice(Choice("2. 同情他的课业",
3, 3, 8, 69, "同情江辰的课业"));
askAboutBooks.addChoice(Choice("3. 提出帮他拿一些",
7, 8, 15, 70, "提出帮江辰拿书"));
scenes.push_back(askAboutBooks);
// 场景24: 简单帮助
Scene simpleHelp("你简单点头后离开,但走出几步后听到书掉在地上的声音。回头看到江辰正手忙脚乱地捡拾散落的书本。", MAGENTA);
simpleHelp.addChoice(Choice("1. 回去帮忙",
5, 5, 10, 71, "回去帮助江辰"));
simpleHelp.addChoice(Choice("2. 假装没看见",
-2, -3, -5, 72, "无视江辰的困境"));
simpleHelp.addChoice(Choice("3. 叫其他人帮忙",
3, 0, 5, 73, "叫别人帮助江辰"));
scenes.push_back(simpleHelp);
// 场景25: 食堂打招呼
Scene cafeteriaGreet("你鼓起勇气走到江辰桌前,他抬头看见你,明显愣了一下随即露出笑容:\"好巧,要一起坐吗?\"", LIGHT_GREEN);
cafeteriaGreet.addChoice(Choice("1. 欣然接受",
5, 5, 12, 74, "和江辰共进午餐"));
cafeteriaGreet.addChoice(Choice("2. 婉拒但聊几句",
3, 3, 8, 75, "和江辰简短聊天"));
cafeteriaGreet.addChoice(Choice("3. 表示只是来打招呼",
5, 7, 10, 76, "专门来打招呼"));
scenes.push_back(cafeteriaGreet);
// 场景26: 再次避开
Scene avoidAgain("你选择远离的位置坐下,但忍不住偷看江辰的方向。他似乎察觉到了什么,几次看向你这边。", GRAY);
avoidAgain.addChoice(Choice("1. 快速吃完离开",
0, -2, -3, 77, "避开江辰的目光"));
avoidAgain.addChoice(Choice("2. 发消息解释",
3, 5, 8, 78, "发消息给江辰"));
avoidAgain.addChoice(Choice("3. 最终走过去",
5, 3, 10, 79, "最终还是走向江辰"));
scenes.push_back(avoidAgain);
// 场景27: 匿名饮料
Scene anonymousDrink("你将饮料放在江辰桌上后迅速离开,透过玻璃窗看到他困惑地环顾四周,最后拿起饮料喝了一口。", LIGHT_BLUE);
anonymousDrink.addChoice(Choice("1. 发消息承认",
5, 7, 12, 80, "告诉江辰饮料是你送的"));
anonymousDrink.addChoice(Choice("2. 保持神秘",
3, 3, 10, 81, "保持匿名"));
anonymousDrink.addChoice(Choice("3. 第二天当面提起",
7, 5, 15, 82, "第二天提起饮料"));
scenes.push_back(anonymousDrink);
// 场景28: 偷看被发现
Scene caughtStaring("你慌忙转身离开,心跳如鼓。当晚收到江辰的消息:\"今天在人文楼的是你吗?\"", RED);
caughtStaring.addChoice(Choice("1. 诚实承认",
5, 8, 10, 83, "承认偷看江辰"));
caughtStaring.addChoice(Choice("2. 否认",
-3, -5, -8, 84, "对江辰说谎"));
caughtStaring.addChoice(Choice("3. 转移话题",
0, 0, 5, 85, "转移话题"));
scenes.push_back(caughtStaring);
// 场景29: 尴尬打招呼
Scene awkwardGreeting("你尴尬地挥手,江辰微笑着点头回应。他张嘴想说什么,但你们同时开口又同时停下,气氛更加尴尬。", YELLOW);
awkwardGreeting.addChoice(Choice("1. 主动打破沉默",
5, 5, 8, 86, "主动与江辰交谈"));
awkwardGreeting.addChoice(Choice("2. 快速离开",
0, -2, -3, 87, "再次逃离"));
awkwardGreeting.addChoice(Choice("3. 自嘲地笑",
7, 3, 10, 88, "用幽默化解尴尬"));
scenes.push_back(awkwardGreeting);
// 场景30: 鼓起勇气帮忙
Scene braveHelp("你走过去帮他扶住摇摇欲坠的书本,江辰惊讶地睁大眼睛:\"谢谢...呃,我们是不是见过?\"", LIGHT_CYAN);
braveHelp.addChoice(Choice("1. 提醒他雨天送伞",
5, 5, 12, 89, "提醒江辰之前相遇"));
braveHelp.addChoice(Choice("2. 假装初次见面",
0, -3, -5, 90, "假装不认识"));
braveHelp.addChoice(Choice("3. 开玩笑说:\"你经常这样搭讪吗?\"",
7, 3, 15, 91, "和江辰开玩笑"));
scenes.push_back(braveHelp);
// 场景31-39: 更多互动发展...
Scene libraryMeet("周三,你如约来到图书馆还伞。江辰正在专心看书,阳光透过窗户在他侧脸投下斑驳的光影。", LIGHT_BLUE);
libraryMeet.addChoice(Choice("1. 轻轻敲桌子",
5, 5, 10, 92, "在图书馆找到江辰"));
libraryMeet.addChoice(Choice("2. 放伞在旁边悄悄离开",
3, 0, 5, 93, "悄悄还伞"));
libraryMeet.addChoice(Choice("3. 写张纸条夹在书里",
7, 5, 12, 94, "给江辰留纸条"));
scenes.push_back(libraryMeet);
Scene studyTogether("还伞后,江辰邀请你一起学习。你们安静地各自看书,偶尔交换几句关于课程的看法。", CYAN);
studyTogether.addChoice(Choice("1. 专注学习",
5, 7, 10, 95, "和江辰一起学习"));
studyTogether.addChoice(Choice("2. 偷偷看他",
3, 0, 8, 96, "偷看学习的江辰"));
studyTogether.addChoice(Choice("3. 提议休息一下",
7, 5, 12, 97, "提议休息"));
scenes.push_back(studyTogether);
Scene cafeInvite("学习结束后,江辰犹豫地问:\"学校新开了家咖啡馆,要一起去试试吗?\"", LIGHT_MAGENTA);
cafeInvite.addChoice(Choice("1. 欣然接受",
8, 7, 15, 98, "接受江辰的咖啡邀请"));
cafeInvite.addChoice(Choice("2. 婉拒但有下次",
5, 5, 10, 99, "婉拒但留有余地"));
cafeInvite.addChoice(Choice("3. 提议改天",
7, 5, 12, 100, "提议改天约会"));
scenes.push_back(cafeInvite);
// 连接后续约会和关系发展场景...
// 场景40: 第一次约会
Scene firstDate("周末,你们如约在咖啡馆见面。江辰提前到了,桌上放着一本你曾提过想读的书。他抬头看见你,眼睛瞬间亮了起来。", LIGHT_MAGENTA);
firstDate.addChoice(Choice("1. 惊喜地指着书:\"你怎么知道我想看这个?\"",
10, 8, 20, 50, "江辰记得我想读的书"));
firstDate.addChoice(Choice("2. 害羞地坐下:\"等很久了吗?\"",
7, 7, 15, 51, "第一次约会开始"));
firstDate.addChoice(Choice("3. 拿出自己带给他的小礼物",
8, 10, 18, 52, "给江辰带了礼物"));
scenes.push_back(firstDate);
// 场景41: 误会他有女友
Scene misunderstanding("那个发消息的女生原来是江辰的表妹。他看出你的疑虑,主动解释并给你看了全家福。\"抱歉让你误会了,\"他诚恳地说。", LIGHT_RED);
misunderstanding.addChoice(Choice("1. 如释重负地笑了",
5, 10, 15, 53, "误会解除"));
misunderstanding.addChoice(Choice("2. 假装不在意:\"你不用跟我解释的\"",
0, -5, -3, 54, "假装不在意误会"));
misunderstanding.addChoice(Choice("3. 趁机表白:\"其实我是在吃醋...\"",
10, 8, 20, 55, "向江辰表白"));
scenes.push_back(misunderstanding);
// 场景42: 共读一本书
Scene readTogether("你们约定每周讨论一次读书进度。第三次见面时,江辰带来两张书签,\"我自己做的,\"他不好意思地说,\"希望你喜欢。\"", LIGHT_GREEN);
readTogether.addChoice(Choice("1. 感动地收下:\"我会好好珍藏的\"",
8, 10, 20, 56, "收到江辰手作书签"));
readTogether.addChoice(Choice("2. 提议:\"不如我们互相给对方做一张?\"",
10, 8, 22, 57, "提议交换手作礼物"));
readTogether.addChoice(Choice("3. 开玩笑:\"这么用心,是不是喜欢我啊?\"",
7, 5, 25, 58, "开玩笑试探江辰"));
scenes.push_back(readTogether);
// 场景42: 读书俱乐部
Scene bookClub("你们成立了两人读书俱乐部。第三次讨论时,江辰带来亲手制作的书签,上面精细地绘制了你喜欢的樱花图案。", LIGHT_GREEN);
bookClub.addChoice(Choice("1. 感动地收下并称赞他的手艺",
8, 10, 20, 101, "收到江辰的手作礼物"));
bookClub.addChoice(Choice("2. 提议交换自制书签",
10, 8, 22, 102, "提议交换手工艺品"));
bookClub.addChoice(Choice("3. 开玩笑说:\"这么用心,是不是喜欢我?\"",
7, 5, 25, 103, "试探江辰的心意"));
scenes.push_back(bookClub);
// 场景43: 生日惊喜
Scene birthdaySurprise("你偶然得知今天是江辰生日。下课后,你带着小蛋糕在他常去的咖啡馆等待。他看到你时,眼睛瞬间亮了起来。", LIGHT_MAGENTA);
birthdaySurprise.addChoice(Choice("1. \"生日快乐!\"送上蛋糕",
10, 10, 20, 104, "为江辰庆祝生日"));
birthdaySurprise.addChoice(Choice("2. 假装偶遇再给惊喜",
8, 7, 18, 105, "设计生日惊喜"));
birthdaySurprise.addChoice(Choice("3. 送上精心准备的礼物",
12, 8, 25, 106, "送江辰生日礼物"));
scenes.push_back(birthdaySurprise);
// 场景44: 雨天共伞
Scene rainAgain("又是一个雨天,你在教学楼前躲雨。熟悉的青色雨伞再次出现在头顶,江辰笑着说:\"看来我们又遇到同样的情况了。\"", BLUE);
rainAgain.addChoice(Choice("1. \"这次换我请你喝咖啡吧\"",
8, 7, 18, 107, "回请江辰喝咖啡"));
rainAgain.addChoice(Choice("2. 自然地接过伞柄",
7, 8, 20, 108, "与江辰共撑一把伞"));
rainAgain.addChoice(Choice("3. \"你总是出现在我需要的时候\"",
10, 5, 22, 109, "向江辰表达感谢"));
scenes.push_back(rainAgain);
// 场景45: 深夜聊天
Scene lateNightChat("凌晨两点,你收到江辰的消息:\"还在为明天的报告熬夜吗?\"随后他发来整理好的参考资料。", LIGHT_BLUE);
lateNightChat.addChoice(Choice("1. 视频通话一起熬夜",
10, 12, 25, 110, "与江辰深夜视频"));
lateNightChat.addChoice(Choice("2. 表达感谢并劝他也休息",
8, 10, 20, 111, "关心江辰的作息"));
lateNightChat.addChoice(Choice("3. 开玩笑说:\"这么晚找我,想我了?\"",
7, 5, 22, 112, "深夜调戏江辰"));
scenes.push_back(lateNightChat);
// 场景46: 运动会受伤
Scene sportsInjury("校运会上,江辰在接力赛摔倒。你冲进医务室,看到他膝盖缠着绷带却还笑着安慰队友。", LIGHT_RED);
sportsInjury.addChoice(Choice("1. 心疼地责备他不小心",
5, 8, 18, 113, "关心受伤的江辰"));
sportsInjury.addChoice(Choice("2. 默默帮他处理后续事务",
7, 10, 20, 114, "为江辰善后"));
sportsInjury.addChoice(Choice("3. \"下次比赛我当你专属医护\"",
10, 7, 25, 115, "向江辰承诺照顾"));
scenes.push_back(sportsInjury);
// 场景47: 家庭变故
Scene familyProblem("江辰连续几天没来上课。你得知他母亲住院,带着亲手做的便当去医院找他,在走廊看到他疲惫的背影。", MAGENTA);
familyProblem.addChoice(Choice("1. 轻轻从背后抱住他",
12, 15, 30, 116, "安慰受挫的江辰"));
familyProblem.addChoice(Choice("2. 理性提供实际帮助",
10, 12, 25, 117, "帮江辰解决实际问题"));
familyProblem.addChoice(Choice("3. 每天坚持来陪伴",
15, 10, 28, 118, "坚持陪伴江辰"));
scenes.push_back(familyProblem);
// 场景48: 误会争吵
Scene misunderstandingFight("你看到江辰和陌生女生亲密交谈。当他解释那是他表妹时,你赌气说:\"不用跟我解释。\"", RED);
misunderstandingFight.addChoice(Choice("1. 冷静后道歉",
5, 15, 10, 119, "与江辰和解"));
misunderstandingFight.addChoice(Choice("2. 继续冷战",
-5, -10, -15, 120, "与江辰持续冷战"));
misunderstandingFight.addChoice(Choice("3. \"其实我是在吃醋...\"",
10, 8, 25, 121, "向江辰表白心意"));
scenes.push_back(misunderstandingFight);
// 场景49: 初雪告白
Scene firstSnow("初雪那天,江辰约你到初见的地方。雪花落在他睫毛上,他呼着白气说:\"我想把伞永远倾向你这边。\"", LIGHT_CYAN);
firstSnow.addChoice(Choice("1. 直接吻他",
15, 10, 35, 122, "初雪中的亲吻"));
firstSnow.addChoice(Choice("2. 红着脸点头",
12, 12, 30, 123, "接受江辰的表白"));
firstSnow.addChoice(Choice("3. \"让我再考虑一下\"",
0, -5, -10, 124, "犹豫不决"));
scenes.push_back(firstSnow);
// 场景50: 正式约会
Scene officialDate("成为恋人后的第一次正式约会,江辰紧张得打翻了饮料。你笑着擦洒在他衬衫上的咖啡渍,他抓住你的手腕轻声说:\"别动。\"", LIGHT_MAGENTA);
officialDate.addChoice(Choice("1. 害羞地僵住",
8, 8, 25, 125, "初次约会害羞"));
officialDate.addChoice(Choice("2. 主动靠近",
10, 7, 30, 126, "主动亲近江辰"));
officialDate.addChoice(Choice("3. \"你弄脏的,你负责洗\"",
7, 5, 28, 127, "调戏江辰"));
scenes.push_back(officialDate);
// 场景50: 表白场景
Scene confession("樱花盛开的日子,江辰约你到初见的地方。他紧张地握着一封信,声音微微颤抖:\"林薇,这段时间我越来越确定,你对我而言很特别...\"", MAGENTA);
confession.addChoice(Choice("1. 接过信,直接拥抱他",
15, 15, 30, 60, "接受了江辰的表白"));
confession.addChoice(Choice("2. 害羞地说:\"我也喜欢你\"",
12, 12, 25, 61, "向江辰表白心意"));
confession.addChoice(Choice("3. 犹豫地说:\"我需要一点时间考虑\"",
0, -5, -10, 62, "没有立即回应江辰"));
scenes.push_back(confession);
// 场景60: 成为恋人
Scene becomeCouple("你们正式成为恋人。江辰小心翼翼地牵起你的手,十指相扣时,他的掌心微微出汗。\"我...我很高兴。\"他难得地结巴了。", LIGHT_MAGENTA);
becomeCouple.addChoice(Choice("1. 握紧他的手:\"我也是\"",
10, 10, 25, 70, "和江辰成为恋人"));
becomeCouple.addChoice(Choice("2. 调皮地捏捏他的脸:\"你好可爱\"",
8, 8, 20, 71, "调戏害羞的江辰"));
becomeCouple.addChoice(Choice("3. 突然亲一下他的脸颊",
12, 5, 30, 72, "第一次亲吻江辰"));
scenes.push_back(becomeCouple);
// 场景60: 恋爱初体验
Scene firstLove("成为恋人后第一次牵手走在校园里,江辰的掌心微微出汗却紧握不放,引来路人善意的目光。", LIGHT_MAGENTA);
firstLove.addChoice(Choice("1. 十指相扣回握他",
10, 10, 25, 128, "与江辰十指相扣"));
firstLove.addChoice(Choice("2. 调皮地挠他手心",
8, 7, 22, 129, "调戏害羞的江辰"));
firstLove.addChoice(Choice("3. \"不用紧张,我不会跑的\"",
7, 12, 20, 130, "安抚紧张的江辰"));
scenes.push_back(firstLove);
// 场景61: 晨间惊喜
Scene morningSurprise("你知道江辰要赶早课,特意买了早餐在他宿舍楼下等待。睡眼惺忪的他看到你,瞬间清醒得瞪大眼睛。", LIGHT_YELLOW);
morningSurprise.addChoice(Choice("1. \"早安,男朋友\"",
10, 8, 22, 131, "给江辰早安惊喜"));
morningSurprise.addChoice(Choice("2. 伸手整理他翘起的头发",
12, 7, 25, 132, "亲密整理江辰仪容"));
morningSurprise.addChoice(Choice("3. 拍照记录他呆愣的表情",
8, 5, 20, 133, "捕捉江辰可爱瞬间"));
scenes.push_back(morningSurprise);
// 场景62: 生病照顾
Scene takingCare("江辰发高烧却倔强地不去医院。你闯进男生宿舍,用湿毛巾敷在他滚烫的额头,被他突然抓住手腕。", LIGHT_BLUE);
takingCare.addChoice(Choice("1. \"别闹,好好休息\"",
8, 12, 20, 134, "照顾生病的江辰"));
takingCare.addChoice(Choice("2. 趁机偷吻他发烫的脸颊",
10, 5, 28, 135, "亲吻病中的江辰"));
takingCare.addChoice(Choice("3. 威胁再不好好治疗就分手",
5, 15, 15, 136, "用分手威胁江辰就医"));
scenes.push_back(takingCare);
// 场景63: 纪念日礼物
Scene anniversaryGift("一个月纪念日,江辰送你一个精致的手工八音盒,打开后奏响你们初遇时图书馆放的钢琴曲。", LIGHT_MAGENTA);
anniversaryGift.addChoice(Choice("1. 感动得说不出话",
10, 10, 25, 137, "被江辰的用心感动"));
anniversaryGift.addChoice(Choice("2. \"你怎么连这个都记得?\"",
8, 12, 22, 138, "惊讶于江辰的记忆力"));
anniversaryGift.addChoice(Choice("3. 送上你准备的配对手链",
12, 10, 30, 139, "交换纪念日礼物"));
scenes.push_back(anniversaryGift);
// 场景64: 朋友调侃
Scene friendTeasing("当朋友起哄让你们当众接吻时,江辰耳尖通红却坚定地搂住你的腰,低声问:\"要逃吗?\"", LIGHT_RED);
friendTeasing.addChoice(Choice("1. 主动吻他脸颊",
10, 8, 25, 140, "在朋友面前亲吻江辰"));
friendTeasing.addChoice(Choice("2. 拉着他逃离现场",
7, 10, 20, 141, "带江辰逃离尴尬"));
friendTeasing.addChoice(Choice("3. \"想亲我?求我啊\"",
8, 5, 22, 142, "当众调戏江辰"));
scenes.push_back(friendTeasing);
// 场景65: 电影约会
Scene movieDate("恐怖片中,江辰明明自己害怕却强装镇定保护你。当鬼魂突然出现,你们同时尖叫着抱在一起。", LIGHT_BLUE);
movieDate.addChoice(Choice("1. 趁机窝在他怀里",
10, 7, 25, 143, "利用恐怖片亲近江辰"));
movieDate.addChoice(Choice("2. 笑他比你还害怕",
7, 5, 20, 144, "嘲笑害怕的江辰"));
movieDate.addChoice(Choice("3. 捂住他眼睛不让他看",
8, 10, 22, 145, "保护害怕的江辰"));
scenes.push_back(movieDate);
// 场景66: 手机密码
Scene phonePassword("当你要用江辰手机打电话时,发现锁屏密码是你的生日。他红着脸解释:\"好记...\"", MAGENTA);
phonePassword.addChoice(Choice("1. 把自己的密码也改成他的生日",
12, 12, 30, 146, "交换手机密码"));
phonePassword.addChoice(Choice("2. \"就这么喜欢我啊?\"",
8, 5, 22, 147, "调侃深情的江辰"));
phonePassword.addChoice(Choice("3. 装作没发现",
5, 10, 18, 148, "体贴地不点破"));
scenes.push_back(phonePassword);
// 场景67: 烹饪灾难
Scene cookingDisaster("你们尝试在出租屋做饭,江辰把简单的番茄炒蛋做成焦炭,却固执地非要你尝第一口。", LIGHT_YELLOW);
cookingDisaster.addChoice(Choice("1. 闭眼吞下并竖起大拇指",
10, 12, 25, 149, "硬夸江辰的厨艺"));
cookingDisaster.addChoice(Choice("2. 笑着指出问题并教他重做",
8, 10, 22, 150, "指导江辰做饭"));
cookingDisaster.addChoice(Choice("3. 拍照发朋友圈调侃",
7, 5, 20, 151, "嘲笑江辰的厨艺"));
scenes.push_back(cookingDisaster);
// 场景68: 异地前夜
Scene beforeLongDistance("江辰获得暑期海外实习机会。临行前夜,他在你家门口徘徊到深夜,直到你发现他在雨中站着。", CYAN);
beforeLongDistance.addChoice(Choice("1. 拉他进门擦干头发",
10, 10, 25, 152, "照顾雨中的江辰"));
beforeLongDistance.addChoice(Choice("2. \"现在就开始想我了?\"",
8, 7, 22, 153, "调侃不舍的江辰"));
beforeLongDistance.addChoice(Choice("3. 默默陪他在雨中站着",
12, 12, 28, 154, "与江辰共淋雨"));
scenes.push_back(beforeLongDistance);
// 场景69: 机场送别
Scene airportFarewell("安检口前,江辰突然把你拉进怀里,声音哽咽:\"每天都要视频,不许看别的男生...\"", LIGHT_MAGENTA);
airportFarewell.addChoice(Choice("1. \"我等你回来\"",
10, 15, 25, 155, "承诺等待江辰"));
airportFarewell.addChoice(Choice("2. 把喷了自己香水的手帕塞给他",
12, 10, 30, 156, "给江辰留念物品"));
airportFarewell.addChoice(Choice("3. \"敢不回来就分手\"",
5, 8, 18, 157, "用分手威胁江辰回来"));
scenes.push_back(airportFarewell);
// 场景70: 第一次争吵
Scene firstFight("因为江辰连续加班爽约,你们发生了第一次争吵。他疲惫地揉着太阳穴:\"我只是想给你更好的未来...\"", RED);
firstFight.addChoice(Choice("1. 冷静下来:\"我们需要好好谈谈\"",
5, 10, 0, 80, "与江辰理性沟通"));
firstFight.addChoice(Choice("2. 生气地离开",
-5, -10, -15, 81, "与江辰冷战"));
firstFight.addChoice(Choice("3. 抱住他:\"我只要你多陪陪我\"",
10, 5, 20, 82, "和解拥抱"));
scenes.push_back(firstFight);
// 场景70: 异地恋日常
Scene longDistance("深夜视频时,江辰那边的阳光正好。他给你看窗外的埃菲尔铁塔,却因时差困得频频点头。", LIGHT_BLUE);
longDistance.addChoice(Choice("1. 劝他先休息",
10, 15, 25, 158, "体贴江辰的疲惫"));
longDistance.addChoice(Choice("2. 坚持要看完日落",
5, 5, 18, 159, "任性地要求陪伴"));
longDistance.addChoice(Choice("3. 突然用法语说\"我爱你\"",
12, 8, 30, 160, "用法语表白惊喜"));
scenes.push_back(longDistance);
// 场景71: 信任危机
Scene trustTest("江辰的ins上出现与金发女生的合照。当你质问他时,他解释是小组作业伙伴,但语气有些闪躲。", RED);
trustTest.addChoice(Choice("1. \"我相信你\"直接挂断",
15, 20, 15, 161, "选择无条件信任"));
trustTest.addChoice(Choice("2. 要求查看所有聊天记录",
-5, -10, -15, 162, "不信任地调查"));
trustTest.addChoice(Choice("3. 买机票突然出现在他面前",
10, 5, 25, 163, "突击检查江辰"));
scenes.push_back(trustTest);
// 场景72: 突然重逢
Scene surpriseReunion("你假装忘记江辰的归国日期。当他拖着行李箱出现在你宿舍楼下时,你从背后蒙住他眼睛。", LIGHT_MAGENTA);
surpriseReunion.addChoice(Choice("1. \"欢迎回家\"转身就跑",
10, 10, 28, 164, "调皮地欢迎江辰"));
surpriseReunion.addChoice(Choice("2. 跳到他身上拥抱",
12, 8, 35, 165, "热情拥抱江辰"));
surpriseReunion.addChoice(Choice("3. 假装不认识转身离开",
-5, -15, -20, 166, "残忍地戏弄江辰"));
scenes.push_back(surpriseReunion);
// 场景73: 生活习惯冲突
Scene habitClash("同居后发现江辰凌晨三点写代码、袜子乱丢。当你整理第五双袜子时,他正无辜地吃着你留给客户的蛋糕。", YELLOW);
habitClash.addChoice(Choice("1. 制定同居守则",
8, 12, 20, 167, "理性解决冲突"));
habitClash.addChoice(Choice("2. 把他的键盘藏起来报复",
5, 5, 18, 168, "幼稚地报复"));
habitClash.addChoice(Choice("3. 撒娇要他喂你一口蛋糕",
10, 7, 25, 169, "用撒娇化解矛盾"));
scenes.push_back(habitClash);
// 场景74: 职业分歧
Scene careerDilemma("江辰收到硅谷offer,而你刚考上本地研究生。他兴奋地展示offer时,你盯着\"需定居美国\"的字样沉默。", BLUE);
careerDilemma.addChoice(Choice("1. \"我等你\"强颜欢笑",
5, 15, 10, 170, "牺牲自己支持江辰"));
careerDilemma.addChoice(Choice("2. \"那我们怎么办?\"",
10, 5, 20, 171, "提出关系困境"));
careerDilemma.addChoice(Choice("3. 摔门而出",
-10, -20, -15, 172, "愤怒离场"));
scenes.push_back(careerDilemma);
// 场景75: 父母反对
Scene parentOppose("江辰父亲当面说:\"我儿子需要能帮助他事业的伴侣。\"江辰紧握你的手却在微微发抖。", LIGHT_RED);
parentOppose.addChoice(Choice("1. 展示获奖论文",
12, 15, 25, 173, "用实力证明自己"));
parentOppose.addChoice(Choice("2. \"我会成为那样的人\"",
10, 10, 22, 174, "坚定承诺"));
parentOppose.addChoice(Choice("3. 松开他的手离席",
-5, -20, -25, 175, "放弃抗争"));
scenes.push_back(parentOppose);
// 场景76: 经济压力
Scene financialStress("房租涨价日,你们为谁该多付争执不休。江辰摔了杯子又立刻道歉,看到你捡碎片的背影突然落泪。", MAGENTA);
financialStress.addChoice(Choice("1. 提议共同记账",
10, 15, 20, 176, "理性解决经济问题"));
financialStress.addChoice(Choice("2. 偷偷多打一份工",
12, 10, 25, 177, "默默承担更多"));
financialStress.addChoice(Choice("3. \"穷就别谈恋爱\"",
-10, -25, -30, 178, "伤害性发言"));
scenes.push_back(financialStress);
// 场景77: 重大选择
Scene lifeDecision("你获得梦校交换生机会,但江辰刚创业失败。他整夜帮你整理资料,却在签证通过时独自喝闷酒。", LIGHT_GREEN);
lifeDecision.addChoice(Choice("1. 放弃机会陪他振作",
15, 20, 30, 179, "为爱情牺牲机会"));
lifeDecision.addChoice(Choice("2. 拉他一起重新规划",
12, 15, 25, 180, "共同面对困境"));
lifeDecision.addChoice(Choice("3. \"别拖累我\"拎箱离开",
-15, -30, -35, 181, "残忍抛弃"));
scenes.push_back(lifeDecision);
// 场景78: 疾病考验
Scene healthCrisis("连续加班后江辰晕倒入院。医生说是过度疲劳,而他第一句话是\"别告诉我爸妈\"。", LIGHT_BLUE);
healthCrisis.addChoice(Choice("1. 辞去兼职专心照顾",
15, 20, 35, 182, "为江辰放弃工作"));
healthCrisis.addChoice(Choice("2. 联系他父母",
5, -10, 15, 183, "违背意愿求助"));
healthCrisis.addChoice(Choice("3. 制定健康计划表",
10, 15, 25, 184, "理性解决问题"));
scenes.push_back(healthCrisis);
// 场景79: 求婚预兆
Scene proposalHint("江辰开始反常地咨询你喜欢的戒指款式,却又在你发现时慌张否认。某天你撞见他偷偷量你指围。", LIGHT_MAGENTA);
proposalHint.addChoice(Choice("1. 假装不知情",
10, 15, 30, 185, "体贴地保持惊喜"));
proposalHint.addChoice(Choice("2. 故意留下珠宝杂志",
8, 8, 25, 186, "含蓄地暗示偏好"));
proposalHint.addChoice(Choice("3. \"不求婚就分手\"",
5, -5, 15, 187, "施加压力"));
scenes.push_back(proposalHint);
// 场景80: 毕业抉择
Scene graduationChoice("毕业季来临,江辰收到外地理想公司的offer,而你被保送本校研究生。\"你怎么想?\"他小心翼翼地问。", BLUE);
graduationChoice.addChoice(Choice("1. \"去吧,我等你\"",
5, 15, 10, 90, "支持江辰去外地"));
graduationChoice.addChoice(Choice("2. \"能不能留下来?\"",
0, -5, 15, 91, "希望江辰留下"));
graduationChoice.addChoice(Choice("3. \"我们一起想办法\"",
10, 10, 20, 92, "共同面对未来"));
scenes.push_back(graduationChoice);
// 场景80: 毕业抉择
Scene graduationCrossroad("毕业典礼上,江辰收到北京高薪offer,而你被导师推荐去英国深造。合影时他握紧你的手微微发抖。", BLUE);
graduationCrossroad.addChoice(Choice("1. \"我们各自追梦吧\"",
5, 20, 10, 188, "选择放手让彼此高飞"));
graduationCrossroad.addChoice(Choice("2. 撕掉录取通知书",
15, 5, 30, 189, "为爱情放弃机会"));
graduationCrossroad.addChoice(Choice("3. 提议先结婚再异地",
10, 15, 25, 190, "用婚姻维系关系"));
scenes.push_back(graduationCrossroad);
// 场景81: 争吵爆发
Scene bigFight("关于未来的争吵升级,江辰脱口而出:\"为什么总是我妥协?\"话出口的瞬间你们同时愣住了。", RED);
bigFight.addChoice(Choice("1. 冷静分析各自需求",
10, 15, 20, 191, "理性沟通分歧"));
bigFight.addChoice(Choice("2. \"那分手啊\"摔门而出",
-10, -25, -30, 192, "冲动提出分手"));
bigFight.addChoice(Choice("3. 沉默地收拾行李",
-5, -20, -25, 193, "冷战准备离开"));
scenes.push_back(bigFight);
// 场景82: 暂时分离
Scene temporarySeparation("机场分别时,江辰突然单膝跪地为你系鞋带,人群开始起哄。他低声说:\"别笑,最后一次了。\"", LIGHT_MAGENTA);
temporarySeparation.addChoice(Choice("1. 拉起他深深拥抱",
12, 15, 30, 194, "深情告别"));
temporarySeparation.addChoice(Choice("2. 转身头也不回离开",
-5, -20, -15, 195, "决绝离去"));
temporarySeparation.addChoice(Choice("3. \"等我回来娶你\"",
15, 10, 35, 196, "反向求婚"));
scenes.push_back(temporarySeparation);
// 场景83: 异国困境
Scene overseasStruggle("视频里江辰的黑眼圈越来越重。当你说想家时,他沉默片刻说:\"我飞过去陪你过周末吧?\"", LIGHT_BLUE);
overseasStruggle.addChoice(Choice("1. 拒绝但寄去安神茶",
10, 15, 25, 197, "体贴地拒绝"));
overseasStruggle.addChoice(Choice("2. 偷偷订他喜欢的歌星演唱会票",
12, 10, 30, 198, "制造惊喜"));
overseasStruggle.addChoice(Choice("3. \"来了就分手\"测试真心",
-8, -25, -20, 199, "残忍测试"));
scenes.push_back(overseasStruggle);
// 场景84: 事业危机
Scene careerCrisis("江辰创业失败欠债,你收到他醉酒后的消息:\"忘了我吧\"。账户突然收到他全部积蓄的转账。", LIGHT_RED);
careerCrisis.addChoice(Choice("1. 立即飞回国",
15, 20, 35, 200, "毅然回国支持"));
careerCrisis.addChoice(Choice("2. 转账回并附文\"一起还\"",
12, 25, 30, 201, "共同承担债务"));
careerCrisis.addChoice(Choice("3. 收钱并拉黑",
-20, -30, -40, 202, "彻底放弃"));
scenes.push_back(careerCrisis);
// 场景85: 久别重逢
Scene reunionAfterLongTime("两年后学术会议重逢,江辰西装革履演讲完毕,看到席间的你瞬间结巴。散会后他堵住你:\"单身?\"", LIGHT_GREEN);
reunionAfterLongTime.addChoice(Choice("1. 亮出婚戒转身就走",
-5, -10, 15, 203, "虚假报复"));
reunionAfterLongTime.addChoice(Choice("2. \"你希望呢?\"轻抚他领带",
10, 5, 30, 204, "暧昧试探"));
reunionAfterLongTime.addChoice(Choice("3. 塞给他房卡",
8, -5, 25, 205, "大胆邀约"));
scenes.push_back(reunionAfterLongTime);
// 场景86: 旧情复燃
Scene rekindleRomance("酒店房间里,江辰从背后抱住你,呼吸颤抖:\"我买了你论文里提到的所有书...\"他的手机屏保仍是你们的合照。", MAGENTA);
rekindleRomance.addChoice(Choice("1. 转身吻他",
15, 10, 40, 206, "旧情复燃"));
rekindleRomance.addChoice(Choice("2. \"我们已经结束了\"",
-10, -15, -20, 207, "再次拒绝"));
rekindleRomance.addChoice(Choice("3. 共度一夜后悄悄离开",
5, -20, 15, 208, "肉体关系"));
scenes.push_back(rekindleRomance);
// 场景87: 真相揭露
Scene truthRevealed("你发现江辰当年拒绝国外机会是因为你父亲重病。他苦笑:\"现在说这个还有意义吗?\"", LIGHT_BLUE);
truthRevealed.addChoice(Choice("1. \"为什么不告诉我?\"",
10, 5, 25, 209, "追问真相"));
truthRevealed.addChoice(Choice("2. 泪流满面拥抱",
15, 20, 35, 210, "感动原谅"));
truthRevealed.addChoice(Choice("3. \"道德绑架有意思?\"",
-15, -25, -30, 211, "曲解善意"));
scenes.push_back(truthRevealed);
// 场景88: 最后抉择
Scene finalDecision("江辰拿出两张机票:\"红色是去你梦想的丹麦,蓝色是回我们初遇的校园。这次你选。\"", LIGHT_MAGENTA);
finalDecision.addChoice(Choice("1. 抢过机票撕碎",
20, 15, 45, 212, "拒绝选择"));
finalDecision.addChoice(Choice("2. 拿走红票还他蓝票",
5, 30, 20, 213, "各走各路"));
finalDecision.addChoice(Choice("3. \"我要第三选项\"掏出戒指",
25, 25, 50, 214, "创造新可能"));
scenes.push_back(finalDecision);
// 场景89: 结局前夕
Scene beforeEnding("樱花树下,江辰单膝跪地打开戒指盒,却发现你已经拿着同样的丝绒盒子。远处传来初遇那年的雨声。", LIGHT_CYAN);
beforeEnding.addChoice(Choice("1. \"这次换我求婚\"",
30, 30, 60, 215, "反向求婚结局"));
beforeEnding.addChoice(Choice("2. 让他先说",
25, 25, 55, 216, "传统求婚结局"));
beforeEnding.addChoice(Choice("3. \"不如我们再想想\"",
-5, -10, 10, 217, "犹豫不决结局"));
scenes.push_back(beforeEnding);
// 结局场景 (90-99)
Scene happyEnding("五年后,在初遇的樱花树下,江辰单膝跪地。又一年春雨绵绵,你们撑着一把伞回家,他小心地护着你微微隆起的小腹。\n\n"
"「幸福结局」", LIGHT_MAGENTA, true);
scenes.push_back(happyEnding);
Scene longDistanceEnding("异地恋持续了两年,最终因距离分手。多年后同学会上,你们相视一笑,举杯敬那些年的青春。\n\n"
"「异地恋结局」", BLUE, true);
scenes.push_back(longDistanceEnding);
Scene careerEnding("你们选择了各自的事业道路,渐渐疏远。十年后,你在新闻上看到江辰成为行业翘楚的报道,微笑着关掉了页面。\n\n"
"「事业结局」", YELLOW, true);
scenes.push_back(careerEnding);
Scene friendshipEnding("你们始终保持着好友关系。在他婚礼上,你真诚地祝福,他悄悄说:\"谢谢你曾出现在我的青春里。\"\n\n"
"「友情结局」", GREEN, true);
scenes.push_back(friendshipEnding);
Scene tragicEnding("一场车祸带走了江辰。整理遗物时,你发现他日记的最后一页写着:\"明天要告诉林薇,我爱她。\"\n\n"
"「悲剧结局」", BLACK, true);
scenes.push_back(tragicEnding);
Scene reunionEnding("分开多年后,你们在初遇的图书馆重逢。雨还是那样下着,他撑开伞:\"这次,能一起走完余生吗?\"\n\n"
"「重逢结局」", LIGHT_RED, true);
scenes.push_back(reunionEnding);
Scene secretEnding("你发现江辰桌上有一枚奇怪的徽章。深夜,他发来消息:\"对不起,我必须离开。如果三个月后我没回来,请忘了我。\"\n\n"
"「秘密结局」", LIGHT_BLUE, true);
scenes.push_back(secretEnding);
}
void showTitleScreen() {
clearScreen();
setColor(LIGHT_MAGENTA);
cout << "═══════════════════════════════════════════════════\n";
cout << " ██████╗ ██╗ ██╗███████╗███████╗████████╗\n";
cout << " ██╔══██╗╚██╗ ██╔╝██╔════╝██╔════╝╚══██╔══╝\n";
cout << " ██████╔╝ ╚████╔╝ █████╗ ███████╗ ██║ \n";
cout << " ██╔══██╗ ╚██╔╝ ██╔══╝ ╚════██║ ██║ \n";
cout << " ██████╔╝ ██║ ███████╗███████║ ██║ \n";
cout << " ╚═════╝ ╚═╝ ╚══════╝╚══════╝ ╚═╝ \n";
cout << "═══════════════════════════════════════════════════\n\n";
setColor(LIGHT_CYAN);
cout << " 恋爱选择游戏《街角的遇见》\n\n";
setColor(WHITE);
cout << "在这个游戏中,你的每一个选择都将编织独一无二的命运轨迹。\n";
cout << "最终,你们可能成为恋人、朋友,或者擦肩而过。\n\n";
setColor(LIGHT_YELLOW);
cout << "游戏包含8种不同结局,40个场景和数百种选择组合\n";
cout << "游戏时长约20-30分钟\n\n";
setColor(LIGHT_GREEN);
cout << "操作说明:\n";
cout << "- 输入选项数字进行选择\n";
cout << "- 按空格键加速文本显示\n";
cout << "- 好感度影响恋爱发展\n";
cout << "- 信任度影响关键选择\n";
cout << "- 友善度影响日常互动\n\n";
setColor(BRIGHT_WHITE);
cout << "按任意键开始游戏...";
cin.get();
clearScreen();
}
void showEndingStats() {
time_t endTime = time(0);
double playTime = difftime(endTime, startTime) / 60.0;
setColor(LIGHT_CYAN);
cout << "════════════════════════════════════════\n";
cout << " 游戏统计\n";
cout << "════════════════════════════════════════\n";
setColor(WHITE);
cout << "游戏时长: " << fixed << setprecision(1) << playTime << " 分钟\n";
cout << "约会次数: " << dateCount << " 次\n";
cout << "记忆片段: " << memories.size() << " 个\n";
if (loveInterest.hasKissed) {
setColor(LIGHT_MAGENTA);
cout << "关系状态: 已亲吻\n";
}
else if (loveInterest.isDating) {
setColor(LIGHT_BLUE);
cout << "关系状态: 恋爱中\n";
}
else if (loveInterest.hasConfessed) {
setColor(LIGHT_GREEN);
cout << "关系状态: 已表白\n";
}
else {
setColor(GRAY);
cout << "关系状态: 普通朋友\n";
}
setColor(LIGHT_CYAN);
cout << "════════════════════════════════════════\n\n";
}
void showMemories() {
if (memories.empty()) {
setColor(GRAY);
cout << "你们的故事还没开始就结束了...\n";
return;
}
setColor(LIGHT_MAGENTA);
cout << "════════════════════════════════════════\n";
cout << " 记忆回放\n";
cout << "════════════════════════════════════════\n";
for (int i = 0; i < memories.size(); i++) {
setColor(LIGHT_YELLOW);
cout << i + 1 << ". " << memories[i] << endl;
this_thread::sleep_for(chrono::milliseconds(500));
}
setColor(LIGHT_MAGENTA);
cout << "════════════════════════════════════════\n\n";
}
void play() {
showTitleScreen();
// 游戏开场动画
sceneTransition("游戏加载中");
while (!gameOver && currentScene < scenes.size()) {
Scene& current = scenes[currentScene];
// 显示场景描述
typewriterEffect(current.getRandomDescription(), current.textColor);
// 显示状态条
showStatusBar();
if (current.isEnding) {
// 结局场景
setColor(current.textColor);
cout << current.description << endl;
// 显示结局统计
showEndingStats();
showMemories();
gameOver = true;
break;
}
if (current.choices.empty()) {
setColor(LIGHT_RED);
cout << "错误:场景没有设置选择项\n";
break;
}
// 显示选择菜单
int choiceIndex = showChoiceMenu(current.choices);
Choice& selected = current.choices[choiceIndex];
// 更新角色属性
loveInterest.adjustTraits(selected.kindnessEffect,
selected.trustEffect,
selected.intimacyEffect);
// 处理随机事件
for (const auto& event : selected.randomEvents) {
if (getRandomInt(1, 100) <= event.first) {
int effect = event.second;
loveInterest.intimacy += effect;
loveInterest.intimacy = max(0, min(100, loveInterest.intimacy));
setColor(effect > 0 ? LIGHT_GREEN : LIGHT_RED);
cout << "\n[随机事件] 好感度" << (effect > 0 ? "+" : "")
<< effect << "!\n";
}
}
// 添加记忆
addMemory(selected.memory);
// 特殊事件检查
if (currentScene == 50 && loveInterest.intimacy >= 80 && !loveInterest.hasConfessed) {
triggerConfessionEvent();
}
// 更新场景
currentScene = selected.nextScene;
// 如果不是结局场景,进行场景转换
if (!gameOver && currentScene < scenes.size() && !scenes[currentScene].isEnding) {
sceneTransition();
}
}
// 游戏结束处理
setColor(LIGHT_CYAN);
cout << "游戏结束!感谢游玩《街角的遇见》。\n\n";
setColor(WHITE);
cout << "是否要再玩一次,探索不同的结局?\n";
cout << "1. 重新开始\n";
cout << "2. 退出游戏\n";
int choice;
cin >> choice;
if (choice == 1) {
// 重置游戏
currentScene = 0;
gameOver = false;
memories.clear();
loveInterest = Character("江辰");
startTime = time(0);
dateCount = 0;
clearScreen();
play();
}
}
void triggerConfessionEvent() {
setColor(LIGHT_MAGENTA);
cout << "\n\n[特殊事件] 江辰突然停下脚步,认真地看着你:\n";
typewriterEffect("\"林薇,其实我喜欢你很久了。做我的女朋友好吗?\"", LIGHT_MAGENTA, 20);
setColor(WHITE);
cout << "1. 激动地答应:\"我愿意!\"\n";
cout << "2. 害羞地低下头:\"让我考虑一下...\"\n";
cout << "3. 亲吻他作为回答\n";
int choice;
do {
setColor(YELLOW);
cout << "请输入你的选择 (1-3): ";
cin >> choice;
if (choice < 1 || choice > 3) {
setColor(LIGHT_RED);
cout << "无效的选择,请重新输入。\n";
cin.clear();
cin.ignore(10000, '\n');
}
else {
break;
}
} while (true);
setColor(LIGHT_MAGENTA);
switch (choice) {
case 1:
cout << "\n江辰开心地抱住了你:\"我会好好对你的!\"\n";
loveInterest.intimacy += 20;
loveInterest.hasConfessed = true;
loveInterest.isDating = true;
memories.push_back("江辰向你表白,你们成为了恋人");
break;
case 2:
cout << "\n江辰有些失落:\"好,我等你。\"\n";
loveInterest.intimacy += 5;
memories.push_back("江辰向你表白,你表示需要考虑");
break;
case 3:
cout << "\n你踮起脚尖亲吻他的脸颊。江辰愣了一秒,随即紧紧抱住你转了一圈。\n";
loveInterest.intimacy += 25;
loveInterest.hasConfessed = true;
loveIntere
全部评论 2
1小时前 来自 广东
1白嫖不点赞?
12小时前 来自 广东
0
有帮助,赞一个