下载页面

下载链接

https://steven.moe/upload/BlockPuzzleGame.exe

方块消除游戏辅助器

程序简介

这是一个用于辅助解决方块消除游戏的C#应用程序。程序提供图形界面,允许用户输入当前游戏状态,并使用AI算法计算最优解,帮助玩家获得更高分数。

游戏规则

  • 棋盘尺寸:9列 × 12行(竖直方向)
  • 方块特性
    • 水平放置,高度为1,长度为1-7格
    • 方块可以左右移动,不能旋转
    • 方块会受重力影响自由下落
  • 消除规则
    • 当某一行的9个格子全部被填满时,该行会被消除
    • 消除一行得90分
    • 连续消除时,每多消除一行额外得50分
  • 特殊方块
    • 带有端点标记(红色圆点)
    • 所在行被消除时不会完全消失,而是从非端点方向缩短一格
      • 端点在左边:从右边缩短,起始位置不变
      • 端点在右边:从左边缩短,起始位置右移
    • 示例:长度为3的方块消除后变为长度2
    • 缩短至长度为0时才能被完全消除
  • 底部行:最下方一行(黄色背景)会随机生成新方块

功能说明

界面布局

程序界面分为两个棋盘:

  1. 左侧:当前棋盘 - 显示当前游戏状态,用户可在此编辑
  2. 右侧:最优解预览 - 显示算法计算的最佳移动方案
    • 绿色粗边框:标记需要移动的方块
    • 白色箭头:显示移动方向(→ 右移,← 左移)
    • 数字标注:显示移动的格数

按钮功能

1. 修改

  • 作用:进入/退出编辑模式
  • 操作
    • 点击"修改"进入编辑模式
    • 左键拖动:在棋盘上创建新方块(水平拖动)
    • 右键点击:删除已有方块
    • 完成编辑后再次点击"完成修改"
  • 说明:编辑模式下方块不会受重力影响

2. 下一步

  • 作用:应用算法给出的最优解
  • 流程
    1. 将预览棋盘的状态应用到当前棋盘
    2. 所有方块自动上升一行
    3. 上方方块下落到倒数第二行
    4. 自动消除满行并计分(包括连续消除)
    5. 进入编辑模式,等待用户在最下方填入新方块
    6. 点击"完成修改"后自动计算新的最优解

3. 自定义

  • 作用:由用户自行决定方块移动,而非使用算法解
  • 流程
    1. 进入编辑模式
    2. 用户手动调整方块位置
    3. 完成后点击"完成修改"
    4. 方块上升一行并等待填入新方块

4. 撤回

  • 作用:返回上一步操作前的状态
  • 说明:可以多次撤回,直到历史记录为空

5. 插入

  • 作用:在不应用最优解的情况下,手动插入新的一行方块
  • 流程
    1. 所有方块上移一行
    2. 进入编辑模式
    3. 在最下方填入新方块
    4. 完成后自动计算最优解

6. 清空

  • 作用:清空整个棋盘,重新开始

7. 保存 🆕

  • 作用:手动保存当前游戏状态
  • 文件名:自动按照 月日_时分.sav 格式命名
  • 保存位置:程序目录下的 saves 文件夹

8. 加载 🆕

  • 作用:打开存档选择对话框,加载之前的游戏状态
  • 功能:显示所有存档及保存时间,可选择任意存档加载

自动保存功能 🆕

  • 自动保存:程序每30秒自动保存一次当前状态
  • 自动加载:程序启动时自动加载最近的存档
  • 文件管理:自动保留最近10个存档,自动删除旧文件
  • 数据保护:即使程序意外关闭也不会丢失进度

特殊方块设置

界面右侧提供特殊方块选项:

  • 特殊方块复选框:勾选后创建的方块将成为特殊方块
  • 端点下拉框:选择"左端点"或"右端点"
    • 左端点:红点在方块左边,消除时从右边缩短
    • 右端点:红点在方块右边,消除时从左边缩短
  • 特殊方块在棋盘上会显示红色圆点标记端点位置

特殊方块缩短示例

左端点方块(长度3):
消除前:●[■][■][■]
消除后:●[■][■][ ]  (从右边缩短,起始位置不变)

右端点方块(长度3):
消除前:[■][■][■]●
消除后:[ ][■][■]●  (从左边缩短,起始位置右移)

使用流程示例

开始新游戏

  1. 点击"修改"按钮进入编辑模式
  2. 在棋盘上用鼠标左键拖动创建方块(模拟当前游戏状态)
  3. 如果需要创建特殊方块:
    • 勾选"特殊方块"复选框
    • 选择端点位置
    • 然后创建方块
  4. 完成布局后点击"完成修改"
  5. 程序会自动计算最优解并在右侧显示

继续游戏

  1. 查看右侧的最优解预览
  2. 点击"下一步"应用最优解
  3. 棋盘上方块会上升一行
  4. 在最下方填入游戏中新生成的方块
  5. 点击"完成修改"
  6. 重复以上步骤

手动操作

  1. 点击"自定义"或"修改"按钮
  2. 手动移动方块位置(删除并重新创建)
  3. 完成后点击"完成修改"
  4. 如果是"自定义",方块会上升并等待填入新方块

算法说明

程序使用智能二层搜索算法来寻找最优解:

搜索策略

  1. 第一层筛选:快速评估所有可能移动(约100种),筛选出得分最高的前10种
  2. 第二层深度搜索:对这10种移动进行深度分析,模拟15种后续移动,评估长期潜力
  3. 综合评分:当前状态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

注意事项

  1. 方块颜色:程序会为每个新方块随机分配颜色以便区分
  2. 底部行:第11行(最下方)显示为黄色半透明背景,表示方块生成区域
  3. 游戏结束:当方块上升超出棋盘顶部时,会弹出提示框
  4. 编辑限制
    • 方块长度限制为1-7格
    • 只能创建水平方向的方块
    • 方块必须在同一行内创建

技巧提示

  1. 使用撤回功能:不满意当前操作可以随时撤回
  2. 观察预览:在应用最优解前仔细观察右侧预览
    • 注意绿色边框标记的方块,这些是需要移动的
    • 查看箭头和数字了解具体移动方向和距离
  3. 特殊方块管理:合理放置特殊方块的端点,避免阻碍消除
  4. 组合消除:尽量创造连续消除的机会以获得额外分数
  5. 保持低高度:避免方块堆叠过高导致游戏结束

文件说明

  • 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)

  • 🎉 初始版本发布
  • ✅ 完整的图形界面和编辑功能
  • ✅ 智能算法计算最优解
  • ✅ 支持特殊方块和连续消除

祝您游戏愉快,取得高分!🎮✨