用法分析
下面将飞船加入到游戏中。为了在屏幕上绘制玩家的飞船,我们将加载一幅图像,再使用Pygame方法blit() 绘制它。
选择用于表示飞船的图像后,需要将其显示到屏幕上。我们将创建一个名为ship 的模块,其中包含Ship 类,它负责管理飞船的大部分行为。代码实例
#======================================================
#功能:ship类#作者:python小哥#时间:-7-5
#微信公众号:DJXY00001
#微信名称:Python提升课堂#Version:1.0
#======================================================import pygameclass Ship():def __init__(self, screen):"""初始化飞船并设置其初始位置"""self.screen = screen# 加载飞船图像并获取其外接矩形❶ self.image = pygame.image.load('images/ship.bmp')❷ self.rect = self.image.get_rect()❸ self.screen_rect = screen.get_rect()# 将每艘新飞船放在屏幕底部中央❹ self.rect.centerx = self.screen_rect.centerxself.rect.bottom = self.screen_rect.bottom❺ def blitme(self):"""在指定位置绘制飞船"""self.screen.blit(self.image,self.rect)
首先,我们导入了模块pygame 。Ship 的方法__init__() 接受两个参数:引用self 和screen ,其中后者指定了要将飞船绘制到什么地方。为加载图像,我们调用了pygame.image.load() (见❶)。这个函数返回一个表示飞船的surface,而我们将这个surface存储到了self.image 中。
加载图像后,我们使用get_rect() 获取相应surface的属性rect (见❷)
我们将把飞船放在屏幕底部中央。为此,首先将表示屏幕的矩形存储在self.screen_rect 中(见❸),再将self.rect.centerx (飞船中心的x 坐标)设置为表示屏幕的矩形的属性centerx (见❹)
在❺处,我们定义了方法blitme() ,它根据self.rect 指定的位置将图像绘制到屏幕上。
#======================================================#功能:alien_invasion类#作者:python小哥#时间:-7-5
#微信公众号:DJXY00001
#微信名称:Python提升课堂#Version:1.0
#======================================================import sysimport pygamefrom settings import Settingsfrom ship import Shipdef run_game():# 初始化游戏并创建一个屏幕对象pygame.init()ai_settings = Settings()screen = pygame.display.set_mode((ai_settings.screen_width, ai_settings.screen_height))pygame.display.set_caption("外星人入侵")# 创建一艘飞船ship = Ship(screen)# 开始游戏的主循环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 类,并在创建屏幕后创建一个名为ship 的Ship 实例。必须在主while 循环前面创建该实例(见程序第12行ship= Ship(screen)),以免每次循环时都创建一艘飞船。填充背景后,我们调用ship.blitme() 将飞船绘制到屏幕上,确保它出现在背景前面(见程序第21行ship.blitme())。
代码运行输出:
飞船停在了游戏界面的底部中央,下节将引出如何驾驶飞船!
说明:关注本公众号,回复数字,得对应年月讲解案例的所有代码,规则为年的后两位+月份
如:2002,代表2月,,代表3月,依此类推(代码从2月开始,截止目前月份的上一个月为止)
长按二维码
查看更多吧