所以,我是 python 初學者,想創(chuàng)建一個太空入侵者游戲。但我面臨一個問題。如果我按向左箭頭鍵或向右箭頭鍵較長時間,則玩家對象會退出 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作為宇宙飛船的尺寸,然后執(zhí)行以下操作:
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
提交
取消