ผลต่างระหว่างรุ่นของ "Prg2/space (applying design patterns)"

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา
แถว 17: แถว 17:
  
 
=== SpaceGame ===
 
=== SpaceGame ===
 +
 +
'''SpaceGame''' is the main class. It maintains a Ship, a list of Enemies, and a list of Bullets. 
 +
 +
There are 2 mechanisms to generate enemies.
 +
 +
<syntaxhighlight lang="python">
 +
    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)
 +
</syntaxhighlight>
 +
 +
It runs collision detection to
  
 
=== Ship ===
 
=== Ship ===

รุ่นแก้ไขเมื่อ 22:46, 24 มีนาคม 2564

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%).

Prg2-space-fighter.png

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.

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

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.

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.

Patterns

Additional improvements