为了账号安全,请及时绑定邮箱和手机立即绑定

对象在 pygame 中逃离窗口。如何防止它这样做?

对象在 pygame 中逃离窗口。如何防止它这样做?

胡说叔叔 2023-07-11 13:56:48
所以,我是 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())


查看完整回答
反对 回复 2023-07-11
?
偶然的你

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


查看完整回答
反对 回复 2023-07-11
  • 2 回答
  • 0 关注
  • 100 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信