____ _ _ _
| _ \ | | /\ | | |
| |_) | __ _ ___| | __ / \ | | | ___ _ _
| _ < / _` |/ __| |/ / / /\ \ | | |/ _ \ | | |
| |_) | (_| | (__| < / ____ \| | | __/ |_| |
|____/ \__,_|\___|_|\_\ /_/ \_\_|_|\___|\__, |
__/ |
|___/
Welcome to the Back Alley, where luck, skill, and courage determine your fate.
You find a flyer advertising the casino and decide to check it out. Inside, the ambiance is shady and strangely empty. As you explore, you notice strange coin-shaped plaques and try a row of slot machines—only to get a sharp shock when losing your first rounds.
Panicking, you try to exit—but the doors are locked. A voice echoes:
"Welcome to the Back Alley. Enjoy your stay… and remember—paths open to those who pay attention.
If something won’t open… perhaps you’re missing a pair."
Now, your survival depends on luck, skill, and observation as you play through the casino’s games, earning coins and HP to progress.
After downloading the project folder:
- Locate the downloaded project folder.
- Right-click inside the folder and click “Open in Terminal”
(or open the Start Menu → type “cmd” → open Command Prompt → usecdto enter the folder). - Run the game using:
python game.py- Download and unzip the project folder.
- Open Terminal (Cmd + Space → type “Terminal”).
- Navigate to the folder using:
cd /path/to/BackAlleyFolder
- Run the game with:
python3 game.py
| Requirement | Summary / Location Highlights |
|---|---|
| 7a) Immutable data (tuples) | boss.py → setup_corridor (~33); rooms.py → spawn_goal_tile (~66) |
| 7b) Mutable data (lists/dicts) | boss.py → corridor dict (~24); main.py → make_character (~15); combat.py → blackjack (~65); rooms.py → make_floor (~27) |
| 7c) Exceptions & handling | try/except blocks in boss.py, combat.py, main.py, movement.py |
| 7d) Minimized scope/lifetime | Local variables in boss.py, combat.py, main.py, messages.py, movement.py, rooms.py |
| 7e) Function decomposition | All modules split into multiple small functions for modularity |
| 7f) Simple flat code | Functions have minimal nesting across modules |
| 7g) Comprehensions | boss.py → setup_corridor; rooms.py → make_floor |
| 7h) Selection (if-statements) | Used in combat.py, boss.py, main.py, messages.py, movement.py, rooms.py |
| 7i) Loops / repetition | Used in corridors, combat games, movement, and main game loop |
| 7j) Membership (in) | combat.py → blackjack; movement.py → get_user_choice |
| 7k) Range usage | boss.py → setup_corridor; rooms.py → make_floor |
| 7l) itertools usage | combat.py → slots; rooms.py → make_floor |
| 7m) Random module | combat games, boss fights, floors, spawn logic |
| 7n) Function annotations | rooms.py has annotated tuples/dicts; other modules mostly untyped |
| 7o) Tests (doctests/unit tests) | boss.py, main.py, movement.py, rooms.py |
| 7p) Formatted output | ASCII art, f-strings, and story text in multiple modules |
Walk around the casino and see what you find.
Occasionally you get pulled into different side games that you must complete.
If you win, you get rewarded.
If you lose, you lose life.
Climb up 5 floors and face the Boss at the top.
- Objective: Beat the dealer without exceeding 21.
- Controls: Hit (H) or Stand (S).
- Rewards: Win coins or lose HP if you bust.
- Note: Strategy matters!
- Objective: Pick a color (Red, Black, or Green).
- Special: Green is rare but highly rewarding.
- Rewards: Coins and HP if you win; HP loss if unlucky.
- Objective: Match 2 or 3 symbols to win.
- Rewards: Win coins and HP on perfect matches; HP may be lost otherwise.
- Graphics: Symbols like ⭐, 🍉, 🍋, 🍒.
- Objective: Pick a number between 1–6.
- Rewards: Gain coins if correct; lose HP if wrong.
- Objective: Guess a number between 1–100.
- Reward: Win = automatically advance a floor.
- Tie: Stay on the same floor.
- Note: Rare “shortcut chance.”