mirror of
https://github.com/LHY0125/Gobang-Game.git
synced 2026-05-09 18:09:46 +08:00
feat(gui): 添加主菜单和游戏模式选择界面
- 新增 GUI 主菜单,支持玩家对战、人机对战、复盘模式和设置选项 - 新增游戏设置对话框,可配置棋盘大小、禁手、计时器和 AI 难度 - 重构 GUI 游戏窗口,集成悔棋、保存和返回菜单功能 - 更新 Makefile 以支持 PowerShell 并添加新源文件编译 - 调整窗口尺寸为 1000x800 以提供更好的游戏体验
This commit is contained in:
@@ -3,14 +3,18 @@
|
||||
|
||||
# 编译器设置
|
||||
CC = gcc
|
||||
# 显式指定 Shell 为 PowerShell
|
||||
SHELL = D:/PowerShell/PowerShell-7.5.4/PowerShell.exe
|
||||
.SHELLFLAGS = -NoProfile -Command
|
||||
|
||||
CFLAGS = -Wall -Wextra -std=c17 -O2 -Iinclude -finput-charset=UTF-8 -fexec-charset=UTF-8
|
||||
LDFLAGS = -lws2_32
|
||||
|
||||
# IUP路径设置
|
||||
IUP_PATH = libs/iup-3.31_Win64_dllw6_lib
|
||||
IUP_INCLUDE = -I$(IUP_PATH)/include
|
||||
IUP_INCLUDE = "-I$(IUP_PATH)/include"
|
||||
# IUP链接库: iup, gdi32, comdlg32, comctl32, uuid, ole32
|
||||
IUP_LIBS = -L$(IUP_PATH) -liup -lgdi32 -lcomdlg32 -lcomctl32 -luuid -lole32
|
||||
IUP_LIBS = "-L$(IUP_PATH)" -liup -lgdi32 -lcomdlg32 -lcomctl32 -luuid -lole32
|
||||
|
||||
# 目录设置
|
||||
SRC_DIR = src
|
||||
@@ -20,7 +24,8 @@ BIN_DIR = bin
|
||||
# 源文件
|
||||
COMMON_SOURCES = $(SRC_DIR)/main.c $(SRC_DIR)/gobang.c $(SRC_DIR)/ai.c $(SRC_DIR)/config.c \
|
||||
$(SRC_DIR)/game_mode.c $(SRC_DIR)/globals.c $(SRC_DIR)/init_board.c \
|
||||
$(SRC_DIR)/network.c $(SRC_DIR)/record.c $(SRC_DIR)/ui.c $(SRC_DIR)/gui.c
|
||||
$(SRC_DIR)/network.c $(SRC_DIR)/record.c $(SRC_DIR)/ui.c $(SRC_DIR)/gui.c \
|
||||
$(SRC_DIR)/gui_menu.c
|
||||
|
||||
GUI_SOURCES = $(COMMON_SOURCES)
|
||||
CONSOLE_SOURCES = $(COMMON_SOURCES)
|
||||
@@ -35,10 +40,10 @@ GUI_TARGET = $(BIN_DIR)/gobang_gui.exe
|
||||
# 默认目标
|
||||
all: directories $(CONSOLE_TARGET) $(GUI_TARGET)
|
||||
|
||||
# 创建目录
|
||||
# 创建目录 (PowerShell 语法)
|
||||
directories:
|
||||
-mkdir $(OBJ_DIR)
|
||||
-mkdir $(BIN_DIR)
|
||||
if (!(Test-Path "$(OBJ_DIR)")) { New-Item -ItemType Directory -Path "$(OBJ_DIR)" | Out-Null }
|
||||
if (!(Test-Path "$(BIN_DIR)")) { New-Item -ItemType Directory -Path "$(BIN_DIR)" | Out-Null }
|
||||
|
||||
# 控制台版本
|
||||
$(CONSOLE_TARGET): $(COMMON_OBJECTS)
|
||||
@@ -47,18 +52,17 @@ $(CONSOLE_TARGET): $(COMMON_OBJECTS)
|
||||
# GUI版本
|
||||
$(GUI_TARGET): $(COMMON_OBJECTS)
|
||||
$(CC) $(CFLAGS) $(IUP_INCLUDE) -o $@ $^ $(IUP_LIBS) $(LDFLAGS)
|
||||
copy $(subst /,\,$(IUP_PATH))\iup.dll $(BIN_DIR) 2>nul || echo Warning: Could not copy iup.dll
|
||||
Copy-Item -Path "$(subst /,\,$(IUP_PATH))\iup.dll" -Destination "$(BIN_DIR)" -Force
|
||||
|
||||
# 通用目标文件编译规则
|
||||
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
|
||||
$(CC) $(CFLAGS) $(IUP_INCLUDE) -c -o $@ $<
|
||||
|
||||
# 清理规则
|
||||
# 清理规则 (PowerShell 语法)
|
||||
clean:
|
||||
-del /Q $(OBJ_DIR)\*.o $(BIN_DIR)\*.exe $(BIN_DIR)\*.dll
|
||||
-rmdir $(OBJ_DIR)
|
||||
-rmdir $(BIN_DIR)
|
||||
|
||||
if (Test-Path "$(OBJ_DIR)") { Remove-Item -Path "$(OBJ_DIR)" -Recurse -Force }
|
||||
if (Test-Path "$(BIN_DIR)") { Remove-Item -Path "$(BIN_DIR)" -Recurse -Force }
|
||||
|
||||
# 只编译控制台版本
|
||||
console: directories $(CONSOLE_TARGET)
|
||||
|
||||
@@ -67,17 +71,17 @@ gui: directories $(GUI_TARGET)
|
||||
|
||||
# 安装规则(可选)
|
||||
install: all
|
||||
@echo Installing executables...
|
||||
copy $(CONSOLE_TARGET) C:\Program Files\Gobang\ 2>nul || echo Install directory not found
|
||||
copy $(GUI_TARGET) C:\Program Files\Gobang\ 2>nul || echo Install directory not found
|
||||
Write-Host "Installing executables..."
|
||||
Copy-Item -Path "$(CONSOLE_TARGET)" -Destination "C:\Program Files\Gobang\" -Force
|
||||
Copy-Item -Path "$(GUI_TARGET)" -Destination "C:\Program Files\Gobang\" -Force
|
||||
|
||||
# 运行控制台版本
|
||||
run-console: $(CONSOLE_TARGET)
|
||||
.\$(CONSOLE_TARGET)
|
||||
& ".\$(CONSOLE_TARGET)"
|
||||
|
||||
# 运行GUI版本
|
||||
run-gui: $(GUI_TARGET)
|
||||
.\$(GUI_TARGET)
|
||||
& ".\$(GUI_TARGET)"
|
||||
|
||||
# 帮助信息
|
||||
help:
|
||||
|
||||
Reference in New Issue
Block a user