python - 如何让演员从屏幕的右侧滑出然后重置回左侧
问题描述
对不起,如果这个问题很愚蠢。我刚刚开始在一个名为 pygame zero 的库中进行编码。我在翻译这段代码时遇到问题:
if actor.left > WIDTH:
actor.right = 0
我希望它能够向左移动然后出现在右侧,而不是它从右侧出现然后出现在左侧。如果这是一个新手问题,再次抱歉,但感谢您的帮助!
这是完整的代码
import pgzrun
WIDTH = 1200
HEIGHT = 700
music.play('music1')
chick = Actor('chick')
chick.pos = 100, 550
hippo = Actor('hippo')
hippo.pos = 1100, 550
def draw():
screen.blit('background1', (0,0))
chick.draw()
hippo.draw()
def update():
if chick.left > WIDTH:
chick.right = 0
if hippo.left > WIDTH:
hippo.right = 0
if keyboard.left:
hippo.x = hippo.x - 2 #contols for hippo
hippo.angle += 3 #rotation effect
if keyboard.right:
hippo.x = hippo.x + 2 #contols for hippo
hippo.angle -= 3 #rotation effect
if keyboard.a:
chick.x = chick.x - 2 #contols for chick
chick.angle += 3 #rotation effect
if keyboard.d:
chick.x = chick.x + 2 #contols for chick
chick.angle -= 3 #rotation effect
pgzrun.go()
解决方案
在您现有的代码中,您处理在右侧走出去。要处理走出右侧,您需要为每个参与者添加一个新的 if 语句。您可以在现有的 if 语句下添加 id 。
"""Your existing code"""
if chick.left > WIDTH:
chick.right = 0
if hippo.left > WIDTH:
hippo.right = 0
""""My new code"""
if chick.right < 0:
chick.left = WIDTH # Maybe change to WIDTH - 1 to make it visible
if hippo.right < 0:
chick.left = WIDTH # Maybe change to WIDTH - 1 to make it visible
我认为这张图片可以帮助理解正在发生的事情。理解窗口就像一个坐标系的重要部分。0 位于左侧,WIDTH 位于右侧。
如果 的坐标actor.right
小于 0 ( if chick.right < 0:
),演员在左侧完全移出。所以你必须将它的左值设置在右边缘。这样,演员被移动到最右侧。你可以把它想象成你有一个真正的矩形,你将矩形的左边缘移动到一个位置。在这种情况下位置WIDTH
。当您尝试设置其他值而不是WIDTH
.
例如尝试chick.left = WIDTH/2 # move it nearly to the center
或chick.left = 20
。
要将其准确移动到中心:
width_actor = actor.right - actor.left
if actor.right < 0:
actor.left = WIDTH/2 - width_actor/2
只需进行实验,您就应该了解发生了什么。
推荐阅读
- ruby-on-rails - 禁止欧盟中央银行 Gem 重定向
- angular - Angular 6 中的可观察实现
- firebase - flutter firebase auth当前用户电子邮件的appbar标题
- nginx - 在 nginx 上托管前端和后端
- django - Django:如何序列化表单集
- python-3.x - 如何管理 matplotlib 中的日期重叠
- jquery - 如何使用 jQuery 在 Thymeleaf 中获取 HttpServletRequest 属性?
- .htaccess - 尝试缓存半身像时,从查询字符串方法移开后,样板无法获取 css/js
- ios - 为什么 viewDidLoad() 中不存在 TableView 的 FooterView 以及如何解决?
- python - ImportError:没有名为 Window 的模块,但来自导入工作