Commit Graph

74 Commits

Author SHA1 Message Date
Serendipity 955396a74d feat: 添加 env_logger 基础日志系统
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-31 13:41:06 +08:00
Serendipity ec4aae37d9 fix: 棋谱日期从 Unix 时间戳改为 ISO 8601 可读格式 2026-05-31 13:40:28 +08:00
Serendipity 3bbbe73b1f test: 添加前端核心逻辑和棋盘渲染单元测试
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-31 13:40:21 +08:00
Serendipity ac62da2ad8 feat: 添加 React Error Boundary 组件防止渲染异常白屏 2026-05-31 13:40:05 +08:00
Serendipity e1bf667519 fix: 禁用未完成的网络对战入口,标注开发中 2026-05-31 13:40:02 +08:00
Serendipity 43d50bd9b2 docs: 修正 CONTRIBUTING.md 中不存在的 tests/ e2e/ 目录引用 2026-05-31 13:39:52 +08:00
Serendipity cd9c3a79ab fix: 修复悔棋奇数步崩溃及空历史错误语义 (NoHistory)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-31 13:38:04 +08:00
Serendipity 8c3289e631 chore: 删除未使用的 get_board IPC 命令,修复 clippy needless_range_loop 警告
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-31 13:36:42 +08:00
Serendipity dd84ff95d5 feat: 添加图标文件,支持不同分辨率的应用界面 2026-05-31 13:28:40 +08:00
Serendipity 5598f72cf7 docs: 添加 CLAUDE.md 项目文档
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-31 13:20:05 +08:00
Serendipity 834d61f896 fix: 移除 GameMode 的 camelCase 重命名,修复前端传 Local/VsAi 无法匹配
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-31 13:09:11 +08:00
Serendipity 0b8130a71f fix: main.tsx 导入 i18n 初始化模块,修复界面显示原始 key
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-31 13:06:02 +08:00
Serendipity 90de72d67a fix: 打包目标改为 NSIS,移除需要 WiX 的 MSI
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-31 13:04:49 +08:00
Serendipity 605e01803f docs: 重写 README 并更新 .gitignore 适配 v2.0 架构
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-31 12:57:27 +08:00
Serendipity ffcc7a7675 fix: 代码审查修复 — serde camelCase/CSP/TS检查/replay/undo/AI禁手/星位/未使用依赖
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-31 12:51:53 +08:00
Serendipity bb4f393229 chore: 删除旧 C+IUP 代码,仅保留 Rust+Tauri+React v2.0 代码 2026-05-31 12:48:37 +08:00
Serendipity 4126b9f74c docs: 开源文件 — LICENSE/CHANGELOG/CODE_OF_CONDUCT/CONTRIBUTING/SECURITY/README
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-31 00:29:00 +08:00
Serendipity e395ea424b feat(frontend): App 路由集成 + 木纹风格 CSS
App.tsx 添加 menu/game/replay 三页面路由切换,MainMenu 新增
onReplayStart 属性区分对局与回放入口。App.css 实现经典木纹
视觉风格(深棕底色、米黄文字、皮革纹理按钮),index.css 基础
重置。修复 tsconfig 中 erasableSyntaxOnly 无效选项并安装
@types/node。
2026-05-31 00:27:34 +08:00
Serendipity 0138d80f2a feat(frontend): 对局视图 + 回放视图 + 计时器 hook 2026-05-31 00:25:41 +08:00
Serendipity a4b3b5c380 feat(frontend): 菜单组件 — 主菜单/本地双人/AI设置/网络/加载棋谱
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-31 00:25:19 +08:00
Serendipity 6d8a62eca5 feat(frontend): Canvas 棋盘渲染 — 木纹风格, 棋子渐变, 最后一手高亮
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-31 00:22:47 +08:00
Serendipity eeafa92e90 feat(frontend): 类型定义 + i18n 中英双语 + Zustand store
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-31 00:20:32 +08:00
Serendipity 36f6b15b8e feat(gui): Tauri IPC 命令 — new_game/place_piece/undo/ai_move/get_board/get_game_state
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-31 00:18:07 +08:00
Serendipity a17fba8ff5 feat: Tauri + React + Vite + TypeScript 前端脚手架
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-31 00:14:31 +08:00
Serendipity 820f35f444 feat(core): LLM AI — OpenAI 兼容 API 调用 + prompt/parse
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-31 00:09:44 +08:00
Serendipity 6a78631ad4 feat(core): 网络模块 — GameMessage 协议定义 + NetworkSession
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-31 00:05:58 +08:00
Serendipity 4dc837a29a feat(core): 棋谱记录 — JSON 序列化/反序列化 + 复盘重建
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-31 00:04:42 +08:00
Serendipity 556ee39a28 feat(core): AI Alpha-Beta 搜索 — Negamax + 剪枝 + 启发式排序
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-31 00:03:38 +08:00
Serendipity 5230adacde feat(core): AI 棋形评分模块 — 连五/活四/冲四/活三等棋形打分
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-31 00:00:48 +08:00
Serendipity 963fc78007 feat(core): 禁手规则 — 长连/双三/双四检测
实现黑棋禁手检测(is_forbidden),包含:
- 长连禁手(超过5子连珠)
- 双三禁手(同时形成两个活三)
- 双四禁手(同时形成两个活四)
- 白棋不受禁手规则限制

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-30 23:59:19 +08:00
Serendipity 4e336308ab feat(core): 棋盘引擎 — 不可变 Board, 落子/胜负/悔棋/候选位
实现不可变风格的 Board 结构体,place()/undo() 返回新 Board。
包含 bounds 检查、四方向五连胜负判定、悔棋历史管理、
空棋盘天元候选等功能。新增 11 个单元测试全部通过。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-30 23:55:21 +08:00
Serendipity fd307addc8 feat(core): 定义基础类型 — Position, Color, CellState, Move, GameConfig
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-30 23:51:00 +08:00
Serendipity 1e0d5f0c43 feat: 初始化 Cargo workspace + core crate 脚手架
创建 Rust 工作区,包含 core(纯游戏逻辑)和 gui(Tauri 占位)两个 crate。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-30 23:49:50 +08:00
Serendipity 1d2cd15fe9 docs: Gobang v2.0 详细实施计划 — 17 任务逐步构建
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-30 23:44:45 +08:00
Serendipity 214acaf0fe docs: Gobang v2.0 Rust 重写设计规格
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-30 23:34:22 +08:00
Serendipity c6053585d4 fix(gui): 增大主菜单窗口尺寸防止内容截断
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-02 16:02:59 +08:00
Serendipity e41e856fe0 feat(gui): 经典木纹风格 UI 视觉美化
- 配色方案:暖木色棋盘、米白窗口背景、深棕按钮,统一视觉语言
- 主菜单:IupFrame 分组(选择模式/功能),主按钮深棕底白字
- 棋盘渲染:渐变棋子(3层同心圆模拟立体感)、坐标标注(A-O/1-15)、
  蓝色圆环最后落子标记、深色棋盘边框、加大星位天元
- 侧边面板:IupFrame 包裹对局信息,按钮统一样式
- 设置页面:IupFrame 分组(基本/AI/大模型),按钮样式统一
- 网络/复盘对话框:IupFrame 分组,配色和按钮样式统一
- 全局字体:SimHei 11 作为默认字体

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-02 15:57:06 +08:00
Serendipity bf21efbbc0 rename: ENet 库目录重命名为 libs/ENET
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-02 15:41:48 +08:00
Serendipity b616a4662b rename: IUP 库目录重命名为 libs/IUP
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-02 15:39:42 +08:00
Serendipity 96a94aaddf feat: 集成大模型AI、重构构建系统并修复多项代码质量问题
- 构建系统:Makefile 迁移至 CMakeLists.txt,支持 cJSON 和 WinHTTP
- 项目结构:src/ 按功能拆分为 core/、gui/、network/、record/、llm/ 子目录
- 新功能:集成大模型 AI(WinHTTP + cJSON,兼容 OpenAI 协议),支持异步请求
- 渲染修复:IupDraw* 替换为 Windows GDI,修复画布黑屏问题
- 网络修复:ENet 初始化幂等化,实现真实 get_local_ip() (Winsock)
- 代码质量:删除死代码 (dfs/count_threats_in_direction),修复头文件守卫,
  sprintf→snprintf 防溢出,strncpy 安全终止,GDI 资源泄漏修复

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-02 15:32:54 +08:00
Serendipity f897536a45 refactor(config): 更新时间限制为30分钟并调整配置文件存储格式
refactor(globals): 移除不必要的GUI运行状态标志
refactor(gui): 更新注释以反映使用IUP库
refactor(ai): 修改威胁检测逻辑以提升威胁等级
refactor(config): 修改加载和保存配置的时间限制逻辑
refactor(network): 更新默认网络端口常量
refactor(record): 移除冗余注释并增强复盘步骤的合法性检查
2026-05-02 12:24:27 +08:00
Serendipity 249dc2ab4b build(installer): 精简安装包配置并移除NSIS脚本
- 删除 NSIS 安装脚本 (installer.nsi),统一使用 Inno Setup
- 简化 Inno Setup 脚本,仅打包核心运行文件 (gobang_gui.exe, iup.dll) 和记录目录
- 移除源码、文档等开发文件,减小安装包体积
- 更新 README.md 以反映 v9.0 版本变更,专注于图形界面和网络功能
v1.9.0
2026-03-17 18:10:40 +08:00
Serendipity 88f12bcfea feat(network): 集成ENet库并实现局域网联机对战功能
- 添加ENet库作为网络通信基础,替换原有的原生Socket实现
- 扩展游戏模式支持局域网联机对战(PvP网络模式)
- 重构网络状态结构以适配ENet的Host/Peer模型
- 在图形界面中添加网络对战菜单,支持创建房间和加入房间
- 实现网络消息的发送与接收,包括落子、断开连接等消息类型
- 为网络对战添加定时器轮询机制,实时处理网络事件
- 更新构建系统以编译和链接ENet库
2026-03-17 17:57:04 +08:00
Serendipity 0c9cfba81b refactor(gui): 拆分大型 GUI 模块为多个功能文件
将单一的 gui.c 文件拆分为 gui_core.c、gui_draw.c、gui_game.c 和 gui_replay.c,并引入 gui_internal.h 作为内部头文件。更新 Makefile 以包含新的源文件。同时修复了复盘模式中主菜单的隐藏时机,并改进了记录文件的加载逻辑以更安全地处理 CSV 解析。

- 提取核心 GUI 初始化、事件循环和坐标转换到 gui_core.c
- 分离绘图功能(棋盘、棋子)到 gui_draw.c
- 将游戏逻辑(PvP/PvE)移动到 gui_game.c
- 独立复盘功能到 gui_replay.c,优化文件选择流程
- 修复 btn_replay_cb 中过早隐藏主菜单的问题
- 增强 load_game_from_file 的健壮性,使用 sscanf 替代 fscanf 并改进行处理
2026-03-17 17:13:46 +08:00
Serendipity dd2b6fd903 refactor: 重构项目为纯GUI版本并清理冗余代码
- 移除控制台版本相关代码,包括game_mode、ui、init_board等模块
- 将empty_board函数移至gobang.c核心模块
- 简化main.c仅保留GUI启动逻辑
- 更新Makefile仅构建GUI版本
- 清理过时文档和配置文件
- 优化GUI菜单和游戏窗口交互逻辑
- 添加AI难度配置支持
2026-03-17 16:57:27 +08:00
Serendipity 0baab8bec6 feat(gui): 添加主菜单和游戏模式选择界面
- 新增 GUI 主菜单,支持玩家对战、人机对战、复盘模式和设置选项
- 新增游戏设置对话框,可配置棋盘大小、禁手、计时器和 AI 难度
- 重构 GUI 游戏窗口,集成悔棋、保存和返回菜单功能
- 更新 Makefile 以支持 PowerShell 并添加新源文件编译
- 调整窗口尺寸为 1000x800 以提供更好的游戏体验
2026-03-17 15:41:48 +08:00
Serendipity d796065bb9 chore: 添加预编译的IUP库文件并更新.gitignore
添加Windows平台所需的IUP GUI库文件至libs目录,包括iupcontrols、iupgl、iupim等核心组件。
同时更新.gitignore文件,优化构建产物和临时文件的忽略规则,将临时游戏存档从*.csv改为records/目录。
2026-03-16 13:28:55 +08:00
Serendipity 1332d14347 docs: 更新项目文档至v8.3并调整.gitignore
- 更新项目要求文档至v8.3版本,说明引入IUP图形库和构建系统优化
- 更新项目简介,详细说明v8.3的图形界面重构和目录结构调整
- 更新GUI说明文档,从SDL3迁移至IUP,并更新编译和运行指南
- 在.gitignore中添加obj目录,避免编译生成的对象文件被提交
2026-03-16 13:26:28 +08:00
Serendipity ec63b6d97c docs: 更新文档以反映项目结构变更和构建系统迁移
- 更新版本号至v8.3,反映图形库迁移至IUP和构建系统引入Makefile
- 重构README.md,重点介绍新的目录结构和Makefile编译方式
- 更新BUILD.md,详细说明新的make命令用法
- 修改main.c中的编译指令示例,从原始gcc命令改为make命令
- 调整gui.c中的注释格式以改善可读性
2026-03-16 13:22:30 +08:00
Serendipity 8bddf6bb37 feat(gui): 迁移图形界面库从SDL3到IUP
- 移除SDL3依赖,引入IUP图形界面库
- 更新Makefile以支持IUP编译配置
- 重构GUI模块,移除SDL相关代码
- 更新全局变量和类型定义,移除SDL依赖
- 添加IUP头文件到项目库目录
- 删除手动帧率控制(SDL_Delay),依赖IUP事件循环
- 更新编译脚本和文档说明
2026-03-16 13:14:01 +08:00