python外星人入侵游戏rect报错_Python外星人入侵游戏开发—添加飞船图像

用法分析

下面将飞船加入到游戏中。为了在屏幕上绘制玩家的飞船,我们将加载一幅图像,再使用Pygame方法blit() 绘制它。

选择用于表示飞船的图像后,需要将其显示到屏幕上。我们将创建一个名为ship 的模块,其中包含Ship 类,它负责管理飞船的大部分行为。代码实例

#======================================================

#功能:ship类#作者:python小哥#时间:2020-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小哥#时间:2020-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,代表2020年2月,2003,代表2020年3月,依此类推(代码从2020年2月开始,截止目前月份的上一个月为止)

长按二维码

查看更多吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值