A real-time ASCII air defense simulation for Windows console.
Modern C++17 • Zero external dependencies • Custom data structures
Command a radar defense network. Track and intercept missiles, drones, and stealth aircraft across 5 escalating waves. Built entirely with custom data structures and the Win32 Console API — no SDL, SFML, or ncurses.
┌─────────────────────────────────────────────────┐
│ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ │
│ █ S I P A R v 2 . 2 █ │
│ █ DEFENSE COMMAND SYSTEM █ │
│ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ │
└─────────────────────────────────────────────────┘
git clone https://github.com/ShahabAhmed01/SIPAR-v2.git
cd SIPAR-v2
cmake -B build && cmake --build build
./build/sipar.exeRequirements: MinGW-w64 (g++ 11+) on Windows 10/11
| Feature | Description |
|---|---|
| 5-Wave Missions | Escalating difficulty across 5 waves |
| 4 Difficulty Levels | Easy → Normal → Hard → Nightmare |
| Auto & Manual Targeting | Press T to toggle WASD crosshair mode |
| Special Weapons | Shield (Q), EMP (1), Flare (2), Nuke (3) |
| Stealth Enemies | Flickering ? targets — 40% auto-target miss rate |
| Combo System | 3 kills = ×2, 5 kills = ×3 multiplier |
| Wave Rewards | Bonus missiles and points for each wave cleared |
| Victory Mode | Complete all 5 waves for +1000 bonus! |
| Particle Effects | ASCII explosion particles (toggleable) |
| Radar Animation | Rotating sweep animation |
| High Scores | Top 10 leaderboard with persistence |
| Settings Menu | Toggle sound, particles, screen shake, FPS display |
| Statistics Tracking | Track games played, kills, waves completed |
SIPAR showcases custom implementations of fundamental computer science data structures:
BST<T> → Priority-ordered threat targeting (O(log n))
MinHeap<T> → Wave scheduling by threat weight (O(log n))
DoublyLinkedList → Event log, max 8 entries (O(1) insert/delete)
ThreatMap → 5×5 adjacency matrix for radar sectors (O(1) lookup)
| Key | Action |
|---|---|
SPACE |
Fire missile / Select menu |
W/S |
Navigate menu |
T |
Toggle manual targeting |
WASD |
Move crosshair (manual mode) |
Q |
Deploy shield |
1 / 2 / 3 |
EMP / Flare / Nuke |
P |
Pause |
M |
Mute audio |
E |
Exit mission / Back |
ESC |
Back to menu |
Complete each wave to earn:
- +5 missiles (increasing by +1 each wave)
- +100 × wave number points bonus
- +1 shield charge (up to max 3)
Complete all 5 waves for VICTORY (+1000 bonus points)!
| Action | Points |
|---|---|
Destroy Missile (X) |
+100 |
Destroy Drone (.) |
+50 |
Destroy Stealth (?) |
+50 |
| Wave Clear Bonus | +100 × wave |
| Victory Bonus | +1000 |
| Combo (3 kills) | ×2 |
| Combo (5 kills) | ×3 |
| Breach | -50 |
| Friendly Fire | -100 |
| Nuke Strike | -200 |
SIPAR-v2/
├── src/
│ ├── game.cpp/h # State machine & main loop
│ ├── sipar.cpp/h # Core game engine
│ ├── renderer.cpp/h # Win32 console rendering
│ ├── input.h # Keyboard abstraction
│ ├── audio.h # Beep sound effects
│ ├── highscore.h # Score persistence
│ ├── settings.h # Settings & statistics
│ ├── target.h # Entity system
│ ├── bst.h # Binary search tree
│ ├── minheap.h # Priority queue
│ ├── linkedlist.h # Event log
│ ├── threatmap.h # Radar sectors
│ └── utils.h # Shared utilities
├── tests/ # Unit tests
├── docs/ # Documentation
├── CMakeLists.txt
└── README.md
Shahab Ahmed — github.com/ShahabAhmed01
MIT License.