Всем доброе время суток. Никак не получается написать скрипт в блюпринте, чтоб один бот реагировал на другого. В гугле есть куча примеров как сделать чтоб бот реагировал на игрока, но вот чтоб на такогоже бота... Как ето можно сделать спомощю Блекбор?
Всем доброго времени суток. По немногу учу с++, пишу свою игру на OpenGL(стратегия). И вот попал в затруднение. Суть проблемы такова, есть клас салдата
class R_ant: public Ant { public: int direction; int size; bool turn; bool Invent; R_ant();/*{ turn = false; size = 1; int direction ; }*/ void move(int i); void cut(); void DrawAnt(int i); void search(int j); //friend void search(); //void eat();
};
нужно написать функцию которая принимает масив обектов R_ant и масив обектов класа B_ant; а лучше указатель на обекти. Ну собственно есть похожая функия она ищет пищу всьо работает прекрасно.
А вот как написать глобальную функцию которая будет принимать обекти R_ant и B_ant. тоесть я хочу чтоб ета функция search могла принимать указатель как на R_ant так и на B_ant. чтото типа такого void search(R_ant* r_ant, B_ant* b_ant) или такую функцию нужно писать для каждого класса?
Доброе время суток. Мой русский очень плохой поетому на ошибки не обращайте внимания. Я только начал изучать с++ и столкнулся с проблемой. Пишу игру, и на даном етапе хочу реализовать ИИ бота по волновому алгоритму Лии, ну и собственно у меня ето не получается. Постараюсь максимально всьо розписать чтоб читателю стало понятно что я хочу. Дано екземпляр класа block игрового поля в виде масива grid[HEIGHT][WIDTH] #define WIDTH 80 #define HEIGHT 45 мне нужно от екземпляра класа piton проложить путь к targ. a вот собственно функция которая не работает
int AI::search() {
float targ; float delta; int deltaX; int deltaY; int n=15;
int i; for (i=0;i<10;++i){ //вичисление координат самай ближней точки m[i] deltaX=piton[0].x-m[i].x; deltaY=piton[0].y-m[i].y; delta=((deltaX*deltaX)+(deltaY*deltaY)); targ = sqrt(delta);
const int WALL = -1; // непроходимая ячейка const int BLANK = -2; // свободная непомеченная ячейка int ax,ay,bx,by;
int px[WIDTH * HEIGHT], py[WIDTH * HEIGHT]; // координаты ячеек, входящих в путь int len; // длина пути //int grid[HEIGHT][WIDTH]; // рабочее поле
for(int j=0; j<HEIGHT;++j) // питаюсь заполнить массив grid значениями WALL и BLANK { for (int n=0;n<WIDTH;++n) { if(grid[j][n]==block[piton[j].x] && block[piton[j].y])//piton ето ещьо один екземпляр класа block { grid [j][n]=grid[WALL][WALL]; } else grid[j][n]=grid[BLANK][BLANK]; } }
// Перед вызовом lee() массив grid заполнен значениями WALL и BLANK
bool lee(ax,ay,bx,by); // поиск пути из ячейки (ax, ay) в ячейку (bx, by) { int dx[4] = {1, 0, -1, 0}; // смещения, соответствующие соседям ячейки int dy[4] = {0, 1, 0, -1}; // справа, снизу, слева и сверху int d, x, y, k; bool stop;
// распространение волны d = 0; grid[ay][ax] = 0; // стартовая ячейка помечена 0 do { stop = true; // предполагаем, что все свободные клетки уже помечены for ( y = 0; y < HEIGHT; ++y ) for ( x = 0; x < WIDTH; ++x ) if ( grid[y][x] == d ) // ячейка (x, y) помечена числом d { for ( k = 0; k < 4; ++k ) // проходим по всем непомеченным соседям if ( grid[y + dy[k]][x + dx[k]] == BLANK ) { stop = false; // найдены непомеченные клетки grid[y + dy[k]][x + dx[k]] = d + 1; // распространяем волну } } d++; } while ( !stop && grid[by][bx] == BLANK );
if (grid[by][bx] == BLANK) return false; // путь не найден
// восстановление пути len = grid[by][bx]; // длина кратчайшего пути из (ax, ay) в (bx, by) x = bx; y = by; d = len; while ( d > 0 ) { px[d] = x; py[d] = y; // записываем ячейку (x, y) в путь d--; for (k = 0; k < 4; ++k) if (grid[y + dy[k]][x + dx[k]] == d) { x = x + dx[k]; y = y + dy[k]; // переходим в ячейку, которая на 1 ближе к старту break; } } px[0] = ax; py[0] = ay; // теперь px[0..len] и py[0..len] - координаты ячеек пути return true; } } }
Хочу ещьо раз подметить что с++ я начал учить 4 месяца назад, и много чего самому непонятно поетому не смейтесь если чтото не так сказал. Ну и спс за помощьо.
Друзья! Вот я смоделировал человечка, дал ему скелет сделал анимацыю хотьбы, а что дальше? Как мне его заставить чтоб он начал передвигатся с етой анимацыей, как мне например создать ещьо одну анимацыю и применить ейо на другое действие? Вобще ненашол уроков по етой теме. п\с сори за мой русский я его неучил никогда.
Сообщение отредактировал Bipyc - Суббота, 24 Ноября 2012, 09:27