Sito web di notizie tecnologiche e videogames.

Pygame Shooter Parte 2: Generare i mob

11

Questo articolo è la seconda parte del progetto PyShooter, oggi vedremo come aggiungere dei mob (o nemici) al nostro gioco con Pygame.

Nell’ultimo articolo abbiamo definito la classe Sprite per rappresentare il player controllato dall’utente, in questo articolo definiremo la classe Mob per rappresentare i nemici, che potrebbero essere,per esempio, delle rocce volanti che una navicella deve evitare.

Definire la classe Mob

class Mob(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.width = 50
        self.height = 50
        self.image = pygame.Surface((self.width, self.height))        self.image.fill(WHITE)
        self.rect = self.image.get_rect()
        self.rect.x = random.randrange(WIDTH - self.rect.width)
        self.rect.y = random.randrange(-100, -40)
        self.speedy = random.randrange(1, 8)
        self.speedx = random.randrange(-3, 3)

In questo modo la posizione iniziale e la velocità di movimento del nostro nemico saranno generate random.

Aggiungiamo quindi la funzione update per far muovere autonomamente il nostro Mob durante il gioco.

def update(self):
    self.rect.x += self.speedx
    self.rect.y += self.speedy
    if self.rect.top > HEIGHT + 10 or self.rect.left < -25 or self.rect.right > WIDTH + 20:
        self.rect.x = random.randrange(WIDTH - self.rect.width)
        self.rect.y = random.randrange(-100, -40)
        self.speedy = random.randrange(1, 8)

Tramite la funzione update una volta che il nemico esce dai confini della finestra lo facciamo spawnare alla posizione di partenza, in modo da non dover generarne uno ogni volta che un altro esce dallo schermo.

Generiamo i Mobs

Dato che avremo più nemici creiamo un gruppo ‘mobs’ e man mano che creiamo i nemici li aggiungiamo anche al gruppo mobs oltre che a quello all_sprites.

mobs = pygame.sprite.Group()for i in range(8):
    m = Mob()
    all_sprites.add(m)
    mobs.add(m) 

In questo modo creiamo 8 nemici e li aggiungiamo al gruppo di mobs.

Nel game loop non c’è bisogno di aggiungere alcuna riga di codice in quanto l’aggiornamento dei mobs è gia compreso nell’istruzione all_sprites.update() che aggiorna tutti gli sprites contenuti nel gruppo all_sprites (e quindi anche i mobs). A questo punto l’output dovrebbe essere il seguente:

Pygame Shooter Parte 2: Generare i mob

Nel prossimo articolo vedremo come identificare e catturare le collisioni tra gli oggetti.

Link al codice: code

Link al precedente articolo: Pygame Shooter Parte 1: Sprite e Controlli

Commenti