mirror of
https://github.com/LHY0125/Gobang-Game.git
synced 2026-05-09 18:09:46 +08:00
refactor: 重构项目为纯GUI版本并清理冗余代码
- 移除控制台版本相关代码,包括game_mode、ui、init_board等模块 - 将empty_board函数移至gobang.c核心模块 - 简化main.c仅保留GUI启动逻辑 - 更新Makefile仅构建GUI版本 - 清理过时文档和配置文件 - 优化GUI菜单和游戏窗口交互逻辑 - 添加AI难度配置支持
This commit is contained in:
@@ -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
|
||||
@@ -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
|
||||
@@ -20,6 +20,11 @@
|
||||
// 函数原型
|
||||
|
||||
// --- 游戏核心逻辑 ---
|
||||
/**
|
||||
* @brief 初始化棋盘,将所有位置设置为空(EMPTY)
|
||||
*/
|
||||
void empty_board();
|
||||
|
||||
/**
|
||||
* @brief 检查指定坐标是否为有效落子点(在棋盘内且为空)
|
||||
* @param x 待检查的行坐标 (0-based)
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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 要加载的文件名
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user