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()

至此:创建了一行外星猫头鹰

 

 

 

 

posted @ 2021-02-08 14:01  小仙女学Linux  阅读(49)  评论(0编辑  收藏  举报