# 自动贪吃蛇 **Repository Path**: atao-git/automatic-greedy-snake ## Basic Information - **Project Name**: 自动贪吃蛇 - **Description**: 贪吃蛇自己找吃的。自动运行贪吃蛇若干次,并统计得分,显示得分分布直方图。 - **Primary Language**: C/C++ - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-07 - **Last Updated**: 2025-12-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: PlatformIO, SSD1315, SH1106, Arduino, U8g2 ## README # 自动贪吃蛇 ## 1. 介绍 贪吃蛇自己找吃的。自动运行贪吃蛇若干次(例如:100次),并统计得分,显示得分分布直方图。直方图可以大概看出 `正态分布` 的样子。 运行效果视频:[贪吃蛇自己找吃的-arduino-PlatformIO-U8g2-OLED](https://www.bilibili.com/video/BV1fomABoEFY/?share_source=copy_web&vd_source=f31331fcb6997222891bbbc6a27ddb2a) 硬件连接: ![硬件连接](resource/images/hardware.png) 1.3 寸显示屏显示贪吃蛇自动找吃的: ![贪吃蛇](resource/images/snake.png) 0.96 寸显示屏实时显示得分分布直方图: ![直方图](resource/images/histogram.png) - `Total`:所有得分的和 - `Avg`:平均分 - `Max`:最高分 - `Min`:最低分 - `Cnt`:游戏次数 直方图横坐标 `0` 表示得分范围为 `0 ~ 9` ,`1` 表示得分范围为 `10 ~ 19`,以此类推。而 `10` 表示得分范围为 `100 ~ ...` 。 柱的顶部数值表示得分在此范围内的次数。例如,横坐标为 `5` 的柱顶部数字 `9` 代表得分在 `50 ~ 59` 范围内的次数为 `9` 次。 ## 2. 技术栈 框架: Arduino 开发平台:PlatformIO 、Arduino IDE 都行,本项目中使用的是 PlatformIO,后续介绍用的是 PlatformIO。 硬件: - MCU开发板:默认使用 Arduino Nano。也可以使用其他 Arduino 开发板或者 ESP32 等硬件。使用其他开发板时,需要注意在代码中修改对应的 IIC 接口。 - 显示屏1:1.3寸OLED,本项目使用的显示模块驱动是 SH1106。 - 显示屏2:0.96寸OLED,本项目使用的显示模块驱动时 SSD1315。 库: - U8g2 ## 3. 使用说明 ### 3.1 硬件连线 以 Arduino Nano 开发板为例: | Nano | 1.3寸OLED | 0.96寸OLED | | --- | --- | --- | | A4 | SDA | - | | A5 | SCL | - | | A2 | - | SDA | | A3 | - | SCL | | GND | GND | GND | | VIN (5V 或者 3.3V) | VCC | VCC | ### 3.2 安装 U8g2 库 PlatformIO 安装库的命令: ```shell pio pkg install -l olikraus/U8g2 -g ``` ### 3.3 编译和运行 #### 编译 ```shell pio run -e nanoatmega328 ``` 上传时如果报错,就使用下面这个编译试试: ```shell pio run -e nanoatmega328new ``` ### 3.4 上传 ```shell platformio run --environment nanoatmega328 -t upload ``` 或者 ```shell platformio run --environment nanoatmega328new -t upload ``` ## 4. 其它 如果使用 VSCode IDE,可以生成一下 `compile_commands.json`: ```shell pio run -t compiledb -e nanoatmega328 ``` 并在 `.vscode/settings.json` 中设置: ```json { "C_Cpp.default.compileCommands": [ "${workspaceFolder}/compile_commands.json" ] } ``` 这样就可以通过 `Ctrl` + 鼠标点击 直接打开头文件或者函数、数据结构的定义了。