Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Wall {
- public void createWalls(Map map) {
- char[][] v = new char [map.getY()][map.getX()];
- boolean b = false;
- String s = "";
- int step = 0;
- int p;
- int r = 0;
- int x = 0;
- int y = 0;
- // in map Klasse
- v[y][x] = 'X';
- map.setArray(' ', x, y);
- //ab hier müsste das in einen rekursiven befehl
- if(v[y+1][x] == 0 || v[y-1][x] == 0 || v[y][x+1] == 0 || v[y][x-1] == 0) { //Nachbarn überprüfen
- while(!b) {
- r = (int) Math.random() * 3; // rand. zu einem möglcihen Nachbarn bewegen
- switch (r) {
- case 0:
- if (v[y+1][x] == 0) {
- y++;
- b = true;
- break;
- }
- case 1:
- if (v[y-1][x] == 0) {
- y--;
- b = true;
- break;
- }
- case 2:
- if (v[y][x+1] == 0) {
- x++;
- b = true;
- break;
- }
- case 3:
- if (v[y][x-1] == 0) {
- y--;
- b = true;
- break;
- }
- }
- }
- s += r; // gegangenen Schritt in einem String speichern, um zurückgehen zu können
- step = s.length(); // aktuellen Schritt als den letzten gegangenen Schritt setzen
- v[y][x] = 'V'; // Feld als angeguckt makieren
- map.setArray(' ', x, y); // In der tatsächlichen Map einen Weg frei machen.
- //Dead End (wenn keine Nachbarn frei sind)
- } else {
- step--; // aktuellen Schritt um einen zurücksetzen
- v[y][x] = 'X'; // aktuelles Feld als DeadEnd makieren
- p = Integer.parseInt(s.substring(step, step+1)); // switchcase um einen Schritt zurückzugehen (einfach switchcase von oben invers)
- s += p;
- switch (p) {
- case 0:
- y--;
- break;
- case 1:
- y++;
- break;
- case 2:
- x--;
- break;
- case 3:
- x++;
- break;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement