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

Pygame双玩家场景玩家2状态不更新、位置不同步问题求助

问题根因

  1. 缺失本地玩家移动逻辑:你定义了Player类的vel速度属性,但代码中没有监听方向键修改本地玩家p的x/y坐标的逻辑,操作键盘时p的坐标不会发生变化,发给服务端的永远是初始坐标,自然无法同步。
  2. 空格按键逻辑错误:按下空格时你直接重新实例化了p和p2对象,不仅把本地玩家坐标重置回初始值,还把服务端同步过来的另一个玩家的坐标直接覆盖为(0,0),直接打断了同步逻辑。
  3. 自定义参数未同步:你修改的billybob变量仅存在于本地客户端,既没有上传到服务端,也没有同步给另一个客户端,所以另一个玩家看不到高度变化。
  4. 执行顺序错误:当前主循环先同步对方玩家位置,再处理本地输入更新自身位置,发给服务端的永远是上一帧的位置,会导致同步延迟。

修复方案

1. 调整主循环执行顺序,补全移动逻辑

将输入处理放在同步逻辑之前,添加方向键控制本地玩家移动的代码:

def main(screen, billybob):
    run = True
    n = Network()
    startPos = read_pos(n.getPos())
    # 修正玩家宽度,不要超过窗口尺寸
    p = Player(startPos[0], startPos[1],50,50,(BLUE))
    p2 = Player(0,0,50,50,(RED))
    while run:
        # 先处理事件和输入
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                run = False
                pygame.quit()
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_SPACE:
                    billybob = billybob - 10
                    # 不要重新实例化,直接修改属性即可
                    p.height = billybob
                    p.update()
        # 补全方向键移动逻辑
        keys = pygame.key.get_pressed()
        if keys[pygame.K_LEFT] and p.x > 0:
            p.x -= p.vel
        if keys[pygame.K_RIGHT] and p.x < width - p.width:
            p.x += p.vel
        if keys[pygame.K_UP] and p.y > 0:
            p.y -= p.vel
        if keys[pygame.K_DOWN] and p.y < height - p.height:
            p.y += p.vel
        p.update()
        
        # 再同步对方玩家位置
        p2Pos = read_pos(n.send(make_pos((p.x, p.y))))
        p2.x = p2Pos[0]
        p2.y = p2Pos[1]
        p2.update()

        redrawWindow(screen, p, p2)

2. 扩展同步协议(需要同步高度等自定义参数时修改)

如果需要同步billybob这类自定义参数,修改打包/解包函数,把高度参数和x/y坐标一起传输:

# 客户端修改
def read_data(str):
    arr = str.split(",")
    return int(arr[0]), int(arr[1]), int(arr[2])

def make_data(tup):
    return f"{tup[0]},{tup[1]},{tup[2]}"

服务端同步修改存储结构和对应的打包/解包逻辑即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 13:09:05