对象在 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

有什么想法如何修复它吗?


胡说叔叔
浏览 125回答 2
2回答

牛魔王的故事

尝试将位置检查移到 后面spaceship_X = spaceship_X + spaceship_velocity,也许将其更改为:screen_rect = screen.get_rect()if spaceship_X < screen_rect.left:&nbsp; &nbsp; spaceship_X = screen_rect.leftif spaceship_X > screen_rect.right - spaceship_width:&nbsp; &nbsp; spaceship_X = screen_rect.right - spaceship_width确保使用单等于运算符=(用于赋值),而不是双等于运算符==(检查是否相等)。您需要添加一个spaceship_width变量或常量,表示宇宙飞船的宽度(以像素为单位)。另一种解决方案是改用 arect作为宇宙飞船的尺寸,然后执行以下操作:spaceship.rect = spaceship.rect.clamp(screen.get_rect())

偶然的你

我变了==到=它非常适合我前if&nbsp;spaceship_X&nbsp;<&nbsp;-25: &nbsp;&nbsp;&nbsp;&nbsp;spaceship_X&nbsp;==&nbsp;-25 &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;spaceship_X&nbsp;>&nbsp;1125: &nbsp;&nbsp;&nbsp;&nbsp;spaceship_X&nbsp;==&nbsp;1125后if&nbsp;spaceship_X&nbsp;<&nbsp;-25: &nbsp;&nbsp;&nbsp;&nbsp;spaceship_X&nbsp;=&nbsp;-25 &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;spaceship_X&nbsp;>&nbsp;1125: &nbsp;&nbsp;&nbsp;&nbsp;spaceship_X&nbsp;=&nbsp;1125
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python