再写外星人入侵项目的时候发现了这个bug,找了很多帖子,也没有效果,现在改正过来了,希望有所帮助,代码如下:

class Ship(Sprite):

def __init__(self, ai_settings, screen):

"""初始化飞船并设置其初始位置"""

super(Ship, self).__init__()

self.screen = screen

self.ai_settings = ai_settings

# 加载飞船图像并获取其外接矩形

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.centerx

self.rect.bottom = self.screen_rect.bottom

# 在飞船的属性center中存储小数值

self.center = float(self.rect.centerx)

self.centery = float(self.rect.centery)

# 移动标志

self.moving_right = False

self.moving_left = False

self.moving_up = False

self.moving_down = False

def update(self):

"""根据移动标志调整飞船的位置"""

# 更新飞船的center值,而不是rect

if self.moving_right and self.rect.right < self.screen_rect.right:

self.center += self.ai_settings.ship_speed_factor

if self.moving_left and self.rect.left > 0:

self.center -= self.ai_settings.ship_speed_factor

if self.moving_up and self.rect.top > 0:

self.centery -= self.ai_settings.ship_speed_factor

if self.moving_down and self.rect.bottom < self.screen_rect.bottom:

self.centery += self.ai_settings.ship_speed_factor

# 根据self.center更新rect对象

self.rect.centerx = self.center

self.rect.centery = self.centery

def center_ship(self):

"""让飞船在屏幕上居中"""

self.center = self.screen_rect.centerx

self.centery = self.screen_rect.bottom

def blitme(self):

"""在指定位置绘制飞船"""

self.screen.blit(self.image, self.rect)

原文链接:https://blog.csdn.net/porlain/article/details/107941722

python随机出现外星人飞船_《外星人入侵》项目飞船和外星人相撞后飞船不返回屏幕底部,依然在外星人中间的问题解决方法...相关推荐

  1. python随机森林变量重要性_推荐 :一文读懂随机森林的解释和实现(附python代码)...

    原标题:推荐 :一文读懂随机森林的解释和实现(附python代码) 作者:WilliamKoehrsen:翻译:和中华:校对:李润嘉 本文约6000字,建议阅读15分钟. 本文从单棵决策树讲起,然后逐 ...

  2. python随机生成数字列表_详解Python利用random生成一个列表内的随机数

    首先,需要导入random模块: import random 随机取1-33之间的1个随机数,可能重复: random.choice(range(1,34)) print得到一系列随机数,执行一次得到 ...

  3. python编程:从入门到实践 外星人入侵项目:武装飞船 代码运行不显示飞船

    我的飞船去哪了???!!! 照着书上的项目完整的代码运行一下,结果屏幕上没出现飞船,代码都是对的呀,这是咋回事? 屏幕高度问题 class Settings():"""A ...

  4. python随机生成一个数字_如何实现python随机生成数字?

    今天小编就生成随机数,整理了多个方式,方便大家在项目时,根据自己的需求,直接拿来套用即可,以下内容相当详细,具体来看看吧~ 说明:python中生成随机数主要用到random模块,方法主要包括:ran ...

  5. python随机生成英文字母_在Python中生成随机字母

    有没有一种方法可以在Python中生成随机字母(如random.randint,但用于字母)? random.randint的范围功能会很好,但是拥有仅输出随机字母的生成器总比没有好. 简单: > ...

  6. python随机生成英文字符串_如何用Python语言生成随机字符串 | 学步园

    这是在Stackoverflow的关于 "用Python语言简洁地生成随机字符串" 的经典问答. 将此文翻译并分享下. 我想生成一个长度为N的字符串. 这个字符串应由数字和大写英文 ...

  7. python随机生成一组数据_使用Python random模块生成随机数据实例

    在本节中,我们将学习如何使用random模块(random)在Python中生成随机数和数据.该模块为各种分布(包括整数,浮点数(实数))实现了伪随机数生成器. 本文的目标: 以下是我们将在本文中介绍 ...

  8. python随机森林筛选变量_变量重要性随机森林在R中是否有类似Python的rfpimp来分组共线变量...

    早上好 我在R(randomForest,caret)中的随机林实现中使用置换重要性对变量进行排序.所有变量都是连续的,结果是明确的.在 为了处理共线特性Terence Parr,Jeremy How ...

  9. python随机生成100内的10个整数_用python随机生成数字教程_如何用Python编程随机产生10个随机整数,并输出这10个整数的和�9�3...

    如何用Python编程随机产生10个随机整数,并输出这10个整数的和 用Python编程产生10个随机整数,并整数的和,方法如下 准备材料python.电脑 1.需要加载的模块是:random. 2. ...

最新文章

  1. 参考WebStorm设置VSCode“转到编辑器中的符号”快捷键为Shift双击(这是一个频繁使用的快捷键)
  2. JS实现标签页效果(配合css)不同标签下对应不同div
  3. 微信公众平台开发中-SAE不支持XStream框架的解决方案
  4. MySQL第4天:MySQL的架构介绍之修改数据库编码格式
  5. spring配置讲解
  6. 用户、组织结构、功能菜单、权限分配设计
  7. Python filecmp库
  8. .NET Core的文件系统[2]:FileProvider是个什么东西?
  9. 操作DataTable
  10. php+tcpdf+表格,php 使用tcpdf库输出pdf
  11. C# 获取汉语拼音全码及简码
  12. MySQL8安装详细步骤
  13. 如何在南方CASS中内插高程点
  14. 【渝粤教育】电大中专电商运营实操 (10)作业 题库
  15. Conflux 联合创始人、CTO伍鸣博士出席杭州钱江世纪城重点发展企业座谈会
  16. 微信公众请求config php,微信公众平台开发之配置与请求_PHP
  17. 自然风景Mac高清动态壁纸分享来了
  18. 年底大标季来袭,一步之遥2.0投标培训班助你实力升级!
  19. 行业寒冬下,简历发了几千次已读不回,功能测试的出路在哪里?
  20. Ruff 公开课回顾——物联网应用已经落地,区块链技术紧随其后

热门文章

  1. VTM5中的Implicit MTS和Explicit MTS
  2. python 保障系统(一)
  3. 下载的网页浏览器打开一直跳转问题
  4. matlab画图中该如何标注途中的某一点,以SIR模型为例
  5. 新站如何快速提升百度索引量
  6. 【技巧收集】MATLAB乱码问题的解决
  7. C# wpf 使用WriteableBitmap渲染视频
  8. Scala系列20:Scala中异常捕获与抛出异常
  9. 大意是没有经历过贫穷的人,很难成为优秀的人才。
  10. python3个引号啥意思_Python中单引号,双引号,3个单引号及3个双引号的区别