好久没更新啦
今天为大家更新一下剩下的所有代码
创建一个alien.py
# -*- coding: utf-8 -*-
"""
Created on Sun Sep 23 19:48:22 2018
@author: rain
"""
import pygame
from pygame.sprite import Sprite
class Alien(Sprite):
"""表示单个外星人并设置起始位置"""
def __init__(self,ai_settings,screen):
"""初始化外星人并设置起始位置"""
super(Alien,self).__init__()
self.screen =screen
self.ai_settings =ai_settings
#加载外星人图像,并设置其rect属性
self.image =pygame.image.load('images/alien.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)
def check_edges(self):
"""如果外星人位于屏幕边缘,就返回True"""
screen_rect =self.screen.get_rect()
if self.rect.right >= screen_rect.right:
return True
elif self.rect.left <= 0:
return True
def update(self):
"""向右或者向左移动外星人"""
self.x += (self.ai_settings.alien_speed_factor * self.ai_settings.fleet_direction)
self.rect.x = self.x
在创建一个bullet.py
# -*- coding: utf-8 -*-
"""
Created on Sun Sep 23 17:32:44 2018
@author: rain
"""
import pygame
from pygame.sprite import Sprite
class Bullet(Sprite):
"""一个对飞船发射的子弹进行管理的类"""
def __init__(self,ai_settings,screen,ship):
"""在飞船所处的位置创建一个子弹对象"""
super(Bullet,self).__init__()
self.screen=screen
#在(0,0)处创建一个表示子弹的矩形,在设置正确的位置
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)
self.color = ai_settings.bullet_color
self.speed_factor=ai_settings.bullet_speed_factor
def update(self):
"""向上移动子弹"""
#更新表示子弹位置的小数值
self.y -=self.speed_factor
#更新表示子弹的rect的位置
self.rect.y =self.y
def draw_bullet(self):
"""在屏幕上绘制子弹"""
pygame.draw.rect(self.screen,self.color,self.rect)
在创建一个管理按钮的属性 button.py
# -*- coding: utf-8 -*-
"""
Created on Mon Sep 24 12:48:29 2018
@author: rain
"""
import pygame.font
class Button():
def __init__(self,ai_settings,screen,msg):
"""初始化按钮的属性"""
self.screen =screen
self.screen_rect =screen.get_rect()
#设置按钮的尺寸和其他属性
self.width,self.height =200,50
self.button_color =(0,255,0)
self.text_color =(255,255,255)
self.font = pygame.font.SysFont(None,48)
#创建按钮的rect对象,并使其居中
self.rect =pygame.Rect(0,0,self.width,self.height)
self.rect.center =self.screen_rect.center
#按钮的标签只需创建一次
self.prep_msg(msg)
def prep_msg(self,msg):
"""将msg渲染为图像,并使其在按钮上居中"""
self.msg_image = self.font.render(msg,True,self.text_color,self.button_color)
self.msg_image_rect = self.msg_image.get_rect()
self.msg_image_rect.center = self.rect.center
def draw_button(self):
#绘制一个用