Найти - Пользователи
Полная версия: Что не так с сокетами нужна помощь
Начало » Центр помощи » Что не так с сокетами нужна помощь
1
Zhnech
Хочу написать камень ножницы бумагу на пайтоне что бы лучше понять тему сокетов, но появляется проблема с разрыванием соединения, понятно что нужно еще будет подредактировать код, поставить везде энкоды и декоды, но проблема не в этом, а в разрыве соеденения

 #host
import socket
win_score = int(input('Победный счет:'))
score1 = 0
score2 = 0
sock = socket.socket()
sock.bind(('', 9090))
sock.listen()
conn, addr = sock.accept()
conn.send('Играем до', win_score)
while score1 <= win_score or score2 < win_score:
    if score1 == score2 and score1 != 0:
        conn.send('Оба игрока абсолюты ВСЕРОСа по КНБ')
        print('Оба игрока абсолюты ВСЕРОСа по КНБ')
        if score1 == win_score:
            conn.send('Игрок 1 - абсолют ВСЕРОСа по КНБ'.encode())
            print('Игрок 1 - абсолют ВСЕРОСа по КНБ')
        if score2 == win_score:
            conn.send('Игрок 2 - абсолют ВСЕРОСа по КНБ'.encode())
            print('Игрок 2 - абсолют ВСЕРОСа по КНБ')
        player1thing = input("Камень, Ножницы или Бумага?")
        player2thing = conn.recv(1024).decode()
        if player1thing == 'Камень':
            if player2thing == 'Камень':
                res = 'Ничья'
                conn.send(res.encode())
                conn.send('Счет игрока 1:'.encode(), score1)
                conn.send('Счет игрока 2:'.encode(), score2)
            if player2thing == 'Бумага':
                res = 'Победа игрока 2'
                conn.send(res.encode())
                score2 += 1
                conn.send('Счет игрока 1:'.encode(), score1)
                conn.send('Счет игрока 2:'.encode(), score2)
            if player2thing == 'Ножницы':
                res = 'Победа игрока 1'
                conn.send(res.encode())
                score1 += 1
                conn.send('Счет игрока 1:'.encode(), score1)
                conn.send('Счет игрока 2:'.encode(), score2)
        if player1thing == 'Бумага':
            if player2thing == 'Камень':
                res = 'Победа игрока 1'
                score1 += 1
                conn.send(res.encode())
                conn.send('Счет игрока 1:'.encode(), score1)
                conn.send('Счет игрока 2:'.encode(), score2)
            if player2thing == 'Бумага':
                res = 'Ничья'
                conn.send(res.encode())
                conn.send('Счет игрока 1:'.encode(), score1)
                conn.send('Счет игрока 2:'.encode(), score2)
            if player2thing == 'Ножницы':
                res = 'Победа игрока 2'
                conn.send(res.encode())
                score2 += 1
                conn.send('Счет игрока 1:'.encode(), score1)
                conn.send('Счет игрока 2:'.encode(), score2)
        if player1thing == 'Ножницы':
            if player2thing == 'Камень':
                res = 'Победа игрока 2'
                score2 += 1
                conn.send(res.encode())
                conn.send('Счет игрока 1:'.encode(), score1)
                conn.send('Счет игрока 2:'.encode(), score2)
            if player2thing == 'Бумага':
                res = 'Победа игрока 1'
                conn.send(res.encode())
                score1 += 1
                conn.send('Счет игрока 1:'.encode(), score1)
                conn.send('Счет игрока 2:'.encode(), score2)
            if player2thing == 'Ножницы':
                res = 'Ничья'
                conn.send(res.encode())
                conn.send('Счет игрока 1:'.encode(), score1)
                conn.send('Счет игрока 2:'.encode(), score2)
conn.close()
#client
import socket
sock = socket.socket()
sock.connect(('localhost', 9090))
player2name = input('Имя игрока 2:')
ofofof = sock.recv(1024).decode()
print(ofofof)
res = ''
while res != 'Игрок 1 - абсолют ВСЕРОСа по КНБ' or res != 'Игрок 2 - абсолют ВСЕРОСа по КНБ' or res != 'Оба игрока абсолюты ВСЕРОСа по КНБ':
    player2thing = input("Камень, ножницы или бумага?")
    sock.send(player2thing.encode())
    res = sock.recv(1024).decode()
    print(res)
    score1inf = sock.recv(1024).decode
    print(score1inf)
    score2inf = sock.recv(1024).decode()
    print(score2inf)
sock.close()
py.user.next
Ты лучше начни с чего-нибудь более простого. Если сокеты нужны, то просто пообщайся через сокет между двумя клиентами, подключающимися в одно время или в разное время. Не надо игру через них делать. У тебя и игра не получается, и сокеты не получаются, и ты это всё ещё соединил.

А игру сделай просто в консоли, чтобы она играла с одним игроком и с двумя игроками. Думаю, ты и без сокетов её не сделаешь.
herrylauu
Одной из выдающихся особенностей A Small World Cup является упор на командную работу.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB