Мне нужно 3 человека, чтобы подключиться к моему игровому серверу, но я понятия не имею, как это сделать [закрыто]Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Мне нужно 3 человека, чтобы подключиться к моему игровому серверу, но я понятия не имею, как это сделать [закрыто]

Сообщение Anonymous »


Описание проблемы:

Я работаю над игрой «Колесо фортуны», в которой у меня есть серверный и клиентский код. Мне нужно разрешить нескольким игрокам играть на сервере, и я хочу сделать так, чтобы игроки ходили по очереди. Вот код моего сервера и клиента:

Код сервера:

импортировать сокет импорт потоков импортировать случайный импорт математики SERVER_IP = "127.0.0.1" СЕРВЕР_ПОРТ = 61371 server_socket = сокет.сокет(сокет.AF_INET, сокет.SOCK_STREAM) server_socket.bind((SERVER_IP, SERVER_PORT)) server_socket.listen(1) защита handle_client(client_socket): пытаться: client_address = client_socket.getpeername() print(f"Принято соединение с {client_address}") play_game(client_socket) окончательно: client_socket.close() защита select_phrase(): фразы = ["HELLO WORLD", "PYTHON PROGRAM", "КОЛЕСО ФОРТУНЫ"] вернуть случайный.выбор(фразы) def display_phrase(фраза, догадавшиеся_буквы): дисплей = "" на букву во фразе: если буква в догадавшихся_буквах или нет, Letter.isalpha(): дисплей += буква + " " еще: дисплей += "_" вернуть display.strip() защита spin_wheel(): случайное_число = случайное.рандинт(100, 1000) return math.ceil(random_num/50) * 50 защита play_game(client_socket): фраза = выберите_фразу() догадавшиеся_буквы = установить() деньги = 0 client_socket.send("Добро пожаловать в Колесо Фортуны!\n".encode()) пока правда: client_socket.send(f"Ваши текущие деньги: ${money}\n".encode()) client_socket.send('Выберите действие: «повернуть», «угадать» или «выйти»: '.encode()) действие = client_socket.recv(1024).decode().strip().lower() если действие == "вращение": spin_result = spin_wheel() client_socket.send( "\n" f"Вы крутнули колесо и получили ${spin_result}!".encode() ) client_socket.send("Угадай букву или всю фразу:".encode()) догадайтесь = client_socket.recv(1024).decode().strip().upper() если len(guess) == 1 и догадайтесь.isalpha(): если угадать в "AEIOU": деньги -= 250 client_socket.send( «Вы угадали гласную, и с вас сняли 250 долларов.\n».encode() ) если угадать в догадавшихся_буквах: client_socket.send( «Вы уже угадали эту букву. Угадайте еще одну:».encode() ) продолжать догадавшиеся_буквы.add(догадайтесь) если угадать по фразе: деньги += spin_result client_socket.send("\n" "Хорошая догадка!\n".encode()) еще: client_socket.send("\n" "Неверное предположение!\n".encode()) элиф догадалась == фраза: деньги += spin_result client_socket.send( f"Поздравляем! Вы угадали фразу: '{phrase}' и выиграли ${money}!\n".encode() ) перерыв еще: client_socket.send("Неверный ввод. Попробуйте покрутить еще раз.\n".encode()) действие elif == "угадай": client_socket.send("\n" "Введите свое предположение для всей фразы:".encode()) догадайтесь = client_socket.recv(1024).decode().strip().upper() если догадаться == фраза: client_socket.send( f"Поздравляем! Вы угадали фразу: '{phrase}' и выиграли ${money}!\n".encode() ) перерыв еще: client_socket.send("Неверное предположение. Продолжайте играть!\n".encode()) действие elif == "выйти": client_socket.send(f"Спасибо за игру! Вы заработали ${money}.\n".encode()) перерыв current_display = display_phrase(фраза, угаданные_буквы) client_socket.send(f"Текущая фраза: {current_display}\n".encode()) пока правда: print("Ожидание соединения...") client_socket, client_address = server_socket.accept() client_thread = threading.Thread(target=handle_client, args=(client_socket,)) client_thread.start() Код клиента:

импортировать сокет SERVER_IP = "127.0.0.1" СЕРВЕР_ПОРТ = 61371 client_socket = сокет.сокет(сокет.AF_INET, сокет.SOCK_STREAM) пытаться: client_socket.connect((SERVER_IP, SERVER_PORT)) пока правда: server_message = client_socket.recv(1024).decode() печать (server_message) если «Выберите действие:» в server_message: действие = ввод().strip().lower() client_socket.send(action.encode()) Элиф ( «Угадай букву» в server_message или «Введите свое предположение для всей фразы:» в server_message ): догадайтесь = input().strip().upper() client_socket.send(guess.encode()) Элиф ( «Поздравляю!» в server_message или «Спасибо за игру!» в server_message ): перерыв кроме ConnectionRefusedError: print("Не удалось подключиться к серверу. Убедитесь, что сервер работает.") окончательно: client_socket.close() Требования:

Игра должна поддерживать несколько клиентов. Игроки должны ходить по очереди. [Добавьте любые дополнительные требования или вопросы, которые у вас есть] Такой структурированный формат сделает ваше сообщение более читабельным и поможет другим пользователям лучше понять вашу проблему. Обязательно укажите любые конкретные проблемы, с которыми вы столкнулись, или сообщения об ошибках, с которыми вы столкнулись, и сообщество с большей вероятностью предоставит полезные ответы.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»