c语言的,要求用纯c写一个纯文字的小游戏(不用太长),不能是市面上出现过的,要求必须原创,至少六个函数(),要有存档功能,有必要的文字说明
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_CHAPTER 4
#define MAX_OPTION 3
#define MAX_SAVE 10
typedef struct {
char title[100];
char content[1000];
int options[MAX_OPTION];
} Chapter;
Chapter chapters[MAX_CHAPTER] = {
{"第一章", "你是一个年轻的冒险者,正在探险途中。你来到了一个岔路口,左边通向一片森林,右边通向一座山峰。你该怎么做?\n1.向左走\n2.向右走\n", {1, 2}},
{"第二章", "你来到了森林,这里充满了危险和机遇。在森林中,你看到了一个神秘的洞穴,里面似乎有着珍贵的宝藏。但是洞穴深处有很多陷阱和怪物,你是否要冒险一试?\n1.冒险进入洞穴\n2.离开森林,前往山峰\n", {3, 2}},
{"第三章", "你进入了洞穴,这里黑暗潮湿,陷阱和怪物随处可见。你需要小心翼翼地前进,以免掉入陷阱或者被怪物攻击。在前进的过程中,你看到了一扇门,门上写着“禁止入内”。你会怎么做?\n1.进入门内探寻\n2.绕过门继续前进\n", {4, 5}},
{"第四章", "你进入了门内,发现这里是一个神秘的秘室。秘室中有一块珍贵的宝石,但是宝石被一个凶恶的魔兽守护着。你必须战胜魔兽才能获得宝石。你准备好了吗?\n1.战斗!\n2.逃跑!\n", {6, 5}}
};
int current_chapter = 0;
int save_count = 0;
int saved_chapter[MAX_SAVE] = {0};
int get_choice() {
int choice = 0;
do {
printf("请输入你的选择:");
scanf("%d", &choice);
if (choice != 1 && choice != 2) {
printf("无效的选择,请重新输入:");
}
} while (choice != 1 && choice != 2);
return choice;
}
void print_chapter(int chapter_id) {
printf("%s\n", chapters[chapter_id].title);
printf("%s", chapters[chapter_id].content);
}
void play_game() {
while (current_chapter < MAX_CHAPTER) {
print_chapter(current_chapter);
int choice = get_choice();
saved_chapter[save_count++] = current_chapter;
current_chapter = chapters[current_chapter].options[choice - 1] - 1;
}
printf("你已经完成了游戏!\n");
}
void load_game() {
printf("你有以下存档:\n");
for (int i = 0; i < save_count; i++) {
printf("%d. %s\n", i + 1, chapters[saved_chapter[i]].title);
}
int choice = 0;
printf("请输入你要加载的存档编号:");
scanf("%d", &choice);
while (choice < 1 || choice > save_count) {
printf("无效的选择,请重新输入:");
scanf("%d", &choice);
}
current_chapter = saved_chapter[choice - 1];
}
void save_game() {
if (save_count >= MAX_SAVE) {
printf("存档数量已达上限,无法保存!\n");
return;
}
saved_chapter[save_count++] = current_chapter;
printf("存档成功!\n");
}
void print_help() {
printf("这是一个冒险游戏,你需要做出不同的选择,每个选择都会影响游戏的进程和结局。\n");
printf("游戏中使用数字键来选择不同的选项,每个章节最多有%d个选项。\n", MAX_OPTION);
printf("游戏中可以随时进行存档和读档,最多可以保存%d个存档。\n", MAX_SAVE);
}
void print_menu() {
printf("欢迎来到冒险游戏!\n");
printf("1.开始新游戏\n");
printf("2.读取存档\n");
printf("3.保存游戏\n");
printf("4.游戏帮助\n");
printf("5.退出游戏\n");
}
int main() {
int choice = 0;
while (choice != 5) {
print_menu();
printf("请输入你的选择:");
scanf("%d", &choice);
switch (choice) {
case 1:
current_chapter = 0;
save_count = 0;
play_game();
break;
case 2:
load_game();
break;
case 3:
save_game();
break;
case 4:
print_help();
break;
case 5:
printf("谢谢游玩!\n");
break;
default:
printf("无效的选择,请重新输入!\n");
break;
}
}
return 0;
}