Четверг, 25 Апреля 2024, 06:55

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Записи участника » Lost_Ghost [1]
Результаты поиска
Lost_GhostДата: Пятница, 22 Апреля 2016, 21:39 | Сообщение # 1 | Тема: [2D]AI War- игра для программистов[RTS]
уже был
Сейчас нет на сайте
AI War-игра для программистов.
Пиши AI для одной из 4-х команд и сражайся с программами других игроков!
Небольшая предыстория:
Большинство любителей RTS когда-нибудь обязательно сталкивалось с ситуацией, когда AI разработчиков игры оказывается настолько сильным, что человек просто не в состоянии уследить за всеми его действиями и отреагировать на них. У него просто не хватает рук и глаз, чтобы успеть за компьютером! У меня тоже такое было, но, к счастью, я программист и у меня родилась отличная идея о написанию игры для программистов. Но ответ на вопрос, как её реализовать, пришёл ко мне не сразу. Я долго искал игры подобного рода и нашёл одну- AutoWar. Это был очень перспективный проект, но очень старый(но качество его реализации это компенсирует) и единственный его исходник, который можно было найти был под DOS. Но меня привлекла сама идея, и ,после 2-х месяцев стараний я сделал игру AI War.
Кстати, похоже, версия Autowar для windows осталась только у меня...
Описание игры:
Игра написана на Pascal, чтобы быть доступной для максимально широкой аудитории. Компилятор- PascalABC.NET(с ним вы и должны работать). Итак, вот что вы увидите, запустив игру: экран поделен на 16 клеток. Камера изначально установлена в верхнем левом углу экрана(координаты камеры в том же углу). Синий квадратик- это база команды 1, цвет означает принадлежность к команде, сверху слева- 1-я, сверху справа- 2-я, снизу справа- 3-я, снизу слева- 4-я.
В игре есть всего 2 типа юнитов- сами юниты и здания. Отличие у них лишь в том, что юниты могут двигаться, а здания зарабатывать деньги, и наоборот. Юниты могут строить здания, а здания- юнитов(но не наоборот). Игровое поле 200*200 состоит из клеток. В каждой из клеток 200 очков пространства. 1 юнит занимает 5 очков, здание-10.
Здесь будут описаны только те переменные и функции, к которым вы имеете(должны) иметь доступ(R-читать,W-писать).
$Variables$
tm: integer; //R эта переменная показывает, какой номер у вашей команды (проще- в каком углу у вас база). Диапазон значений 1..4
mwact,mwhp,mwdef1,mwdam1,mwranges,mwrangef,mwx,mwy,mwparam1,mwparam2: array[1..250] of integer;//R показывает информацию о всех ваших юнитах
//Соответственно, тип действия(чё делать),жизни,защита(%),атака,дальность зрения,огня,координаты:х и у,параметры действия: 1-й и 2-й.
mwparam1,mwparam2: array[1..250] of integer;//RW То же самое, только RW
mbact,mbhp,mbdef1,mbdam1,mbranges,mbrangef,mbx,mb,,mbparam1,mbparam2,mbres: array[1..150] of integer;//R и о зданиях
//Соответственно, тип действия(чё делать),жизни,защита(%),атака,дальность зрения,огня,координаты:х и у,параметры действия: 1-й и 2-й,сколько $$$ //зарабатывает за 1 ход.
mbparam1,mbparam2: array[1..250] of integer;//RW То же самое, только RW
mres: integer;//R ваши миллионы($$$$$$$)
warmy: array[1..200] of integer;//R результат выполнения процедуры getunits(описание ниже)
barmy: array[1..200] of integer;//R результат выполнения процедуры getunits(описание ниже)
mwnum,mbnum: integer;//R
space: integer;//R результат выполнения процедуры getfreespace(описание ниже)
a: integer;//R номер текущего хода
errcode: integer//R КОД ПОСЛЕДНЕЙ ОШИБКИ(крайне полезная вещь)
$Procedures & Functions$
procedure ai1;// ИМЕННО СЮДА ВЫ И БУДЕТЕ ПИХАТЬ СВОЙ AI
{
Всего таких процедур 4(ai1,ai2,ai3,ai4), в зависимости от номера игрока. Каждая из них выполняется по 1 разу за ход перед его реализацией,
и перед их выполнением меняются значения всех переменных и массивов с первой буквой названия m и переменная tm.
Что вы можете, как это делать, wtf всё это прочитайте ниже.
}
procedure create(gt,x,y:integer);// Используется для того, чтобы кого-нибудь нанять, или что-нибудь построить
{
Параметры x и y- место, где вы хотите что-нибудь создать(там обязательно должно что-то быть(для зданий-юнит, для юнитов-здание))
gt-что вы хотите сделать(1-здание;2-юнита)
Разумеется, это стоит денег: дом-200, юнит-100.
Также в той ячейке должно быть >=10 места для здания и >=5 места для юнита, и не должно быть превышено ограничение по количеству юнитов(250) и зданий(150).
}
getfreespace(x,y:integer)//Сколько места есть в клетке
{
Для использования этой функции вам нужно хотя бы видеть клетку, которую передаёте в качестве параметра.
Результат выполнения в переменной space//R
}
function cansee(x,y:integer):boolean;
{
Возвращает true если клетку видно(для вас).
}
procedure setaction(gt,n,t,param1,param2: integer);//Задать для юнита/здания действие(выполнится на текущем ходу)
{
gt- 1=здание, 2=юнит.
n- номер юнита(1..250)/здания(1..150)
t- 1=атака, 2=движение(только для юнитов), 3=улучшение.
param1 -1й параметр.
param2 -2й параметр.
}
Вот пример AI(мой)
Что я вставил в программу:
Код

var
pbol: array[1..30] of boolean;
//...
procedure ai1;
begin
if pbol[1]=false then
begin
create(2,1,1);
setaction(2,1,2,1,0);
pbol[1]:=true;
end;
if a>2 then if mwx[1]<200 then if mres>200 then
begin
setaction(2,1,2,1,0);
setaction(1,mbnum,3,2,20);
create(1,mwx[1],mwy[1]);
end;
textout(1,30,'ERRCODE:'+inttostr(errcode));
textout(1,50,'$$$'+mres);
sleep(1000);
end;


Что я должен выставить на битву:
Код

var
pbol: array[1..30] of boolean;
//...
procedure ai1;
begin
if pbol[1]=false then
begin
create(2,1,1);
setaction(2,1,2,1,0);
pbol[1]:=true;
end;
if a>2 then if mwx[1]<200 then if mres>200 then
begin
setaction(2,1,2,1,0);
setaction(1,mbnum,3,2,20);
create(1,mwx[1],mwy[1]);
end;
end;

Что (я) кто-то другой должен выслать мне(зачем-читайте ниже):
Код

//GLOBAL
pbol: array[1..30] of boolean
//1 team only
if pbol[1]=false then
begin
create(2,1,1);
setaction(2,1,2,1,0);
pbol[1]:=true;
end;
if a>2 then if mwx[1]<200 then if mres>200 then
begin
setaction(2,1,2,1,0);
setaction(1,mbnum,3,2,20);
create(1,mwx[1],mwy[1]);
end;

//1 team only- потому, что мой код только для первой команды.
//GLOBAL- глобальные переменные
ЗАЧЕМ ВЫСЫЛАТЬ:
Во-первых, версия, доступная для скачивания не имеет защиты от читерства, игрок может узнать то, чего знать не должен(или сделать), а я гарантирую защиту.
Во-вторых, если вы не хотите, чтобы противник(или 3-е лицо, устраивающее битву) раскрыл все секреты вашего AI.
Оф. сайт игры: http://catcut.net/ccL0 (там капча, не пугайтесь)
Скачать игру можете оттуда.
Проект находится в разработке потому, что мне нужны отзывы и предложения.(и люди в команду).


NOTHING
Форум игроделов » Записи участника » Lost_Ghost [1]
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг