我正在尝试使用python中的套接字制作一个基于控制台的多人蛇游戏。然而,我面临着一个非正统的问题。无论何时,我使用任何时间函数,比如time.sleep()或win.timeout(),json.loads()都会引发异常:json.decoder.jsondecoderror:Extra data:line 1 column 72(char 71) 我已经查找了错误并且没有解码多个JSON对象。我也尝试过使用pickle,但是错误一直存在,直到我没有注释掉时间函数
客户:
while 1:
x = s.recv(1024)
snake = json.loads(x)['snake']
snake2 = json.loads(x)['me']
win.border(0)
win.addstr(0, 2, 'Score : ' + str(score) + ' ')
win.addstr(0, 27, ' SNAKE ')
#win.timeout(75) Works fine untill this is commented out
#or this time.sleep(1)
prevKey = key
event = win.getch()
key = key if event == -1 else event
if key not in [KEY_LEFT, KEY_RIGHT, KEY_UP, KEY_DOWN, 27]:
key = prevKey
win.addch(snake[0][0], snake[0][1], '0')
win.addch(snake2[0][0], snake2[0][1], '0')
last = snake.pop()
win.addch(last[0], last[1], ' ')
last = snake2.pop()
win.addch(last[0], last[1], ' ')
服务器:
me = [[4,10], [4,9], [4,8]]
snake1 = [[6,10], [6,9], [6,8]]
snakes.append(snake1)
snakes.append(me)
while True:
time.sleep(0.001)
x = {
"snake":snake1 ,
"me" :me
}
c.send(bytes(json.dumps(x) , 'utf8'))
您的服务器代码在发送JSON字符串之前使用UTF-8将其编码为字节,因此您的客户机应该在将其加载为JSON之前使用UTF-8将字节解码为字符串:
相关问题 更多 >
编程相关推荐