Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public Queue<Integer> tutki() {
- Point virtuaalisijainti;
- Queue<Integer> edellinen = new LinkedList<Integer>();
- Queue<Integer> nykyinen;
- Boolean loytyiUusi = false;
- int viimeisinSuunta;
- List<Integer> suunnat;
- List<Integer> uudet;
- for(int i = 0; i < 50; i++) {
- loytyiUusi = false;
- nykyinen = new LinkedList<Integer>();
- viimeisinSuunta = -1;
- suunnat = new ArrayList<Integer>();
- uudet = new ArrayList<Integer>();
- virtuaalisijainti = new Point(this.x, this.y);
- while(!loytyiUusi) {
- //System.out.println(virtuaalisijainti);
- uudet.clear();
- suunnat.clear();
- for (int u = 0; u < 4; u++) {
- if (this.koordinaatisto.get(virtuaalisijainti)[u] == true && !onKaynyt(annaNaapuri((int)virtuaalisijainti.getX(), (int)virtuaalisijainti.getY(), u))) {
- uudet.add(u);
- } else if (this.koordinaatisto.get(virtuaalisijainti)[u] == true && u != vastakkainenSuunta(viimeisinSuunta)) {
- suunnat.add(u);
- }
- }
- if (uudet.size() == 0) {
- if (suunnat.size() == 0) {
- break;
- } else {
- viimeisinSuunta = suunnat.get(random.nextInt(suunnat.size()));
- nykyinen.offer(viimeisinSuunta);
- switch(viimeisinSuunta) {
- case 0: virtuaalisijainti.translate(0, 1); break;
- case 1: virtuaalisijainti.translate(1, 0); break;
- case 2: virtuaalisijainti.translate(0, -1); break;
- case 3: virtuaalisijainti.translate(-1, 0); break;
- }
- }
- } else {
- viimeisinSuunta = uudet.get(random.nextInt(uudet.size()));
- nykyinen.offer(viimeisinSuunta);
- loytyiUusi = true;
- if (edellinen.size() > nykyinen.size() && nykyinen.size() != 0) {
- edellinen.clear();
- edellinen.addAll(nykyinen);
- } else if (edellinen.size() == 0) {
- edellinen.clear();
- edellinen.addAll(nykyinen);
- }
- }
- }
- }
- return edellinen;
- }
Add Comment
Please, Sign In to add comment