Prg2/space (applying design patterns)
- This is part of Programming 2 2563
เนื้อหา
Overview
In this assignment, you will apply design patterns to the provided Space Fighter code. In this game you can turn the ship with Left and Right keys. You can fire bullets with Spacebar and applying bombs with the Z key. You have 30 bullets at a time and the bomb needs cool-down period (to recharge its power to 100%).
Understanding the current code
There are 5 main classes:
- SpaceGame
- Ship (in elements.py)
- Bullet (in elements.py)
- Enemy (in elements.py)
- Bomb
SpaceGame
SpaceGame is the main class. It maintains a Ship, a list of Enemies, and a list of Bullets.
- It keeps bullets and enemies in self.bullets and self.enemies. The reason these objects are kept outside the typical self.elements is to improve performance when performing collision detection.
- There are 2 mechanisms to generate enemies.
def create_enemy_star(self):
# ...
def create_enemy_from_edges(self):
# ...
def create_enemies(self):
if random() < 0.2:
enemies = self.create_enemy_star()
else:
enemies = self.create_enemy_from_edges()
for e in enemies:
self.add_enemy(e)
- It runs collision detection to detect bullet-enemy collisions and enemy-ship collisions.
- It handles keyboard events (both key-pressed and key-released events).
- It also deals with bomb capacity of the ship: detonates the bomb, maintains bomb cool-down periods, and shows/hides bomb radius after it is detonated.
Ship
Bullet and Enemy
Bomb
Getting started
This is an individual assignment, but you should still use branches in git for managing your work. You should use the following template as a starter code.
- Template: tk-pacman
Since this is the second time you work on design patterns, the instructions would be less specific and you can use your judgement more freely to improve the code.