Танчики

Скачать

.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

 

или вот так: