refactor: 重构项目为纯GUI版本并清理冗余代码

- 移除控制台版本相关代码,包括game_mode、ui、init_board等模块
- 将empty_board函数移至gobang.c核心模块
- 简化main.c仅保留GUI启动逻辑
- 更新Makefile仅构建GUI版本
- 清理过时文档和配置文件
- 优化GUI菜单和游戏窗口交互逻辑
- 添加AI难度配置支持
This commit is contained in:
2026-03-17 16:57:27 +08:00
parent 0baab8bec6
commit dd2b6fd903
30 changed files with 295 additions and 3402 deletions
-30
View File
@@ -153,34 +153,4 @@ void save_game_config();
*/
void reset_to_default_config();
/**
* @brief 显示当前配置
*/
void display_current_config();
/**
* @brief 配置棋盘大小
*/
void config_board_size();
/**
* @brief 配置禁手规则
*/
void config_forbidden_moves();
/**
* @brief 配置计时器
*/
void config_timer();
/**
* @brief 配置网络参数
*/
void config_network();
/**
* @brief 配置管理主菜单
*/
void config_management_menu();
#endif // CONFIG_H
-108
View File
@@ -1,108 +0,0 @@
/**
* @file game_mode.h
* @brief 五子棋游戏框架头文件
* @note 本文件定义了五子棋游戏的四种主要模式:
* 1. AI对战模式
* 2. 双人对战模式
* 3. 网络对战模式
* 4. 复盘模式
*/
#ifndef GAME_MODE_H
#define GAME_MODE_H
#include "gobang.h"
#include "config.h"
/**
* @brief 从用户获取整数输入
*
* @param prompt 提示信息
* @param min 最小值
* @param max 最大值
* @return int 输入的整数
*/
int get_integer_input(const char *prompt, int min, int max);
/**
* @brief 处理玩家回合
*
* @param x 玩家输入的横坐标
* @param y 玩家输入的纵坐标
* @return true 输入有效
* @return false 输入无效
*/
bool parse_player_input(int *x, int *y);
/**
* @brief 解析网络对战模式下的玩家输入
* @param x 行坐标指针
* @param y 列坐标指针
* @return true 有效坐标输入
* @return false 特殊命令或无效输入
*/
bool parse_network_player_input(int *x, int *y);
/**
* @brief 处理AI回合
*
* @param current_player 当前玩家
*/
bool handle_player_turn(int current_player);
/**
* @brief AI对战模式
* 实现玩家与AI的对战逻辑
*/
void run_ai_game();
/**
* @brief 双人对战模式
* 实现两个玩家之间的对战逻辑
*/
void run_pvp_game();
/**
* @brief 复盘模式
* 加载并重现历史对局
*/
void run_review_mode();
/**
* @brief 网络对战模式
* 实现两台设备之间的在线对战
*/
void run_network_game();
/**
* @brief 处理网络玩家回合
* @param current_player 当前玩家
* @param is_local_turn 是否为本地玩家回合
* @return true 回合处理成功
* @return false 游戏结束或网络错误
*/
bool handle_network_player_turn(int current_player, bool is_local_turn);
/**
* @brief 网络游戏主循环
* @return true 游戏正常结束
* @return false 网络错误
*/
bool network_game_loop();
/**
* @brief 显示游戏规则
*/
void show_game_rules();
/**
* @brief 显示关于游戏信息
*/
void show_about_game();
/**
* @brief 启动图形化界面
*/
void run_gui_mode();
#endif // GAME_MODE_H
+5
View File
@@ -20,6 +20,11 @@
// 函数原型
// --- 游戏核心逻辑 ---
/**
* @brief 初始化棋盘,将所有位置设置为空(EMPTY)
*/
void empty_board();
/**
* @brief 检查指定坐标是否为有效落子点(在棋盘内且为空)
* @param x 待检查的行坐标 (0-based)
+12
View File
@@ -81,4 +81,16 @@ void start_pve_game_gui();
*/
void start_replay_gui();
/**
* @brief 启动图形化界面模式
* @note 替代原来的 main 函数中的 GUI 分支逻辑
*/
int init_gui(); // Already declared
/**
* @brief 运行图形化界面模式
* @details 主循环处理事件、渲染画面和更新状态
*/
void run_gui_mode();
#endif // GUI_H
-42
View File
@@ -1,42 +0,0 @@
/**
* @file init_board.h
* @brief 初始化游戏棋盘头文件
* @note 本文件定义了初始化游戏棋盘的相关函数和全局变量。
* 它负责设置游戏的初始状态,包括棋盘大小、玩家标识、游戏规则等。
*/
#ifndef INIT_BOARD_H
#define INIT_BOARD_H
#include "gobang.h"
// --- 游戏初始化 ---
/**
* @brief 初始化棋盘,将所有位置设置为空(EMPTY)
*/
void empty_board();
/**
* @brief 将当前棋盘状态打印到控制台
*/
void print_board();
/**
* @brief 设置当前游戏的棋盘大小
*/
void setup_board_size();
/**
* @brief 设置游戏选项,如是否启用禁手、计时器等
*/
void setup_game_options();
/**
* @brief 决定先手玩家
* @param player1 玩家1的标识
* @param player2 玩家2的标识
* @return 返回先手玩家的标识
*/
int determine_first_player(int player1, int player2);
#endif // INIT_H
-12
View File
@@ -10,12 +10,6 @@
#include "gobang.h"
// --- 复盘与记录功能 ---
/**
* @brief 进入复盘流程,回顾整局游戏
* @param game_mode 游戏模式(1为人机对战,2为双人对战)
*/
void review_process(int game_mode);
/**
* @brief 将当前对局记录保存到文件
* @param filename 要保存到的文件名
@@ -24,12 +18,6 @@ void review_process(int game_mode);
*/
int save_game_to_file(const char *filename, int game_mode);
/**
* @brief 处理保存游戏记录的逻辑
* @param game_mode 游戏模式
*/
void handle_save_record(int game_mode);
/**
* @brief 从文件加载游戏记录
* @param filename 要加载的文件名
-69
View File
@@ -1,69 +0,0 @@
/**
* @file ui.h
* @brief
* @note 本文件定义了用户界面相关的函数和数据结构。
* 它负责处理用户输入、显示游戏界面、提示信息等与用户交互的功能。
*/
#ifndef UI_H
#define UI_H
#include "gobang.h"
/**
* @brief UI模块 - 用户界面相关功能
* @author 刘航宇
* @date 2025-07-10
* @version 5.0
*/
/**
* @brief 显示游戏主菜单
*/
void display_main_menu();
/**
* @brief 显示棋盘
*/
void display_board();
/**
* @brief 显示游戏状态信息
* @param current_player 当前玩家
* @param step_count 当前步数
*/
void display_game_status(int current_player, int step_count);
/**
* @brief 显示获胜信息
* @param winner 获胜者
*/
void display_winner(int winner);
/**
* @brief 显示游戏设置菜单
*/
void display_settings_menu();
/**
* @brief 清屏函数
*/
void clear_screen();
/**
* @brief 暂停等待用户输入
* @param prompt 提示信息
*/
void pause_for_input(const char* prompt);
/**
* @brief 显示游戏规则
*/
void display_game_rules();
/**
* @brief 显示关于信息
*/
void display_about();
#endif // UI_H