python --pygame05
1.创建外星人
owl.py
import pygame from pygame.sprite import Sprite class Owl(Sprite): def __init__(self,ai_settings,screen): super(Owl,self).__init__() self.screen=screen self.ai_settings=ai_settings self.image=pygame.image.load('owl.bmp') 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)
2.game_function.py
import sys import pygame from setting import Settings from ship import Ship from owl import Owl from bullet import Bullet def check_keydown_events(event,ai_settings,screen,ship,bullets): if event.key == pygame.K_RIGHT: ship.moving_right = True elif event.key == pygame.K_LEFT: ship.moving_left = True elif event.key == pygame.K_SPACE: new_bullet=Bullet(ai_settings,screen,ship) bullets.add(new_bullet) def check_keyup_events(event,ship): if event.key == pygame.K_RIGHT: ship.moving_right = False elif event.key == pygame.K_LEFT: ship.moving_left = False def check_events(ai_settings,screen,ship,bullets): for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() elif event.type == pygame.KEYDOWN: check_keydown_events(event,ai_settings,screen,ship,bullets) elif event.type == pygame.KEYUP: check_keyup_events(event,ship) def update_screen(ai_settings,screen,ship,owls,bullets): screen.fill(ai_settings.bg_color) for bullet in bullets.sprites(): bullet.draw_bullet() ship.blitme() owls.draw(screen) pygame.display.flip() def create_fleet(ai_settings,screen,owls): owl=Owl(ai_settings,screen) owl=Owl(ai_settings,screen) owl_width=owl.rect.width available_space_x=ai_settings.screen_width - 2*owl_width number_owls_x=int(available_space_x / (2 * owl_width)) for owl_number in range(number_owls_x): owl=Owl(ai_settings,screen) owl.x=owl_width + 2 *owl_width*owl_number owl.rect.x=owl.x owls.add(owl)
3.alien_invasion.py
import pygame import game_functions as gf from pygame.sprite import Group from bullet import Bullet from ship import Ship from setting import Settings from owl import Owl def run_game(): pygame.init() ai_settings=Settings('white') screen=pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height)) pygame.display.set_caption("Alien Invasion") ship = Ship(ai_settings,screen) bullets=Group() owls=Group() gf.create_fleet(ai_settings,screen,owls) # owl=Owl(ai_settings,screen) while True: gf.check_events(ai_settings,screen,ship,bullets) ship.update() bullets.update() for bullet in bullets.copy(): if bullet.rect.bottom<=0: bullets.remove(bullet) # print(len(bullets)) gf.update_screen(ai_settings,screen,ship,owls,bullets) run_game()
至此:创建了一行外星猫头鹰