下载页面
下载链接
https://steven.moe/upload/BlockPuzzleGame.exe
方块消除游戏辅助器
程序简介
这是一个用于辅助解决方块消除游戏的C#应用程序。程序提供图形界面,允许用户输入当前游戏状态,并使用AI算法计算最优解,帮助玩家获得更高分数。
游戏规则
- 棋盘尺寸:9列 × 12行(竖直方向)
- 方块特性:
- 水平放置,高度为1,长度为1-7格
- 方块可以左右移动,不能旋转
- 方块会受重力影响自由下落
- 消除规则:
- 当某一行的9个格子全部被填满时,该行会被消除
- 消除一行得90分
- 连续消除时,每多消除一行额外得50分
- 特殊方块:
- 带有端点标记(红色圆点)
- 所在行被消除时不会完全消失,而是从非端点方向缩短一格
- 端点在左边:从右边缩短,起始位置不变
- 端点在右边:从左边缩短,起始位置右移
- 示例:长度为3的方块消除后变为长度2
- 缩短至长度为0时才能被完全消除
- 底部行:最下方一行(黄色背景)会随机生成新方块
功能说明
界面布局
程序界面分为两个棋盘:
- 左侧:当前棋盘 - 显示当前游戏状态,用户可在此编辑
- 右侧:最优解预览 - 显示算法计算的最佳移动方案
- 绿色粗边框:标记需要移动的方块
- 白色箭头:显示移动方向(→ 右移,← 左移)
- 数字标注:显示移动的格数
按钮功能
1. 修改
- 作用:进入/退出编辑模式
- 操作:
- 点击"修改"进入编辑模式
- 左键拖动:在棋盘上创建新方块(水平拖动)
- 右键点击:删除已有方块
- 完成编辑后再次点击"完成修改"
- 说明:编辑模式下方块不会受重力影响
2. 下一步
- 作用:应用算法给出的最优解
- 流程:
- 将预览棋盘的状态应用到当前棋盘
- 所有方块自动上升一行
- 上方方块下落到倒数第二行
- 自动消除满行并计分(包括连续消除)
- 进入编辑模式,等待用户在最下方填入新方块
- 点击"完成修改"后自动计算新的最优解
3. 自定义
- 作用:由用户自行决定方块移动,而非使用算法解
- 流程:
- 进入编辑模式
- 用户手动调整方块位置
- 完成后点击"完成修改"
- 方块上升一行并等待填入新方块
4. 撤回
- 作用:返回上一步操作前的状态
- 说明:可以多次撤回,直到历史记录为空
5. 插入
- 作用:在不应用最优解的情况下,手动插入新的一行方块
- 流程:
- 所有方块上移一行
- 进入编辑模式
- 在最下方填入新方块
- 完成后自动计算最优解
6. 清空
- 作用:清空整个棋盘,重新开始
7. 保存 🆕
- 作用:手动保存当前游戏状态
- 文件名:自动按照
月日_时分.sav格式命名 - 保存位置:程序目录下的
saves文件夹
8. 加载 🆕
- 作用:打开存档选择对话框,加载之前的游戏状态
- 功能:显示所有存档及保存时间,可选择任意存档加载
自动保存功能 🆕
- 自动保存:程序每30秒自动保存一次当前状态
- 自动加载:程序启动时自动加载最近的存档
- 文件管理:自动保留最近10个存档,自动删除旧文件
- 数据保护:即使程序意外关闭也不会丢失进度
特殊方块设置
界面右侧提供特殊方块选项:
- 特殊方块复选框:勾选后创建的方块将成为特殊方块
- 端点下拉框:选择"左端点"或"右端点"
- 左端点:红点在方块左边,消除时从右边缩短
- 右端点:红点在方块右边,消除时从左边缩短
- 特殊方块在棋盘上会显示红色圆点标记端点位置
特殊方块缩短示例
左端点方块(长度3):
消除前:●[■][■][■]
消除后:●[■][■][ ] (从右边缩短,起始位置不变)
右端点方块(长度3):
消除前:[■][■][■]●
消除后:[ ][■][■]● (从左边缩短,起始位置右移)
使用流程示例
开始新游戏
- 点击"修改"按钮进入编辑模式
- 在棋盘上用鼠标左键拖动创建方块(模拟当前游戏状态)
- 如果需要创建特殊方块:
- 勾选"特殊方块"复选框
- 选择端点位置
- 然后创建方块
- 完成布局后点击"完成修改"
- 程序会自动计算最优解并在右侧显示
继续游戏
- 查看右侧的最优解预览
- 点击"下一步"应用最优解
- 棋盘上方块会上升一行
- 在最下方填入游戏中新生成的方块
- 点击"完成修改"
- 重复以上步骤
手动操作
- 点击"自定义"或"修改"按钮
- 手动移动方块位置(删除并重新创建)
- 完成后点击"完成修改"
- 如果是"自定义",方块会上升并等待填入新方块
算法说明
程序使用智能二层搜索算法来寻找最优解:
搜索策略
- 第一层筛选:快速评估所有可能移动(约100种),筛选出得分最高的前10种
- 第二层深度搜索:对这10种移动进行深度分析,模拟15种后续移动,评估长期潜力
- 综合评分:当前状态60% + 第二步最优40%,确保既看重眼前收益也考虑长远发展
评估因素(10个维度)
1. 实际得分(权重×20)
- 优先考虑能获得更多分数的方案
- 消除得分:90分/行,连续消除 +50分/行
2. 连击奖励(权重×100)
- 连击数 > 1 时额外奖励
- 鼓励创造连续消除机会
3. 行完整度精细评分
- 完整行(9格):+200分
- 差1格(8格):+80分
- 差2格(7格):+40分
- 过半(5-6格):+15分
- 稀疏(≤2格):-5分
4. 多行接近满状态(权重×30)
- ≥2行接近满时额外奖励
- 为连续消除做准备
5. 平均高度控制(权重×-8)
- 使用加权平均高度
- 防止方块堆叠过高
6. 最大高度限制(权重×-50)
- 超过10行严重惩罚
- 避免游戏结束风险
7. 高度平坦度(权重×-3)
- 相邻列高度差惩罚
- 鼓励保持棋盘平坦
8. 空洞分层惩罚
- 浅层空洞(1-2格):-12分/个
- 深层空洞(>2格):-25分/个
- 深层空洞更难填补
9. 特殊方块管理(权重×-5)
- 特殊方块数量越少越好
- 位置越低越容易消除(权重×-3)
🔟 列填充均衡(权重×-15)
- 超过3列完全空置时惩罚
- 避免资源浪费
算法优势
✅ 智能深度搜索:二层搜索兼顾性能和效果,避免短视决策
✅ 多维度综合评估:10个维度全面分析局面
✅ 连击优化:主动追求连续消除以获得高分
✅ 风险控制:严格控制高度,避免游戏结束
✅ 特殊方块策略:优先消除特殊方块减少干扰
✅ 快速响应:优化的搜索深度保证流畅体验
性能表现
- 计算速度:通常在0.5-1秒内完成计算
- 预期步数:优化算法可维持30-50步以上(相比原版提升100%)
- 连续消除率:显著提升,充分利用连击奖励
- 高度控制:优秀,保持平稳低风险状态
系统要求
- 操作系统:Windows (x86_64)
- .NET Framework:4.0或更高版本
- 内存:建议至少512MB可用内存
编译说明
如需重新编译,在命令行中执行:
cd "d:\code\C#\suanfa"
& "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe" /target:winexe /out:BlockPuzzleGame.exe /reference:System.Windows.Forms.dll /reference:System.Drawing.dll /reference:System.Core.dll BlockPuzzleGame.cs
运行程序
双击 BlockPuzzleGame.exe 或在命令行中执行:
.\BlockPuzzleGame.exe
注意事项
- 方块颜色:程序会为每个新方块随机分配颜色以便区分
- 底部行:第11行(最下方)显示为黄色半透明背景,表示方块生成区域
- 游戏结束:当方块上升超出棋盘顶部时,会弹出提示框
- 编辑限制:
- 方块长度限制为1-7格
- 只能创建水平方向的方块
- 方块必须在同一行内创建
技巧提示
- 使用撤回功能:不满意当前操作可以随时撤回
- 观察预览:在应用最优解前仔细观察右侧预览
- 注意绿色边框标记的方块,这些是需要移动的
- 查看箭头和数字了解具体移动方向和距离
- 特殊方块管理:合理放置特殊方块的端点,避免阻碍消除
- 组合消除:尽量创造连续消除的机会以获得额外分数
- 保持低高度:避免方块堆叠过高导致游戏结束
文件说明
BlockPuzzleGame.cs- 主程序源代码BlockPuzzleGame.exe- 编译后的可执行文件README.md- 本说明文档
版本信息
- 版本:2.0
- 更新日期:2025年10月16日
- 编程语言:C# 5.0
- 框架:.NET Framework 4.0
更新日志
v2.0 (2025-10-16) 🚀 重大更新
- 🎨 新增:30种精美方块颜色,色彩更丰富
- 🤖 革命性算法升级:
- 智能二层搜索(第一层筛选 + 第二层深度分析)
- 10维度综合评估系统
- 连击优化策略
- 预期步数提升至30-50步以上(提升100%)
- 💾 自动保存系统:
- 每30秒自动保存
- 启动时自动加载最近存档
- 保存/加载按钮手动管理存档
- 自动保留最近10个存档
- 🐛 修复:特殊方块消除逻辑完善
- 🐛 修复:最底行方块不会被算法移动
- 🐛 修复:下一步后自动消除满行(包括连续消除)
- 🐛 修复:评分初始值bug(int.MinValue)
- ✨ 改进:下一步时方块自动下落到倒数第二行
- ✨ 改进:消除后自动循环检查新满行
v1.2 (2025-10-16)
- 🐛 修复:第二步后预览不更新的问题
- 🎨 新增:20种精美方块颜色(Flat Design配色)
- 🎨 增强:2px深灰色边框,方块界限更清晰
- 🎨 增强:4px绿色移动标记,更加明显
- ℹ️ 新增:实时显示需要移动的方块数量提示
- ✨ 改进:所有按钮操作后正确清空和更新预览状态
v1.1.1 (2025-10-16)
- 🐛 修复:特殊方块缩短逻辑
- 端点在左边:从右边缩短,起始位置保持不变
- 端点在右边:从左边缩短,起始位置右移一格
- 确保方块是缩短而非移动
v1.1 (2025-10-16)
- ✨ 新增:在预览棋盘中标记需要移动的方块
- ✨ 新增:显示方块移动方向和距离
- 🎨 使用绿色粗边框高亮需要移动的方块
- 🎨 添加白色箭头和数字标注移动信息
v1.0 (2025-10-16)
- 🎉 初始版本发布
- ✅ 完整的图形界面和编辑功能
- ✅ 智能算法计算最优解
- ✅ 支持特殊方块和连续消除
祝您游戏愉快,取得高分!🎮✨