Skip to content

XDDXMT/AI2048

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

2048-AI

🚀 自学习 + Numba 高性能优化 + Expectimax 搜索 + Pygame UI 的强化版 2048 AI

本项目是一个 强化版的 2048 游戏 AI,包含完整可视化界面、启发式搜索算法、动态经验学习系统、多线程优化以及 Numba 加速。AI 会随着游戏不断调整权重,变得越来越强。


✨ 功能特性

🧠 1. 自学习经验系统(AIExperience)

AI 会自动记录每一局的表现,并在每 10 局后自动优化策略权重,包括:

  • 空格权重(empty weight)
  • 平滑度(smoothness)
  • 单调性(monotonicity)
  • 角落策略(corner bonus)
  • 边缘奖励(edge bonus)
  • 合并潜力(merge potential)
  • 蛇形布局(snake weight)

经验会保存到 ai_experience.pkl,下次启动继续使用。


⚡ 2. 极致性能优化

  • 使用 Numba @njit 加速关键函数(滑动合并逻辑比 Python 快几十倍)
  • 使用 ThreadPoolExecutor 加速 Expectimax 搜索
  • 多种启发式算法高度并行化

🎯 3. 智能评估体系(Heuristic)

AI 通过综合评估规则决定最佳移动,包括:

指标 用途
空单元格 保持操作空间
平滑度 减少大数字冲突
单调性 保证大数字集中一边
角落权重 让最大数字呆在角落
边缘权重 更稳定的布局
合并潜力 预测未来是否可合并
最大数奖励 鼓励冲目标
蛇形排列 保证永不堵死

权重由经验系统自动调整,让 AI 越玩越强。


🖥 4. 精美 Pygame UI

  • 动态渲染每个格子的颜色与数字
  • 支持实时观察 AI 决策
  • 棋盘尺寸:4x4(可扩展)
  • 自动记录分数、步数、最大方块

🕹 5. 完整游戏逻辑

包含对 2048 游戏的所有规则实现,例如:

  • 上下左右移动
  • 自动生成新 tile
  • 检测胜利(默认目标:40960)
  • 检测游戏结束
  • 最大 tile 自动跟踪

📁 文件说明

文件 说明
main.py 主程序入口,渲染 + AI 控制
ai_experience.pkl AI 的历史经验数据(可删除以重置)
README.md 本说明文件

🔧 安装依赖

pip install pygame numpy numba

(可选,为提升性能)

pip install concurrent.futures

▶️ 启动程序

python main.py

AI 会自动开始游戏并不断自我学习。


📊 AI 统计功能

程序自动记录:

  • 总对局数
  • 最大 tile 历史
  • 步数统计
  • 平均分数
  • 胜率
  • 权重变化情况

可通过:

ai_experience.get_statistics()

获取详细数据。


🤖 算法结构说明

1. Expectimax 搜索

深度为 EXPECTIMAX_DEPTH = 3,支持多线程。

2. Numba 超快速滑动合并

@njit
def slide_numba(row):

负责所有方向的合并 + 得分计算。

3. 经验驱动权重更新

每 10 局自动重新评估:

ai_experience.adjust_weights()

📝 自定义参数

你可以在顶部配置修改:

SIZE = 4
TARGET = 40960
EXPECTIMAX_DEPTH = 3
ENABLE_DELAY = False
MOVE_DELAY = 0.1

支持自定义棋盘大小(例如 5x5、6x6)。


🎉 效果展示

AI 经过训练后通常可以稳定达到:

  • 2048
  • 4096
  • 8192
  • 甚至 16384+

目标默认是 2048

About

AI自动学习通关2048

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages