Capture Olin — Turn‑Based Strategy Game
Two‑player simultaneous turn resolution, custom input, and MVC‑style architecture
Capture Olin is a two‑player, turn‑based strategy game implemented in Python with Pygame. Players submit moves simultaneously each round and results resolve together, emphasizing predictive strategy and player‑to‑player interaction rather than randomness.
- Role: game systems design, input controller integration, and gameplay balancing.
- Tech stack: Python (3.12+), Pygame, custom MVC organization for separation of concerns.
- Run locally: clone https://github.com/olincollege/Turn-Based and run python3 Game.py.
Project goal
Build a well‑structured, technically sound, and visually engaging two‑player strategy game that supports simultaneous move submission and deterministic resolution. The project focuses on clear UX for turn submission, predictable unit behavior, and replayable mechanics for testing balance.
Unique features
- Simultaneous turn submission: both players enter moves independently; orders execute together.
- Custom input controller: combines mouse/trackpad and keyboard for intuitive selection and unit movement.
- Model‑View‑Controller architecture: clean separation of game logic, rendering, and input handling to improve testing and scalability.
Getting started
Prerequisites
- Python 3.12 or higher
- Pygame
Install dependencies
pip install pygame
Running the game
Clone the repository and run the main script:
git clone https://github.com/olincollege/Turn-Based cd Turn-Based python3 Game.py
Game controls
- Click to select which building you want to send Oliners from/to.
- Use number keys to select how many Oliners to send.
- Press Space to confirm and submit your order for the round.
- Press Escape to cancel selection or exit the game.
- Pass the input device between players each turn.
Game rules (summary)
- The map is a network of buildings (nodes) connected by paths (edges).
- Each building starts neutral or controlled by a player. Players issue orders simultaneously each round.
- Oliners may only move along connected edges between buildings.
- Home base spawns 5 Oliners at the start of each round; controlled buildings spawn 1 bonus Oliner.
- The player with the most Oliners in a building controls it; ties favor the last attacker.
- Win by capturing the opponent's home base while retaining control of your own.
Testing & contribution
Run the project's unit tests with pytest:
pytest
Repository and demos are available on GitHub:
Media
Short gameplay demo and overview links available in the project repo.