Игра в понг с использованием P2P Socket python - PullRequest
0 голосов
/ 18 февраля 2020

Я создаю игру в понг, чтобы мультиплеер мог присоединиться к игре.

Протокол P2P:

После запуска программа отправит число 230. После отправки 220 , он пытается получить целое число. Если никто не слушает во время первой отправки, то возникает исключение повышения.

Как только получено целое число, будет либо 220, либо 221. Если мы равноправны, то отправим 222. Если мы равноправны 2, я нужно отправить 221, затем получить целое число и проверить, что это 222. В противном случае возникает исключение.

Мой код, но его необходимо исправить:

def p2p_connection(sock, addr):

    sock.sendto(bytes(220),addr)

    data, recvaddr = sock.recvfrom(1024)

    if data != 220 or data != 221:
        raise Exception("error")
    else:
        if data == 220:
            sock.sendto(bytes(221),addr)
        else:
            sock.sendto(bytes(222),addr)


def choose_player(sock, addr):
    """
    Choosing which player. Both sides in the P2P,(either 0 or
    1) and send that to the peer while also receiving an integer from the peer. If our random number
    not equal to the peer's number then we have chosen distinct roles for each peer (0 will be for
    the right player and 1 will be for the left player). If the numbers are equal however then we
    haven't picked distinct roles so each peer will select and send a new random number.

    returns the player number we are (0 for right and 1 for left).
    """

    data, recvaddr = sock.recvfrom(1024)

    if data == 321:
        return 1
    elif data == 322:
        return 0
def main():


    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    sock.bind(('', args.port))

    # P2P connection
    p2p_connection(sock, addr)
    sock.settimeout(0.05) 
    if choose_player(sock) == 1:
        pong = LeftPlayer(window, sock)
    else:
        pong = PRightPlayer(window, sock)

    # updating and drawing the game.
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...