在使用插座中使用json.loads()时,无法使用任何时间函数:



我正在尝试使用Python中的插座制作基于控制台的多人蛇游戏。但是,我面临着一个非正统的问题。每当我使用任何时间函数时,time.sleep()或win.timeout()/em>我查找了错误,没有解码多个JSON对象。我也尝试使用泡菜,但是错误的错误直到我撰写了时间功能。

客户端:

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'))

您的服务器代码在发送utf-8之前将JSON字符串编码为字节,因此您的客户端应将字节解码为带有UTF-8的字符串,然后将其加载为JSON:

x = s.recv(1024)
data = json.loads(x.decode('utf8'))
snake = data['snake']
snake2 = data['me']

最新更新