python--pygame04

1.创建子弹

bullet.py

import  pygame
from pygame.sprite import Sprite
class Bullet(Sprite):
    def __init__(self,ai_settings,screen,ship):
        super(Bullet,self).__init__()
        self.screen=screen
        self.rect=pygame.Rect(0,0,ai_settings.bullet_width,ai_settings.bullet_height)
        self.rect.centerx=ship.rect.centerx #子弹的中心是飞船的中心位置
        self.rect.top=ship.rect.top #子弹的顶部是非常的顶部。让子弹看着是从飞船里面飞出来的一样。
        self.y=float(self.rect.y) #子弹向上移动所以是y坐标,用float小数微调子弹的速度。
        self.color=ai_settings.bullet_color
        self.speed_factor=ai_settings.bullet_speed_factor
    def update(self):
        self.y -=self.speed_factor
        self.rect.y=self.y
    def draw_bullet(self):
        pygame.draw.rect(self.screen,self.color,self.rect)

2.setting.py

class Settings():
    def __init__(self,bg_color):      #__init__是类的方法。每创建新实例时会自动调用
       screen_width = input("please input what you like the screen width,default 800")
       self.screen_width = int(screen_width)
       screen_height = input("please input what you like the screen height,default 1200")
       self.screen_height = int(screen_height)
       self.bg_color = bg_color
       self.ship_speed_factor=0.5
       self.bullet_speed_factor=0.3
       self.bullet_width=1
       self.bullet_height=8
       self.bullet_color=29,25,26

4.game_function.py

import  sys
import  pygame
from setting import Settings
from ship import Ship
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,bullets):
    screen.fill(ai_settings.bg_color)
    for bullet in bullets.sprites():
        bullet.draw_bullet()
    ship.blitime()
    pygame.display.flip()

3.allien_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
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()
while True:
gf.check_events(ai_settings,screen,ship,bullets)
ship.update()
bullets.update()
gf.update_screen(ai_settings,screen,ship,bullets)
run_game()

至此:子弹创建成功

 


 

 

 

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