🕹️ Connect 4 AI: Master Edition
A high-performance Connect 4 implementation for ESP32-C3 and 8x8 WS2812B matrices. Features dynamic difficulty scaling, "humanized" AI movement, and a mobile-friendly web administration portal.
🛠 Hardware Configuration
🔌 Pin Mapping (Lolin C3 Mini)
| Component | ESP32-C3 Pin | Function |
|---|---|---|
| NeoPixel Matrix | GPIO 4 |
Data Input (DIN) |
| Rotary Encoder A | GPIO 0 |
Directional CLK |
| Rotary Encoder B | GPIO 1 |
Directional DT |
| Encoder Button | GPIO 2 |
Selection (SW) |
📐 Physical Dimensions
Designed for standard 8x8 matrix modules (approx. 65mm x 67mm).
- Top Row (0): Interaction and AI decision visualization.
- Game Board: Standard
7 \times 6grid. - UI Borders: Fixed blue frame for visibility.
🧠 Advanced AI Features
1. Progressive Difficulty (Evolution Mode)
The AI search depth (Ply) increases as the board fills. This ensures the AI is fast in the opening and lethal in the endgame.
- Formula:
DynamicPly = BasePly + \lfloor \frac{DiscsOnBoard}{7} \rfloor - Benefit: High-level tactical precision exactly when the game becomes critical.
2. Strategic Blunder Injection
To avoid endless stalemate draws between high-level AIs, a "Blunder" logic is used.
- Demo Mode: Always active; 20% chance to make a suboptimal move.
- Player Mode: Toggleable via Web Portal to make the AI more "human."
3. Alpha-Beta Pruning & Column Ordering
The engine evaluates the center column first. This triggers pruning earlier in the search tree, skipping millions of unnecessary calculations and keeping the ESP32-C3 responsive.
📖 Code Architecture Details
🔄 State Machine
The software cycles through states:
- MENU: Select mode using the rotary encoder.
- PLAYING: Manages player turns and the gravity-acceleration drop animation.
- DEMO: Auto-starts after inactivity. Randomizes Ply (3-6) and enforces blunders to ensure definitive game results.
🎨 Rendering & Mapping
The getIdx(x, y) function maps the 2D game board to the 1D NeoPixel array. The updateThinkingVisuals() function provides real-time feedback of the AI's internal search process by moving a pulsing disc across the top row.
🌐 Web Admin Portal
Connect to the "Connect4-Config" Access Point to adjust:
- Base Ply: Minimum search depth.
- Brightness: Global LED intensity.
- Idle Timeout: Inactivity period before Demo Mode.
- Toggles: Enable/Disable Blunders and Evolution Mode.
🛠 Setup & Installation
- Install PlatformIO.
- Add dependencies:
FastLED,Encoder. - Set your WiFi Password in
platformio.ini:-D WIFI_PASSWORD=\"your_pass\". - Upload to ESP32-C3.