所以,我是 python 初学者,想创建一个太空入侵者游戏。但我面临一个问题。如果我按向左箭头键或向右箭头键较长时间,则玩家对象会退出 pygame 窗口。这是我的代码 -import pygamepygame.init()window = pygame.display.set_mode((1200,800))pygame.display.set_caption('RESCUE THE SPACESHIP')close = Falsespaceship_velocity = 0spaceship_X = 550spaceship_Y = 670spacehip_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 == -25if spaceship_X > 1125: spaceship_X == 1125有什么想法如何修复它吗?
2 回答
牛魔王的故事
TA贡献1830条经验 获得超3个赞
尝试将位置检查移到 后面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变量或常量,表示宇宙飞船的宽度(以像素为单位)。
另一种解决方案是改用 arect作为宇宙飞船的尺寸,然后执行以下操作:
spaceship.rect = spaceship.rect.clamp(screen.get_rect())
偶然的你
TA贡献1841条经验 获得超3个赞
我变了
==
到
=
它非常适合我
前
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
添加回答
举报
0/150
提交
取消