-2

int(COORDINATES 2 )にアクセスしたいのですが、動作していません。これを修正するにはどうすればよいですか?現在グローバルスコープになっているCOODINATESにアクセスしようとしています

import socket
import os,sys
import time
from threading import Thread

HOST = '59.191.193.59'
PORT = 5555

COORDINATES = []

def connect():   
    globals()['client_socket'] = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    client_socket.connect((HOST,PORT))

def update_coordinates():
    connect()
    screen_width = 0
    screen_height = 0
    while True:
        try:
            client_socket.send("loc\n")
            data = client_socket.recv(8192)
        except:
            connect();
            continue;

        globals()['COORDINATES'] = data.split()

        if(not(COORDINATES[-1] == "eom" and COORDINATES[0] == "start")):
            continue

        if (screen_width != int(COORDINATES[2])):
        screen_width = int(COORDINATES[2])
                screen_height = int(COORDINATES[3])   

Thread(target=update_coordinates).start()

while True:
    print 'ball x' , int(COORDINATES[2])

これは私が得たエラーですここに画像の説明を入力してください ここに画像の説明を入力してください

コードをこれに変更すると、次のようになります。

    import socket
import os,sys
import time
from threading import Thread

HOST = '59.191.193.59'
PORT = 5555

COORDINATES = []

def connect():   
    globals()['client_socket'] = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    client_socket.connect((HOST,PORT))

def update_coordinates():
    connect()
    screen_width = 0
    screen_height = 0
    while True:
        try:
            client_socket.send("loc\n")
            data = client_socket.recv(8192)
        except:
            connect();
            continue;

        globals()['COORDINATES'] = data.split()

        if(not(COORDINATES[-1] == "eom" and COORDINATES[0] == "start")):
            continue

        if (screen_width != int(COORDINATES[2])):
        screen_width = int(COORDINATES[2])
                screen_height = int(COORDINATES[3]) 

    print int(COORDINATES[8])  

Thread(target=update_coordinates).start()

そしてこれは私が得るものです:

ここに画像の説明を入力してください

4

1 に答える 1

1

この行:

Thread(target=update_coordinates()).start()

読む必要があります:

Thread(target=update_coordinates).start()

関数自体を提供するのではなく、関数の結果をターゲットの値として提供しました。

于 2012-10-05T01:28:47.973 に答える