|
||
Ответить |
|
#1
|
|
Вес репутации:
0
Регистрация: 27.02.2009
Адрес: Москва
Сообщений: 7,302
Сказал(а) спасибо: 578
Спасибок 2,623
в 1,832 сообщениях |
Сетевой морской бой на bash -
11.01.2010, 21:27
«морской бой» для игры по сети. Игра получила название «Sink 'em all».
Из внешних программ используются только nc (для организации взаимодействия по TCP), stty (для выключения эха при нажатии клавиши) и clear (для очистки терминала). Исходный код можно посмотреть здесь, а вот скачать его лучше тут или вот тут, потому что PasteBay вставляет переносы строк в стиле Windows, из-за чего в свою очередь перестает работать указание интерпретатора с помощью hashbang (#!). Как поиграть Скачайте исходный код, переименуйте файл в sink.sh и поставьте на него исполняемый бит. После этого игру можно смело запускать (или не смело — вдруг в ней вредоносный код?). Чтобы запустить сервер, используйте ключ -serve: ./sink.sh -serve Чтобы присоединиться к серверу, передайте в качестве параметра его IP-адрес или доменное имя, например: ./sink.sh localhost Дальнейшие подсказки об управлении вы получите в процессе игры. В какое место кода вписывать строки для обмана противника, предлагаю выяснить самостоятельно Что полезного я узнал? В процессе написания я открыл для себя некоторые неизвестные мне ранее возможности и особенности bash. Среди них, например, сопроцессы. С помощью встроенной команды coproc можно создать сопроцесс и общаться с ним через пару пайпов, чем я и воспользовался для общения с nc. Если интересуют подробности, наберите help coproc, или читайте раздел «Coprocesses» в man bash. В bash есть встроенные средства для работы со строками. Необязательно использовать sed и т. п., чтобы заменить подстроку другой строкой, вычислить длину строки и т. д. Это тоже стало для меня полезным открытием. Если интересуют подробности, могу подсказать, как называется соответствующий раздел в man bash: «Parameter Expansion». <!-- Вопросы задаем на форуме, не в ЛС --> |
Ответить |
Опции темы | |
Опции просмотра | |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Инфо Лог системы в реальном времени (bash) | Vector | Статьи и FAQ | 0 | 05.04.2009 03:10 |