c语言的,要求用纯c写一个纯文字的小游戏(不用太长),不能是市面上出现过的,要求必须原创,至少六个函数(),要有存档功能,有必要的文字说明

c语言编写纯文字小游戏_#define

#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;
}