23-02-2024, 02:51 AM
Estoy probando la dimensión de la imagen del alien y luego ver cuantos caben horizontalmente en el eje x.
El libro me dice que por esta vez no es necesario un metodo blit, simplemente carga la imagen, le agrega un rectángulo, y en la clase principal del juego simplemente crea un método llamado: _create_fleet(self): crea una instancia de la clase Aliens, lo agrega a la instancia self.aliens, que es una lista que agrupa los sprites propiedad de pygame.
Luego en la (actualización de la pantalla; _update_screen) : el libro simplemente me indica que ponga ( self.aliens.draw( self.screen) --> esto es la instancia de la lista con los aliens, y el método draw de pygame, como argumento le paso la pantalla, para que lo dibuje ahí... Pero no lo hace.
my code:
import pygame
from pygame.sprite import Sprite
class Alien(Sprite):
"""Una clase para representar un solo alien en la flota"""
def __init__(self, ai_game):
super().__init__()
self.screen = ai_game.screen
self.image = pygame.image.load('image/alien_violet.png')
self.rect = self.image.get_rect()
self.rect.x = self.rect.width
self.rect.y = self.rect.height
self.x = float(self.rect.x)
def blitme(self):
self.screen.blit(self.image, self.rect)
modulo alien_invasion.py resumido en el problema
self.aliens = pygame.sprite.Group()
def run_game(self):
while True:
self._check_event()
self.ship.update()
self._update_bullet()
self._update_screen()
def _create_fleet(self):
#instanciacion de la clase Aliens y se agrega el objeto a la lista aliens...
alien = Alien(self)
self.aliens.add(alien)
def _update_screen(self):
#Simplemente dibuja la nave en la pantalla, crei que no se podia usar draw con imagenes, si no solo brit, como con Ship... pero asi se muestra en el libro
self.screen.fill(self.settings.bg_color)
self.ship.blitme()
for bullet in self.bullets.sprites():
bullet.draw_bullet()
self.aliens.draw(self.screen)
pygame.display.flip()
El libro me dice que por esta vez no es necesario un metodo blit, simplemente carga la imagen, le agrega un rectángulo, y en la clase principal del juego simplemente crea un método llamado: _create_fleet(self): crea una instancia de la clase Aliens, lo agrega a la instancia self.aliens, que es una lista que agrupa los sprites propiedad de pygame.
Luego en la (actualización de la pantalla; _update_screen) : el libro simplemente me indica que ponga ( self.aliens.draw( self.screen) --> esto es la instancia de la lista con los aliens, y el método draw de pygame, como argumento le paso la pantalla, para que lo dibuje ahí... Pero no lo hace.
my code:
import pygame
from pygame.sprite import Sprite
class Alien(Sprite):
"""Una clase para representar un solo alien en la flota"""
def __init__(self, ai_game):
super().__init__()
self.screen = ai_game.screen
self.image = pygame.image.load('image/alien_violet.png')
self.rect = self.image.get_rect()
self.rect.x = self.rect.width
self.rect.y = self.rect.height
self.x = float(self.rect.x)
def blitme(self):
self.screen.blit(self.image, self.rect)
modulo alien_invasion.py resumido en el problema
self.aliens = pygame.sprite.Group()
def run_game(self):
while True:
self._check_event()
self.ship.update()
self._update_bullet()
self._update_screen()
def _create_fleet(self):
#instanciacion de la clase Aliens y se agrega el objeto a la lista aliens...
alien = Alien(self)
self.aliens.add(alien)
def _update_screen(self):
#Simplemente dibuja la nave en la pantalla, crei que no se podia usar draw con imagenes, si no solo brit, como con Ship... pero asi se muestra en el libro
self.screen.fill(self.settings.bg_color)
self.ship.blitme()
for bullet in self.bullets.sprites():
bullet.draw_bullet()
self.aliens.draw(self.screen)
pygame.display.flip()