Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Волновой поиск на Java


Автор: WhiteFang 27.4.2008, 17:04
Вот пишем с другом "танчики" - курсовик по информатике.
Мне надо написать алгоритм, чтобы бот искал игрока.
Помнится на JS писал сапёра и там для поиска пустоты использовал одну функцию. Решил переделать её под Java и вот что получилось.
Код

import java.awt.*;         /***********************************/
import java.awt.event.*;   // подключаю модули, или как их там//
import javax.swing.*;      /***********************************/

public class Wave {
  int field[30][30]; //  исходный массив
  int field2[30][30]; // массив для поиска пути
  int bx, by, ex, ey;       // координаты начала и конца пути
  int counter = 0;
  int Stolbik = 0; // y
  int Colonka = 0; // x
  for (int i = 0; i < field.length; i++) {
    for (int j = 0; j < field2.length; j++) {
      field2 [i][j] = 0;
    }
  }
  public void FindWay(Colonka, Stolbik) {    
    for (var Colonka = x1 - 1; Colonka  <= x1 + 1; Colonka++) {
      for (var Stolbik = y1 - 1; Stolbik <= y1 + 1; Stolbik++) {
        if ((Colonka >= 0) && (Colonka < field2.length) && (Stolbik >= 0) && (Stolbik < field2.length) 
            && (field2[Colonka][Stolbik] == 0)  && (field[Colonka][Stolbik] == 0)) // у field "0" в данном случае является значением проходимой клетки
        {
            counter++;
            field2[Colonka][Stolbik] = 1;
            FindWay(Colonka, Stolbik);
        }
      }
    }
  }
}


Ну естественно тут есть куча ошибок, т.к. в Java я плох. 
Ну вот вопросы:
Как сделать, чтобы по диагонали не искал, т.к. надо, чтобы бот двигался по горизонтали и вертикали.
Counter в сапёре считал количество открытых клеток, а тут надо найти кратчайший путь. Куда его привинтить?
Положение бота и положение игрока лучше считывать самому из массива, или передавать координаты?
Вообще как найти кратчайший путь? Может есть уже алгоритм в коде где? Поиск результатов не дал.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)