Carlo's Delta Escape is a 2D platformer developed with Python + Pygame as a project for the Software Development course at Insper (2022.1).
This was my first game and my first large-scale Python project. The main character and enemy sprites were hand-drawn by me using Aseprite.
🎥 Watch the gameplay on YouTube
The project combines classic platformer elements with combat, ammo management, scoring, obstacles, and a story told through cutscenes.
- 2D platforming with side-scrolling movement and a camera that follows the player
- Ranged combat using bananas as ammunition
- Health and damage system
- Enemies and obstacles
- Action-based scoring system
- Ammo refill points
- Introductory cutscene
- Main menu, controls screen, and Game Over screen
- Two possible endings, determined by the player's final score
Carlos the monkey is in his first semester of Computer Engineering at Insper. After spending the semester focused on his favorite subjects, he realizes that he forgot to submit his Software Development projects.
For the Delta exam (a make-up exam), Professor Humberto, feeling inspired, comes up with an unusual challenge: Carlos must travel into the code jungle and kill as many BUGs from his project as he can.
Only then will he be able to pass the course and become a great programmer ape.
| Key | Action |
|---|---|
W / ↑ |
Jump |
A / ← |
Move left |
D / → |
Move right |
SPACE |
Attack |
X |
Advance the cutscene |
C |
Open the controls screen from the main menu |
SPACE |
Return from the controls screen |
ENTER |
Start or restart the game |
The player's score directly affects the ending of the game.
| Event | Score |
|---|---|
| Defeat an enemy | +2000 |
| Collect an ammo refill | +1000 |
| Take damage | -500 |
To unlock the good ending, the player must finish the game with at least 15,000 points.
Carlos attacks by throwing bananas at enemies.
- The player starts with 3 rounds of ammo.
- Each attack consumes one banana.
- Ammo refill points are scattered throughout the map.
- Collecting a refill restores the player's ammo to 3 bananas.
- Bananas disappear when they hit the environment.
- Hitting an enemy removes both the projectile and the enemy.
The player starts with 3 lives.
Colliding with enemies or spikes causes damage. After being hit, Carlos has a short period of invulnerability before he can take damage again.
If all lives are lost — or if the character falls out of the map — the game ends with a Game Over.
- Python
- Pygame
- Pygame sprite and group system
Rectand mask-based collision detection- Audio and music using
pygame.mixer - Tile-based map
PyGameDessoft/
├── Game.py # Main game loop and game states
├── settings.py # Game settings and level map
├── assets.py # Image and asset loading
├── player_class.py # Player movement, combat, and ammo
├── enemy_class.py # Enemies and obstacles
├── level_class.py # Level building, collisions, and camera
└── Assets/ # Sprites, sounds, music, and cutscenes