You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pygame中实现玩家触碰屏幕边界时瞬移至对侧?

Pygame实现玩家屏幕侧瞬移(吃豆人侧门机制)

要实现吃豆人里的侧门瞬移,核心是允许玩家移出屏幕边界,当完全移出时将其位置重置到屏幕另一侧。以下是修改后的完整代码,关键改动已标注:

import pygame

white=(255,255,255)
yellow=(255,255,102)
black=(0,0,0)
red=(213,50,80)
green=(0,255,0)
blue=(50,153,213)

dis_width, dis_height = 1920, 1080  # 修正拼写错误:witdh → width
dis = pygame.display.set_mode((dis_width, dis_height))

pygame.display.set_caption("")

fps = 60
velocity = 6
player_width = 10  # 修正拼写错误:witdh → width
player_height = 10

def draw_window(player):  # 修正拼写错误:widow → window
    dis.fill(black)
    pygame.draw.rect(dis, white, player)  # 直接传入player Rect对象更简洁
    pygame.display.update()

def movement(keys_pressed, player):
    # 移除原有的屏幕边界限制,允许玩家移出屏幕
    if keys_pressed[pygame.K_a]:
        player.x -= velocity
    if keys_pressed[pygame.K_d]:
        player.x += velocity
    if keys_pressed[pygame.K_w]:
        player.y -= velocity
    if keys_pressed[pygame.K_s]:
        player.y += velocity
    if keys_pressed[pygame.K_ESCAPE]:
        pygame.quit()
        exit()  # 退出程序,避免后续代码报错

def main():
    player = pygame.Rect(dis_width/2, dis_height/2, player_width, player_height)
    clock = pygame.time.Clock()
    run = True
    while run:
        clock.tick(fps)
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                run = False

        keys_pressed = pygame.key.get_pressed()
        movement(keys_pressed, player)

        # 核心:处理侧门瞬移逻辑
        # 当玩家完全移出左侧屏幕,瞬移到右侧
        if player.right < 0:
            player.left = dis_width
        # 当玩家完全移出右侧屏幕,瞬移到左侧
        elif player.left > dis_width:
            player.right = 0

        draw_window(player)

    pygame.quit()

if __name__ == "__main__":
    main()

关键改动说明:

  • 移除移动限制:删掉原代码中限制玩家不能出屏幕的条件(比如player.x-velocity>-1),让玩家可以自由移出屏幕。
  • 添加瞬移逻辑:在移动完成后,通过player.right和player.left判断玩家是否完全移出屏幕边界,若是则将其位置重置到另一侧。
  • 修正拼写错误:比如dis_witdh→dis_width、draw_widow→draw_window,避免潜在bug。
  • 优化绘制代码:直接传入player Rect对象给pygame.draw.rect,比手动拆分坐标更简洁可靠。

内容的提问来源于stack exchange,提问作者tesco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 20:25:27