Как реализовать сеть для игры в терминале? Есть два игрока. Действие каждого игрока ограничено одной командой в терминале. То есть — пока игрок1 вводит команду, игроку2 блокируется клавиатура и ввод команд. После каждого нажатия Enter отправляются данные другому игроку и так игроки обмениваются данными, но как это сделать? Например, мне нужно чтобы в терминал игроки вводили хост и порт(то есть игра по договорённости), и таким образом подключались к друг другу.
Всё это нужно реализовать для игры крестики-нолики, которая полностью готовая, но только с режимом "на одной клавиатуре". Всё работает в терминале, без гуя, только символами и командами. Написано, как уже понятно, на Python.
Для того чтобы разобраться я прочитал данную статью https://www.ibm.com/developerworks/ru/library/l-py... , но понял не совсем много. Я не знаю как реализовать проверку и подключение игроков, так же, какие данные нужно отправлять игрокам друг другу. В данном случае данные — один единственный файл(модуль) — картинка из символов, с переменными, куда и записываются данные.
UPD. Как я это всё вижу:
— два адреса подключаются к одному порту
— одному из них накладывается метод, который блокирует клавиатуру
— игрок1, у которого не заблокирована клавиатура, вводит команду и отправляет все файлы игроку2
— игроку1 накладывается метод, который блокирует клавиатуру
— игрок2 получает все нужные файлы игры и ему даётся возможность вводить команды
— ...
— *после победы одной из сторон, игра замораживается, всем игрокам даётся возможность вводить команды
*Заморозка игры уже реализована. Ввод определенных команд после победы тоже есть.
То есть в чём суть — игрок после команды просто передаёт все свои файлы другому игроку и у него блокируется клавиатура и так по кругу. Как это реализовать, я не знаю.

21 Авг 2019 в 06:41
1 059 +1
0
Ответы
1

Для реализации сетевой игры в терминале с двумя игроками, вам понадобится использовать сетевое взаимодействие с помощью сокетов в Python.

Вам нужно будет создать сервер, который будет принимать подключения от двух игроков, и клиенты, которые будут подключаться к серверу. Каждому игроку будет назначен свой номер (например, игрок 1 и игрок 2).

После подключения обоих игроков к серверу, они смогут обмениваться данными, в вашем случае файлом с игровым полем. Каждый игрок будет отправлять свои ходы (например, координаты для крестиков-ноликов) на сервер, который будет передавать их другому игроку.

Примерно так будет выглядеть структура вашего кода:

Создание сервера, который будет принимать подключения от игроков.Создание клиентов, которые будут подключаться к серверу.Отправка данных (например, координаты хода) от клиента на сервер.Передача данных от сервера одному клиенту другому.

Вы можете использовать стандартный модуль socket в Python для создания сервера и клиентов. Вам также может понадобиться использовать потоки (threads) для обработки ввода и вывода данных от игроков.

Вот примерный код для создания сервера:

import socket
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('localhost', 12345))
server.listen(2)
player1, address1 = server.accept()
player2, address2 = server.accept()
while True:
data = player1.recv(1024)
player2.send(data)
data = player2.recv(1024)
player1.send(data)

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

Надеюсь, это поможет вам начать реализацию вашей сетевой игры в терминале. Удачи!

20 Апр 2024 в 13:14
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир