学习python之武装飞机项目之路(day2-创建Ship类)
今天学习创建Ship类:
ship.py
import pygame
class Ship():
def __init__(self,screen):
#初始化飞船并设置初始位置
self.screen = screen
#加载飞船图像并获取其外接矩形
self.image = pygame.image.load('images\ship.bmp')
self.rect = self.image.get_rect()#返回一个get_rect()的属性
self.screen_rect =screen.get_rect()
#将每个新飞船放在屏幕底部中央
self.rect.centerx = self.screen_rect.centerx#对象在x方向上居中
self.rect.bottom = self.screen_rect.bottom#对象底部与屏幕底部对齐
def blitme(self):
#指定位置绘制飞船
self.screen.blit(self.image,self.rect) #调用这个方法在屏幕上绘制飞机
`
alien_invasion
修改后的主文件代码:
import sys
import pygame
from settings import *
from ship import *
def run_game():
# 初始化游戏并创建一个屏幕对象
pygame.init()
ai_settings = Settings()
screen =pygame.display.set_mode((ai_settings.screen_with,ai_settings.screen_height))
pygame.display.set_caption('Alien Invasion')
#创建一艘飞船
ship =Ship(screen)
# 设置背景色
bg_color = (230, 230, 230)
# 开始游戏的主循环
while True:
# 监视键盘和鼠标事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
# 每次循环时都重绘屏幕
screen.fill(ai_settings.bg_color)
ship.blitme()
# 让最近绘制的屏幕可见
pygame.display.flip()
run_game()
运行的结果:
经验总结:
在ship.py文件中,把 self.screen.blit(self.image,self.rect)
写成了: self.screen.bilt(self.image,self.rect)
把原本的blit写错了bilt,导致出现了以下错误:
AttributeError: 'pygame.Surface' object has no attribute 'bilt'
这句话的意思就是在pygame.Surface类中没有bilt这个属性,让我纠结了半天,最后回头发现原理字母拼写错误,还一直以为是正确的。
经验教训:
1.出现问题是先检查一下字母有没有写错。
2.出现问题再捋一下思路,流程。
今天知识点:
pygame.image.load()#作用是读取图像文件
get_rect() #作用是一个处理矩形图像的方法,返回值包含矩形的设置居中属性(比如再x方向上居中等等)
self.screen.bilt(): 将位图按照设置绘制到屏幕上,screen为建立的主屏;