编一个c++简易,而且带存档的冒险游戏
时间: 2024-05-01 15:19:21 浏览: 58
好的,我为您编写一个简单的冒险游戏,支持存档功能。
```c++
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
// 游戏状态
enum GameState {
GAME_START, // 开始游戏
GAME_RUNNING, // 游戏运行中
GAME_OVER // 游戏结束
};
// 存档数据结构
struct SaveData {
int level; // 玩家等级
int health; // 玩家生命值
int gold; // 玩家金币数
};
// 游戏类
class Game {
public:
Game() {
state = GAME_START; // 初始化游戏状态为开始
level = 1; // 等级初始为1
health = 100; // 生命值初始为100
gold = 0; // 金币数初始为0
}
// 开始游戏
void start() {
cout << "欢迎来到冒险游戏!" << endl;
cout << "请选择:" << endl;
cout << "1. 开始游戏" << endl;
cout << "2. 读取存档" << endl;
int choice;
cin >> choice;
switch (choice) {
case 1:
startNewGame();
break;
case 2:
loadGame();
break;
default:
cout << "无效选择!" << endl;
break;
}
}
// 存档
void saveGame() {
SaveData data = { level, health, gold };
ofstream file("save.dat", ios::binary);
if (file.is_open()) {
file.write(reinterpret_cast<char*>(&data), sizeof(data));
file.close();
cout << "存档成功!" << endl;
}
else {
cout << "无法打开存档文件!" << endl;
}
}
// 读档
void loadGame() {
SaveData data;
ifstream file("save.dat", ios::binary);
if (file.is_open()) {
file.read(reinterpret_cast<char*>(&data), sizeof(data));
file.close();
level = data.level;
health = data.health;
gold = data.gold;
state = GAME_RUNNING;
cout << "读档成功!" << endl;
showStatus();
}
else {
cout << "无法打开存档文件!" << endl;
}
}
// 显示游戏状态
void showStatus() {
cout << "等级:" << level << endl;
cout << "生命值:" << health << endl;
cout << "金币数:" << gold << endl;
}
// 开始新游戏
void startNewGame() {
level = 1;
health = 100;
gold = 0;
state = GAME_RUNNING;
cout << "新游戏开始!" << endl;
showStatus();
}
// 游戏循环
void gameLoop() {
while (state == GAME_RUNNING) {
cout << "请选择下一步操作:" << endl;
cout << "1. 休息恢复生命值" << endl;
cout << "2. 探险获得金币和经验" << endl;
cout << "3. 存档并退出游戏" << endl;
int choice;
cin >> choice;
switch (choice) {
case 1:
rest();
break;
case 2:
explore();
break;
case 3:
saveGame();
state = GAME_OVER;
break;
default:
cout << "无效选择!" << endl;
break;
}
}
cout << "游戏结束!" << endl;
}
private:
GameState state; // 游戏状态
int level; // 等级
int health; // 生命值
int gold; // 金币数
// 休息
void rest() {
if (health >= 100) {
cout << "生命值已满,无需休息!" << endl;
}
else {
health += 10;
cout << "休息一段时间,生命值恢复了10点!" << endl;
showStatus();
}
}
// 探险
void explore() {
int goldEarned = rand() % 21 + 20; // 获得20~40金币
int expEarned = rand() % 11 + 10; // 获得10~20经验值
gold += goldEarned;
level += expEarned / 10;
cout << "探险获得了" << goldEarned << "金币和" << expEarned << "经验值!" << endl;
showStatus();
}
};
int main() {
Game game;
game.start();
game.gameLoop();
return 0;
}
```
这是一个简单的冒险游戏,支持存档功能。在程序运行时,可以选择开始新游戏或者读取存档。游戏过程中,可以选择休息、探险或者存档并退出游戏。程序会在存档文件中保存玩家的等级、生命值和金币数,读取存档时可以恢复游戏状态。
阅读全文