如何解决对象从pygame中逃出窗口如何防止它这样做?
所以,我是python初学者,想创建一个游戏。但是我遇到了错误。 如果我按住向左键或向右键的时间更长,则播放器对象将退出pygame窗口。
这是我的代码-
import pygame
pygame.init()
window = pygame.display.set_mode((1200,800))
pygame.display.set_caption('RESCUE THE SPACESHIP')
close = False
spaceship_velocity = 0
spaceship_X = 550
spaceship_Y = 670
spacehip_img = pygame.image.load('spaceship.png')
while not close:
for event in pygame.event.get():
if event.type == pygame.QUIT:
quit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
spaceship_velocity -= 1
if event.key == pygame.K_RIGHT:
spaceship_velocity += 1
#Doesn't seems to work
if spaceship_X < -25:
spaceship_X == -25
if spaceship_X > 1125:
spaceship_X == 1125
spaceship_X = spaceship_X + spaceship_velocity
print(spaceship_X)
window.fill((255,255,255))
window.blit(spacehip_img,(spaceship_X,spaceship_Y))
pygame.display.update()
这似乎并不限制窗口内的太空飞船
if spaceship_X < -25:
spaceship_X == -25
if spaceship_X > 1125:
spaceship_X == 1125
有什么想法要解决吗?
解决方法
尝试在spaceship_X = spaceship_X + spaceship_velocity
之后移动位置检查,也许将其更改为:
screen_rect = screen.get_rect()
if spaceship_X < screen_rect.left:
spaceship_X = screen_rect.left
if spaceship_X > screen_rect.right - spaceship_width:
spaceship_X = screen_rect.right - spaceship_width
请确保使用单等号运算符 =
(用于分配),而不要使用双等号运算符 ==
(检查是否相等) 。并且您将需要添加一个spaceship_width
变量或常量,以像素为单位表示飞船的宽度。
另一种解决方案是切换为对宇宙飞船的尺寸使用rect
,然后执行以下操作:
spaceship.rect = spaceship.rect.clamp(screen.get_rect())
,
我改变了
==
TO
=
它完全为我工作
之前
if spaceship_X < -25:
spaceship_X == -25
if spaceship_X > 1125:
spaceship_X == 1125
之后
if spaceship_X < -25:
spaceship_X = -25
if spaceship_X > 1125:
spaceship_X = 1125
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。