用 C 语言写游戏是一个很好的学习项目,可以锻炼你的编程能力和游戏开发基础。下面我将为你提供一个简单的 文字冒险游戏 的示例,使用 C 语言实现。
✅ 一、游戏结构概览
这个游戏是一个简单的文字冒险游戏,玩家可以通过输入命令(如 go east、take key、use key)来探索一个简单的世界。
✅ 二、游戏代码示例(C语言)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 游戏状态
typedef enum {
START,
PLAYING,
FINISHED
} GameState;
// 游戏状态变量
GameState game_state = START;
// 游戏地图
typedef struct {
char *description;
char *items[];
} Room;
Room rooms[] = {
{"You are in a dark room. There is a door to the east.", {"key"}},
{"You are in a bright room. There is a key on the table.", {}},
{"You are in a corridor. There is a door to the west and east.", {}}
};
// 游戏命令
typedef enum {
GO,
TAKE,
USE,
QUIT
} Command;
// 游戏命令处理函数
void handle_command(Command cmd, char *input) {
char *token = strtok(input, " ");
if (cmd == GO) {
if (token != NULL) {
int i;
for (i = 0; i < sizeof(rooms) / sizeof(Room); i++) {
if (strcmp(rooms[i].description, token) == 0) {
game_state = PLAYING;
break;
}
}
if (game_state == FINISHED) {
printf("Game over. You can't go further.\n");
}
} else {
printf("Invalid command. Try: go east, go west, take key, use key, quit.\n");
}
} else if (cmd == TAKE) {
if (token != NULL) {
int i;
for (i = 0; i < sizeof(rooms) / sizeof(Room); i++) {
if (strcmp(rooms[i].description, token) == 0) {
if (rooms[i].items) {
printf("You take the %s.\n", rooms[i].items[0]);
} else {
printf("No item found.\n");
}
break;
}
}
} else {
printf("Invalid command. Try: take key, use key.\n");
}
} else if (cmd == USE) {
if (token != NULL) {
int i;
for (i = 0; i < sizeof(rooms) / sizeof(Room); i++) {
if (strcmp(rooms[i].description, token) == 0) {
if (rooms[i].items) {
printf("You use the %s.\n", rooms[i].items[0]);
} else {
printf("No item found.\n");
}
break;
}
}
} else {
printf("Invalid command. Try: use key.\n");
}
} else if (cmd == QUIT) {
game_state = FINISHED;
printf("Game over. Goodbye!\n");
}
}
int main() {
char input[100];
printf("Welcome to the Adventure Game!\n");
while (game_state == PLAYING) {
printf("Current Room: %s\n", rooms[0].description);
printf("Available commands: go, take, use, quit\n");
printf("Enter your command: ");
fgets(input, sizeof(input), stdin);
input[strlen(input) - 1] = '\0'; // 去掉换行符
handle_command(GO, input);
}
return 0;
}
✅ 三、运行说明
-
编译代码:
gcc adventure_game.c -o adventure_game -
运行游戏:
./adventure_game -
输入命令试试:
go easttake keyuse keyquit
✅ 四、扩展建议
如果你想扩展这个游戏,可以考虑以下方向:
- 添加更多房间和物品
- 添加敌人或怪物
- 添加地图和方向(北、南、东、西)
- 添加战斗系统
- 添加保存和加载游戏功能
- 使用图形界面(如 SDL、SFML)
✅ 五、总结
这是一个简单的 C 语言文字游戏示例,可以作为学习 C 语言和游戏开发的基础。你可以在此基础上继续扩展,添加更多功能和复杂性。
如果你有特定的游戏类型(如回合制、动作、策略等),我可以为你定制更复杂的实现。欢迎继续提问!