前言

今天zty带来的是『ThoughtsStarHub』小组的项目,长路漫漫的0.0.03的版本(该游戏尚未完成,无法正常游玩),此版本由zty一人开发完成,主要新增内容为城市与道路系统

此项目联合作者:

FrostedLotus·霜莲-CSDN博客

                                                  先   赞   后   看    养   成   习   惯 

众所不周知,zty的头图换了

                                                  先   赞   后   看    养   成   习   惯  

(小声嘀咕)宝可梦!!智蛙和智神好帅!!!

演示用编译器

Dev C++ 6.7.5 Red panda 

[C++编译器] Dev-C++ 6.7.5 (附下载链接、安装教程)_red panda dev-c++-CSDN博客

标准

C++14

                                                  先   赞   后   看    养   成   习   惯  

正文

更新日志:

        新增:1,城市   2,道路

        修改:无

        删除:无


But

目前还是未完成版,没法正常游玩,缺的几个主要部分:

  1. 战斗函数
  2. 商铺
  3. 黑暗领主和他手底下一批人的结构体
  4. 剧情
  5. 黑暗领主AI
  6. 技能
  7. 美术
游戏截图:

游戏地图:

(本次更新的主要内容)

其中枯叶市为初始城市,闇芈市(Yǎn mǐ shì‌)为Boss城市

代码
#include<bits/stdc++.h>
#include<windows.h>
#include<conio.h>

using namespace std;
void No() {
	HANDLE consoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);
	CONSOLE_CURSOR_INFO info;
	info.dwSize = 100;
	info.bVisible = FALSE;
	SetConsoleCursorInfo(consoleHandle, &info);
}
void print(string text) {
	for (int i = 0; i < text.size(); i++) {
		cout << text[i];
		Sleep(20);
	}
}
void Yan(int a) {// 1蓝 2绿 3紫 4红 5黄 6深蓝 7棕 8浅灰 9深灰 10绿绿 11绿紫 12绿黄 13蓝蓝
	if (a == 0) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
	if (a == 1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN | FOREGROUND_BLUE);
	if (a == 2) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
	if (a == 3) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_BLUE);
	if (a == 4) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);
	if (a == 5) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);
	if (a == 6) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE);
	if (a == 7) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN);
	if (a == 8) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
	if (a == 9) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
	if (a == 10) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN | BACKGROUND_GREEN);
	if (a == 11) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_BLUE | BACKGROUND_GREEN);
	if (a == 12) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | BACKGROUND_GREEN);
	if (a == 13) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN | FOREGROUND_BLUE | BACKGROUND_INTENSITY | BACKGROUND_BLUE);
}
void Bai() {
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
}
enum Job { WAR, ARCH, DEF, MAG, ASN, SUP };
struct Way {
	int num = -1;
	int days = 0;
};

struct City {
	string name;
	Way way[5];
	Way cannotseeway[5];
};

City city[15] = {
	// 0. 枯叶市 (中心枢纽)
	{
		"枯叶市",
		{{1, 2}, {2, 3}, {3, 3}, {6, 2}, {-1, 0}},
		{{12, 5}, {-1, 0}, {-1, 0}, {-1, 0}, {-1, 0}}
	},

	// 1. 滨海市
	{
		"滨海市",
		{{0, 2}, {4, 3}, {9, 4}, {-1, 0}, {-1, 0}},
		{{-1, 0}, {-1, 0}, {-1, 0}, {-1, 0}, {-1, 0}}
	},

	// 2. 枫林市
	{
		"枫林市",
		{{0, 3}, {5, 2}, {11, 3}, {-1, 0}, {-1, 0}},
		{{-1, 0}, {-1, 0}, {-1, 0}, {-1, 0}, {-1, 0}}
	},

	// 3. 钢铁市
	{
		"钢铁市",
		{{0, 3}, {8, 2}, {10, 3}, {-1, 0}, {-1, 0}},
		{{-1, 0}, {-1, 0}, {-1, 0}, {-1, 0}, {-1, 0}}
	},

	// 4. 绿源市
	{
		"绿源市",
		{{1, 3}, {9, 2}, {-1, 0}, {-1, 0}, {-1, 0}},
		{{-1, 0}, {-1, 0}, {-1, 0}, {-1, 0}, {-1, 0}}
	},

	// 5. 云州市
	{
		"云州市",
		{{2, 2}, {13, 3}, {-1, 0}, {-1, 0}, {-1, 0}}, // 直接连接凤凰台市
		{{0, 4}, {-1, 0}, {-1, 0}, {-1, 0}, {-1, 0}}
	},

	// 6. 湖光市
	{
		"湖光市",
		{{0, 2}, {10, 2}, {-1, 0}, {-1, 0}, {-1, 0}},
		{{13, 4}, {-1, 0}, {-1, 0}, {-1, 0}, {-1, 0}}
	},

	// 7. (原风铃市位置保留为空)
	{"", {{-1, 0}, {-1, 0}, {-1, 0}, {-1, 0}, {-1, 0}}, {{-1, 0}, {-1, 0}, {-1, 0}, {-1, 0}, {-1, 0}}},

	// 8. 石岗市
	{
		"石岗市",
		{{3, 2}, {12, 3}, {-1, 0}, {-1, 0}, {-1, 0}},
		{{-1, 0}, {-1, 0}, {-1, 0}, {-1, 0}, {-1, 0}}
	},

	// 9. 白露市
	{
		"白露市",
		{{1, 4}, {4, 2}, {-1, 0}, {-1, 0}, {-1, 0}},
		{{-1, 0}, {-1, 0}, {-1, 0}, {-1, 0}, {-1, 0}}
	},

	// 10. 金山市
	{
		"金山市",
		{{3, 3}, {6, 2}, {8, 2}, {-1, 0}, {-1, 0}}, // 增加与石岗市的连接
		{{9, 3}, {-1, 0}, {-1, 0}, {-1, 0}, {-1, 0}}
	},

	// 11. 双龙镇市
	{
		"双龙镇市",
		{{2, 3}, {-1, 0}, {-1, 0}, {-1, 0}, {-1, 0}},
		{{14, 6}, {-1, 0}, {-1, 0}, {-1, 0}, {-1, 0}}
	},

	// 12. 平安堡市
	{
		"平安堡市",
		{{8, 3}, {14, 4}, {-1, 0}, {-1, 0}, {-1, 0}},
		{{-1, 0}, {-1, 0}, {-1, 0}, {-1, 0}, {-1, 0}}
	},

	// 13. 凤凰台市
	{
		"凤凰台市",
		{{5, 3}, {14, 5}, {-1, 0}, {-1, 0}, {-1, 0}}, // 直接连接云州市
		{{-1, 0}, {-1, 0}, {-1, 0}, {-1, 0}, {-1, 0}}
	},

	// 14. 闇芈市 (BOSS城市)
	{
		"闇芈市",
		{{12, 4}, {13, 5}, {-1, 0}, {-1, 0}, {-1, 0}},
		{{-1, 0}, {-1, 0}, {-1, 0}, {-1, 0}, {-1, 0}}
	}
};

struct Character {
	string name;
	Job job;
	int lv;
	int exp;
	int skills[3];
	bool unlocked[3];
	int hp;
	int atk;
	int def;
	float spd;
	bool owned;
	bool isPlayer;

	int getRequiredExp() {
		return 200 + 50 * (lv - 1);
	}

	bool levelUp() {
		int requiredExp = getRequiredExp();
		if (exp < requiredExp) return false;

		exp -= requiredExp;
		lv++;
		float boost = isPlayer ? 1.2f : 1.0f;

		switch (job) {
			case WAR:
				hp += 15 * boost;
				atk += 8 * boost;
				def += 5 * boost;
				spd += 0.02f * boost;
				break;
			case ARCH:
				hp += 10 * boost;
				atk += 10 * boost;
				def += 3 * boost;
				spd += 0.05f * boost;
				break;
			case DEF:
				hp += 20 * boost;
				atk += 3 * boost;
				def += 8 * boost;
				spd += 0.01f * boost;
				break;
			case MAG:
				hp += 8 * boost;
				atk += 12 * boost;
				def += 2 * boost;
				spd += 0.03f * boost;
				break;
			case ASN:
				hp += 12 * boost;
				atk += 9 * boost;
				def += 4 * boost;
				spd += 0.06f * boost;
				break;
			case SUP:
				hp += 13 * boost;
				atk += 5 * boost;
				def += 6 * boost;
				spd += 0.04f * boost;
				break;
		}

		if (lv == 15) unlocked[1] = true;
		if (lv == 30) unlocked[2] = true;
		return true;
	}

	void showDetail() {
		const char* jobs[] = {"战士", "弓箭手", "防御者", "法师", "刺客", "辅助"};
		cout << "=== 详细信息 ===\n"
		     << "名称: " << name << (isPlayer ? "[玩家]" : "") << "\n"
		     << "等级: " << lv << "\n职业: " << jobs[job]
		     << "\nHP: " << hp << "\n攻击: " << atk
		     << "\n防御: " << def << "\n速度: " << spd
		     << "\n经验: " << exp << "/" << getRequiredExp()
		     << "\n状态: " << (owned ? "已拥有" : "未拥有") << "\n\n";
	}

	void showSimple(bool selected) {
		const char* jobs[] = {"战士", "弓箭手", "防御者", "法师", "刺客", "辅助"};
		cout << (selected ? "> " : "  ")
		     << name << " Lv." << lv
		     << " [" << jobs[job] << "]"
		     << (owned ? "[已拥有]" : "") << endl;
	}
} heroes[12] = {
	{"阿瑞斯", WAR, 1, 0,  {101, 102, 103}, {1, 0, 0}, 350, 45, 60, 1.1f, false, false},
	{"威廉", WAR,   1, 0,  {101, 102, 103}, {1, 0, 0}, 280, 38, 55, 1.05f, false, false},
	{"艾玛", ARCH,  1, 0,  {101, 102, 103}, {1, 0, 0}, 190, 28, 65, 1.3f, false, false},
	{"艾琳", ARCH,  1, 0,  {101, 102, 103}, {1, 0, 0}, 150, 22, 50, 1.25f, false, false},
	{"迈克尔", DEF, 1, 0,  {101, 102, 103}, {1, 0, 0}, 500, 35, 80, 0.8f, false, false},
	{"詹姆斯", DEF, 1, 0,  {101, 102, 103}, {1, 0, 0}, 420, 30, 75, 0.9f, false, false},
	{"索菲亚", MAG, 1, 0,  {101, 102, 103}, {1, 0, 0}, 180, 65, 40, 1.0f, false, false},
	{"莉莉丝", MAG, 1, 0,  {101, 102, 103}, {1, 0, 0}, 160, 55, 35, 1.1f, false, false},
	{"丹尼尔", ASN, 1, 0,  {101, 102, 103}, {1, 0, 0}, 220, 70, 30, 1.5f, false, false},
	{"奥利亚", SUP, 1, 0,  {101, 102, 103}, {1, 0, 0}, 200, 25, 40, 1.2f, false, false},
};
struct Wars {
	int men[114514];
	int SBs[115414];
	int where;
} Wars[111];
Character player;

void setColor(int color) {
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color);
}
void stri(int i) {
	while (i--) {
		Yan(8);
		cout << "█";
	}
	return;
}
void strin(int i) {
	while (i--) {
		setColor(14); // 黄色标题
		cout << "█";
	}
	return;
}
Character createPlayer() {
	system("cls");
	setColor(14); // 黄色标题
	cout << "\n\n\t================= 角色创建 ==================" << endl;
	cout << "\t输入角色名: ";
	string name;
	cin >> name;

	setColor(7); // 恢复白色

	const int BAR_LENGTH = 20;
	int currentChoice = 1;
	bool confirmed = false;

	while (!confirmed) {
		system("cls");
		setColor(14);
		cout << "\n\n\t================= 角色创建 ==================" << endl;
		cout << "\t输入角色名: " << name << endl;

		cout << "\n\t选择职业 (↑↓选择,空格确认):" << endl;
		cout << "\t1. " << string(10, '=') << " 战士 " << string(10, '=') << endl;
		cout << "\t2. " << string(10, '=') << " 弓箭手 " << string(10, '=') << endl;
		cout << "\t3. " << string(10, '=') << " 防御者 " << string(10, '=') << endl;
		cout << "\t4. " << string(10, '=') << " 法师 " << string(10, '=') << endl;
		cout << "\t5. " << string(10, '=') << " 刺客 " << string(10, '=') << endl;
		cout << "\t6. " << string(10, '=') << " 辅助 " << string(10, '=') << endl;

		cout << "\n\t当前选择: " << currentChoice << endl;

		// 优化选择部分
		if (GetAsyncKeyState(VK_UP) & 0x8000 && currentChoice > 1) {
			currentChoice--;
		}
		if (GetAsyncKeyState(VK_DOWN) & 0x8000 && currentChoice < 6) {
			currentChoice++;
		}
		if (GetAsyncKeyState(VK_SPACE) & 0x8000) {
			confirmed = true;
		}

		// 保留原有属性进度条
		int hp = 0, atk = 0, def = 0, spd = 0;
		switch (currentChoice) {
			case 1:
				hp = 200;
				atk = 30;
				def = 25;
				spd = 10;
				break;
			case 2:
				hp = 150;
				atk = 35;
				def = 15;
				spd = 13;
				break;
			case 3:
				hp = 250;
				atk = 20;
				def = 40;
				spd = 8;
				break;
			case 4:
				hp = 120;
				atk = 45;
				def = 10;
				spd = 11;
				break;
			case 5:
				hp = 160;
				atk = 40;
				def = 15;
				spd = 15;
				break;
			case 6:
				hp = 180;
				atk = 25;
				def = 30;
				spd = 12;
				break;
		}

		cout << "\n\t属性预览:" << endl;
		setColor(14);
		cout << "\t生命值: [" ;
		setColor(14);
		strin(hp * BAR_LENGTH / 250 ) ;
		setColor(14);
		stri(BAR_LENGTH - (hp * BAR_LENGTH) / 250);
		cout << "] " << hp << "/250" << endl << endl;
		setColor(14);
		cout << "\t攻击力: [" ;
		setColor(14);
		strin(atk * BAR_LENGTH / 45 );
		setColor(14);
		stri(BAR_LENGTH - (atk * BAR_LENGTH) / 45);
		cout << "] " << atk << "/45" << endl << endl;
		setColor(14);
		cout << "\t防御力: [" ;
		setColor(14);
		strin(def * BAR_LENGTH / 40);
		setColor(14);
		stri(BAR_LENGTH - (def * BAR_LENGTH) / 40);
		cout << "] " << def << "/40" << endl << endl;
		setColor(14);
		// 新增速度进度条
		setColor(14);
		cout << "\t 速度 : [";
		setColor(14);
		strin(spd * BAR_LENGTH / 15); // 1.5为最大速度值
		setColor(14);
		stri(BAR_LENGTH - (spd * BAR_LENGTH ) / 15);
		cout << "] " << fixed << setprecision(1) << spd << "/15" << endl << endl;
		Sleep(150);
	}
	player.owned = 1;
	player.isPlayer = 1;
	player.name = name;
	player.job = WAR;
	player.hp = 200; // 使用switch初始化实际值
	player.atk = 30;
	player.def = 25;
	player.spd = 1.0f;
	switch (currentChoice) {
		case 2:
			player.job = ARCH;
			player.hp = 150;
			player.atk = 35;
			player.def = 15;
			player.spd = 1.3f;
			break;
		case 3:
			player.job = DEF;
			player.hp = 250;
			player.atk = 20;
			player.def = 40;
			player.spd = 0.8f;
			break;
		case 4:
			player.job = MAG;
			player.hp = 120;
			player.atk = 45;
			player.def = 10;
			player.spd = 1.1f;
			break;
		case 5:
			player.job = ASN;
			player.hp = 160;
			player.atk = 40;
			player.def = 15;
			player.spd = 1.5f;
			break;
		case 6:
			player.job = SUP;
			player.hp = 180;
			player.atk = 25;
			player.def = 30;
			player.spd = 1.2f;
			break;
	}

	return player;
}
void heroDisplay() {
	int select = 0;
	system("cls");
	system("pause");
	while (true) {
		system("cls");
		cout << "==== 英雄列表 (↑/↓选择,空格查看,ESC返回) ====\n\n";

		for (int i = 0; i < 10; i++) {
			cout << "\t";
			heroes[i].showSimple(i == select);
			cout << "\n";
		}
		cout << "\t";
		player.showSimple(10 == select);
		cout << "\n";
		int key = _getch();
		switch (key) {
			case 72: // ↑
				select = (select - 1 + 11) % 11;
				break;
			case 80: // ↓
				select = (select + 1) % 11;
				break;
			case 32:
				system("cls");
				if (select == 10) {
					player.showDetail();
					_getch();
					break;
				}
				heroes[select].showDetail();
				_getch();
				break;
			case 27:
				return;
		}
	}
}
void start() {
	Yan(8);
	cout << "\n";
	cout << "    █      ██  █    █  ██      ███  ██  █  █ ███ █    █ ███ █    █\n";
	cout << "    █     █  █ ██  █ █   █      █   █  █ █  █ █  █ ██  █ █      █  █ \n";
	cout << "    █     █  █ █ █ █ █           █   █  █ █  █ ███ █ █ █ ███   ██   \n";
	cout << "    █     █  █ █  ██ █ ▄█      █   █  █ █  █ █ █  █  ██ █        █   \n";
	cout << "    ███  ██  █    █  █▔█     █     ██   ██  █  █ █    █ ███    █   \n\n";
	print(  "-----------------------------------------");
	Yan(1);
	cout << "长";
	Yan(4);
	cout << "路";
	Yan(1);
	cout << "漫漫";
	Yan(8);
	print("---------------------------------------------");
	print("---------------------------------------long journey-------------------------------------------");
	print("----------------------------------------版本0.0.03--------------------------------------------");
	print("-----------------------------------按下任意键开始游戏-----------------------------------------\n\n\n\n\n\n\n\n\n\n\n");
	cout << "                   联合作者:   CSDN zty郑桐羽呀   CSDN FrostedLotus·霜莲                     ";
	cout << "              所属组别:『ThoughtsStarHub』项目组   所属团队:『ZTY』CSDN创作主团               ";
	cout << "                              版权归属:『ZTY』CSDN创作主团                                   ";
}
void slowsay(string s, int t) {
	for (int i = 0; i < s.size(); i++) {
		cout << s[i];
		Sleep(t);
	}
}
void Intro() {
	Bai();
	Yan(4);
	system("cls");
	slowsay("\n\n\t(以下剧情可按ESC键跳过)\n\n\t很久很久以前,奥诺本大陆曾是一片繁荣祥和的土地\n\n", 20);
	if (_kbhit() && _getch() == 27) return;

	slowsay("\t直到黑暗领主玛尔加斯施展了诅咒——\n\n", 20);
	if (_kbhit() && _getch() == 27) return;

	print("\t他窃取了大陆上所有生灵的战魂,使人们变得软弱无力,怪物横行肆虐……\n\n");
	if (_kbhit() && _getch() == 27) return;

	slowsay("\t而你,是一位未被完全剥夺战魂的觉醒者\n\n", 20);
	if (_kbhit() && _getch() == 27) return;

	slowsay("\t为了破除诅咒,你必须击败盘踞在各处的魔物领主,夺回战魂碎片,让大陆重现光明!\n\n", 20);
	if (_kbhit() && _getch() == 27) return;

	print("\t\t按下任意键继续\n\n\n\t\t");
	if (_getch() == 27) return;
	system("cls");
}

void rizhi() {
	int selection = 0;
	system("cls");
	system("pause");
	bool confirmed = false;
	while (!confirmed) {
		cout << "\n\n\n\t请选择更新日志选项(注:DNF指 Did Not Finish):\n";
		cout << "\t1. " << "0.0.01 DNF版\n";
		cout << "\t2. " << "0.0.02 DNF版\n";
		cout << "\t3. " << "0.0.03 DNF版\n";
		cout << "\n当前选择: " << selection + 1 << "  回车键确定  " << endl;

		if (GetAsyncKeyState(VK_UP) & 0x8000 && selection > 0) selection = selection - 1 % 4;
		if (GetAsyncKeyState(VK_DOWN) & 0x8000 && selection < 2) selection = selection + 1 % 4;
		if (GetAsyncKeyState(VK_RETURN) & 0x8000) {
			confirmed = true;
		}
		Sleep(150);
		system("cls");
	}
	system("cls");

	switch (selection + 1) {
		case 1:
			cout << "\t完成:\n\n\t1,主干部分	2,图鉴	 3,英雄结构体   4,角色创建   5,剧情   6,第一版封面\n\n";
			cout << "\t修改:\n\n\t  无\n\n";
			cout << "\t删除:\n\n\t  无\n\n";
			system("pause");
			break;
		case 2:
			cout << "\t完成:\n\n\t1,更新日志  \n\n";
			cout << "\t修改:\n\n\t  1,角色创建  2,开头剧情  3,部分UI\n\n";
			cout << "\t删除: \n\n\t  无\n\n";
			system("pause");
			break;
		case 3:
			cout << "\t完成:\n\n\t1,城市  2,道路\n\n";
			cout << "\t修改:\n\n\t  无\n\n";
			cout << "\t删除:\n\n\t  无\n\n";
			system("pause");
			break;
		default:
			break;
	}
	return;
}

void war() { //              未完成

}

void home2(int d) {
A:
	int xuan = 0;
	bool confirmed = false;

	while (!confirmed) {
		system("cls"); // 清屏刷新界面

		cout << "\n\nDay : " << d << " \n\n";
		cout << (xuan == 0 ? "> " : "  ") << "  调动与指挥\n\n";
		cout << (xuan == 1 ? "> " : "  ") << "  英雄图鉴\n\n";
		cout << (xuan == 2 ? "> " : "  ") << "  更新日志\n\n";
		cout << (xuan == 3 ? "> " : "  ") << "  万事俱备,睡个好觉\n\n\n";
		cout << "当前选择: " <<
		     (xuan == 0 ? "调动与指挥" :
		      xuan == 1 ? "英雄图鉴" :
		      xuan == 2 ? "更新日志" : "万事俱备,睡个好觉") << endl;

		// 检测上下键
		if (GetAsyncKeyState(VK_UP) & 0x8000) {
			xuan = (xuan - 1 + 4) % 4; // 循环向上选择
			Sleep(100);
		} else if (GetAsyncKeyState(VK_DOWN) & 0x8000) {
			xuan = (xuan + 1) % 4; // 循环向下选择
			Sleep(100);
		}

		// 检测空格键确认
		if (GetAsyncKeyState(VK_SPACE) & 0x8000) {
			confirmed = true;
			switch (xuan) {
				case 0:
					war();
					break;
				case 1:
					heroDisplay();
					break;
				case 2:
					rizhi(); // 新增更新日志功能
					break;
				case 3:
					return; // 直接返回
			}
		}

		Sleep(50); // 降低CPU占用
	}
	goto A;
}
void home() {
	int d = 1;
	while (1) {
		home2(d);
		d++;
	}
}
signed main() {
	system("mode con cols=94 lines=25");
	No();
	start();
	getch();
	Intro();
	createPlayer();
	home();
	return 0;
}

 

后记

作者:zty郑桐羽呀

联系方式:(不挂了,有事私信)

注:『ThoughtsStarHub』小组与新加坡公司StarHub没有任何隶属关系,『ThoughtsStarHub』小组是『ZTY』CSDN创作主团下的一个项目小组

兄弟们给个赞呗

                                                  先   赞   后   看    养   成   习   惯  

Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐