Python Pygame - 多人游戏

4
我正在尝试创建一个至少可以让三个不同电脑的参与者玩的“画画游戏”。
我有一个适用于两名玩家的代码。有人知道我如何将其改为适用于三个或更多玩家吗?
...............................................................
这是我的服务器代码:
server = ""
port = 5555

games = {}
idCount = 0
currentPlayer = 0

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.bind((server, port))

s.listen()
print("Waiting for a connection, Server Started")

class Game:
    def __init__(self, id):
        self.connected = False

players = [Player(0), Player(1)]

def threaded_client(conn, player, gameId):
    global idCount
    conn.send(pickle.dumps(players[player]))
    reply = ""
    while True:
        try:
            data = pickle.loads(conn.recv(2048))
            players[player] = data
            if gameId in games:
                game = games[gameId]
                if not data:
                    print("Disconnected")
                    break
                else:
                    if player == 1:
                        reply = players[0]
                    else:
                        reply = players[1]

                conn.sendall(pickle.dumps(reply))
        except:
            break

    print("Lost connection")
    try:
        del games[gameId]
        print("Closing game", gameId)
    except:
        pass
    idCount -= 1
    conn.close()

while True:
    conn, addr = s.accept()
    print("Connected to:", addr)

    idCount += 1
    p = 0

    gameId = (idCount - 1) // 2

    if idCount % 2 == 1:
        games[gameId] = Game(gameId)
        players[0].connected = True
        print("Creating a new game")
        print("Waiting for another player")
    else:
        games[gameId].connected = True
        p = 1
        players[1].connected = True
        print("Game is available")



    start_new_thread(threaded_client, (conn, currentPlayer, gameId))
    currentPlayer += 1


抱歉,由于您并未提供需要翻译的内容,我无法完成您的要求。请提供需要翻译的具体内容,谢谢!
1个回答

0

你可以这样做:当游戏正在运行并有两个玩家时,第三个玩家加入后显示一个“等待更多玩家”的屏幕,然后当第四个玩家加入时,运行一个新的线程/实例,并让服务器处理新的实例。

但是要使用一台强大的电脑来运行服务器,因为如果很多人加入,服务器会因过载而崩溃,你运行服务器的电脑也可能会出现延迟。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接