所以,我是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())
我更改了
==
至
=
它对我的非常有效
之前
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