Skip to content

Developer09264/Game1A2B

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Game 1A2B - C++ Neural Network Edition

这是一个使用纯 C++ 开发的经典 1A2B (猜数字) 游戏,其最大的亮点在于内置了一个从零开始搭建的神经网络(Neural Network)。该 AI 能够通过自我对弈进行学习,并在游戏过程中为你提供逻辑建议。

🚀 项目特性

  • 纯 C++ 实现:不依赖任何第三方 AI 框架(如 PyTorch 或 TensorFlow),完全手写矩阵运算、反向传播和激活函数。
  • 自研神经网络引擎
    • 架构:全连接多层感知机 (210 -> 128 -> 40)。
    • 激活函数:隐藏层使用 Leaky ReLU,输出层使用 Categorical Softmax
    • 学习算法:支持标准的反向传播 (Backpropagation) 与梯度下降。
  • 高性能计算
    • 内存优化:采用一维连续内存布局(Memory Flattening),最大化 CPU 缓存命中率。
    • 多核加速:利用 OpenMP 并行化矩阵运算,大幅提升训练速度。
  • 持久化进化:支持模型参数的保存 (model.txt) 与加载,AI 的“智慧”可以跨会话累积。
  • 交互式 AI 助手:在游戏输入 h 即可调用 AI 自动进行逻辑推理并给出最优猜测。

🛠️ 构建指南

环境要求

  • 支持 C++17 的编译器(如 GCC, Clang)
  • CMake (3.10+)
  • OpenMP (可选,用于加速)

编译步骤

mkdir -p build && cd build
cmake ..
cmake --build .

🎮 游戏规则

  1. 系统随机生成 4 个不重复的数字(0-9)。
  2. 玩家输入 4 个数字进行猜测:
    • A 代表数字正确且位置正确。
    • B 代表数字正确但位置错误。
  3. 目标:得到 4A0B

操作指令

  • [4位数字]:提交你的猜测(如 1234)。
  • h:调用 AI 助手。AI 会分析当前所有历史线索,自动填入它认为概率最高的组合。
  • r:重新开始游戏(AI 也会清空当前局的短时记忆)。
  • q:退出游戏并保存 AI 模型。

🧠 AI 学习原理

1. 输入编码 (Feature Engineering)

AI 观察最近 5 轮的对局历史。每轮包含:

  • 40 维:猜测数字的 One-hot 编码。
  • 2 维:该次猜测得到的 A 和 B 的归一化结果。 总计 210 维 的浮点向量作为神经网络输入。

2. 输出解码

输出层为 40 维,分为 4 组(对应 4 个位置)。每组 10 个神经元通过 Softmax 给出该位置出现数字 0-9 的概率分布。

3. 训练逻辑 (trainAI)

项目采用“自监督模拟实战”:

  • AI 在后台进行数万局虚拟对弈。
  • 每一回合,AI 尝试根据现有线索预测答案。
  • 系统根据真实答案纠正 AI,通过反向传播微调数万个权重参数。
  • 增量学习:即使在玩家进行游戏时,AI 也会在每局结束后学习玩家的成功经验。

📂 项目结构

├── AI/
│   ├── Matrix.h/cpp          # 基础矩阵引擎(带多核并行)
│   └── NeuralNetwork.h/cpp    # 神经网络核心、反向传播、Softmax
├── src/
│   ├── Game.h/cpp            # 游戏主逻辑、训练循环
│   ├── Result.h/cpp          # 1A2B 结果计算
│   └── main.cpp              # 程序入口
└── CMakeLists.txt            # 构建配置文件

📈 进阶建议

如果你希望 AI 变得更聪明:

  1. 启动时输入更高的训练轮数(如 50000)。
  2. AI/NeuralNetwork.h 中尝试调整 learning_rate
  3. 保持 model.txt 不被删除,AI 将会随着你的每一次对局不断进化。

About

1A2B游戏,融合神经网络。仅作基本结构样例,无实际价值。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors