Танчики
.zip | Пример для одного игрока |
.zip | Игра сама по себе, исходники и бинарники |
Что это за проект такой: Что означает соревнование программ:
|
Взаимодействие с сервером
Как это дело запустить
-------------------------------------------
Взаимодействие с сервером
Все взаимодействие происходит через стандартный ввод/вывод. Это означает что отправление запросов происходит посредством вывода некоторой текстовой строки в стандартный вывод, а получение результата, производится посредством чтения текстовых строк.
Запрос «двигаться вправо»
Действие: симуляция нажатия кнопки «вправо»
Строка: запроса ”go_right”
Ответ: отсутствует.
Код отправки запроса:
cout<<”go_right”<<endl;
вывод:
go_right
ввод: отсутствует.
Запрос «получить позицию всех танков»
Действие: отсутствует
Строка: запроса ”get tanks”
Ответ: Состоит из нескольких строк. Первая строка - количество танков, каждая следующая строка содержит параметры одного танка. Формат строки параметров танка: «x y direction team».
x y – Координаты в пикселях.
direction – буква соответствующая направлению танка u-вверх d-вниз l-вдево r-вправо.
team – число означающее номер команды.
Код отправки запроса:
cout<<”get tanks”<<endl;
код принятия результата:
int count=0;// для избежания неопределённого
//ззначения в случае ошибки ввода.
cin>>count;// прочитать количество танков
for(int i=0; i<count; i++ )
{
int x;
int y;
char direction;
int team;
cin>>x>>y>>direction>>team;// чтение параметров i- того танка
cin.ignore(cin. numeric_limits<streamsize>::max(),'\n');// игнорирование
// остатка строки, на случай если
// параметров окажется больше чем ожидалось.
// Это может произойти в случае изменения
// протокола.
}
вывод:
get tanks
ввод:
2
325 0 u 0
430 285 d 1
Это означает: Всего два танка, координаты первого 325,0 повернут вверх, принадлежит к команде 0. Координаты второго 430,285, повернут вниз, принадлежит к коменде 1.
-------------------------------------------
Как это дело запустить
Можно так:
Консольный запуск:
Запускать из текущей директории:
создать сервер:
Client.exe -runserv "Tanks.exe" -ext console -control_dir Debug
присоединится:
Client.exe -ip 127.0.0.1 -port 666 -runserv "" -ext console -control_dir Debug
или вот так: