Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

Общая концепция ходилки.

флуд, оффтопик и т.д.
Post Reply
MuDaCk
Apprentice
Apprentice
Posts: 393
Joined: 10.10.2006 0:03
Contact:

Общая концепция ходилки.

Post by MuDaCk »

Всем привет. Давно меня тут не было :)

Суть: Помогите с концепцией ходилки для бота. Игра не УО.

Дано: есть точка А(с координатами, например, 10, 25) и точка Б(50, 40). Между ними есть некоторые преграды. Дойти из точки А в точку Б.

Общее решение: Получить все точки(они квадратные и в координатах XY) между пунктами А и Б, проходим ли путь, пробежать по конкретным точкам.

Как получить все точки?
И как проверить проходим ли путь?

Пробежать по конкретным точкам могу и узнать проходима ли конкретная точка, тоже могу.

Допустим у меня есть путь - (1, 3);(2, 4);(3, 5) и в точке (2, 4) у меня преграда. Как мне просчитать снова этот путь, но без этой точке.

Желательно в JAVA стиле или просто натолкните на мысль. :roll:

Разный JAVA код

Code: Select all

public static void go(int a, int b){
	int x = p.getX();
	int y = p.getY();
	for (int i = 0; i<walls.size(); i++){
	
	if(x + a == walls.get(i).getX() && y + b == walls.get(i).getY()){
			canGo = false;
			System.out.println("You shall not pass!");
			break;
			}
		else{
			canGo = true;
		}
	}
	
}

Code: Select all

Map.go(a , b);
	if (Map.isCanGo()){
		super.move(a, b);
		Map.setCanGo(true);
	}

Code: Select all

protected void move(int x, int y) {
		
		if(this.getX()<this.getMaxH()-1 && x >= 0) {
			this.setX(this.getX()+x);
		}
		
		if(this.getX()>0 && x < 0) {
			this.setX(this.getX()+x);
		}
		
		if (this.getY()<this.getMaxV()-1 && y >= 0) {
			this.setY(this.getY()+y);
		}
		
		if (this.getY()>0 && y < 0) {
			this.setY(this.getY()+y);
		}
		
		System.out.println("X = "+ this.getX() + ";Y = "+ this.getY());
	}
Last edited by MuDaCk on 01.12.2014 19:26, edited 1 time in total.
My name is Игорёшка Image
Пишу скрипты за едуImage
nah nah
Developer
Developer
Posts: 414
Joined: 13.07.2011 11:23
Contact:

Re: Общая концепция ходилки.

Post by nah nah »

Code: Select all

https://ru.wikipedia.org/wiki/Алгоритм_поиска_A*
прост в реализации
MuDaCk
Apprentice
Apprentice
Posts: 393
Joined: 10.10.2006 0:03
Contact:

Re: Общая концепция ходилки.

Post by MuDaCk »

Спасибо. Покопаюсь.
My name is Игорёшка Image
Пишу скрипты за едуImage
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Общая концепция ходилки.

Post by Vizit0r »

и в точке (2, 4) у меня преграда. Как мне просчитать снова этот путь, но без этой точке.
точка помечается как безусловно непроходимой и поиск пути соответственно ищет обходной маршрут.
Как получить все точки?
И как проверить проходим ли путь?
1)откуда я знаю, как в твоем случае (игре, программе или в чем там) получаются точки?
2) В алгоритме А* получать нужную, проверяемую в текущий момент точку и так до тех пор, пока не будет найден маршрут.
Если точки читаются из файла(ов) и точек МНОГО - обязательно делать кеш в памяти + использовать MMF.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
MuDaCk
Apprentice
Apprentice
Posts: 393
Joined: 10.10.2006 0:03
Contact:

Re: Общая концепция ходилки.

Post by MuDaCk »

A star подошёл:). Спасибо)

MMF вообще интересная штука. Надо будет попробовать)
My name is Игорёшка Image
Пишу скрипты за едуImage
Post Reply