A lightweight, 1985 arcade-style western duel game written in pure C using the Win32 API / GDI. Designed to run natively on Windows with zero external frameworks or dependencies (no SDL, SFML, or DirectX).

- Zero Dependencies: Compiles into a lightweight binary using standard native Windows libraries (
user32.lib,gdi32.lib). - Game Loop Architecture: Managed state machine handling decoupled logic updates and software rendering.
- Double Buffering: Prevents screen flickering by rendering scenes to an in-memory Device Context (DC) before blitting (
BitBlt) to the active window. - Dynamic FX & Particle Engine: Real-time generation of weather and combat effects:
- Atmospheric Dust Storm: An interactive particle system running over the entire viewport (sky and sand) to simulate a harsh desert environment.
- Muzzle Flashes: Dynamic GDI-rendered light bursts at the gun barrel upon firing.
- Impact Sparks & Blood FX: Velocity-based particle bursts triggering exactly at the hitboxes on successful impacts.
- Tactical Arsenal (Ammo Switching): On-the-fly weapon mode selection modifying projectile physics and damage output.
- Dynamic AI & Progression: Automated scaling of enemy reaction times, ducking behaviors, and bullet velocity based on your current score.
- Retro Visuals: Real-time CRT scanline shader emulation simulated via optimized horizontal GDI pen operations.
SPACE— ShootUP Arrow— Jump (dodge low bullets)DOWN Arrow— Duck (dodge high bullets)1— Switch to Normal Ammo (Standard speed and damage)2— Switch to Fast Ammo (High projectile velocity)3— Switch to Heavy Ammo (Slow projectile velocity, x2 Damage)ENTER— Start Game / Restart Session / Navigate Menu
| Ammo Type | Projectile Speed | Damage | Best Used For |
|---|---|---|---|
| 1 - Normal | 15.0f |
1 HP | Balanced dueling |
| 2 - Fast | 25.0f |
1 HP | Countering rapid enemy shots |
| 3 - Heavy | 8.0f |
2 HP | Punishing static targets / Guard breaking |
To build the project via MSVC (Visual Studio Developer Command Prompt or VS Code task):
cl.exe main.c /link /SUBSYSTEM:WINDOWS user32.lib gdi32.lib