Advertisement
Guest User

Janekstinkt

a guest
Jan 17th, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.74 KB | None | 0 0
  1. public class Wall {
  2.  
  3. public void createWalls(Map map) {
  4. char[][] v = new char [map.getY()][map.getX()];
  5. boolean b = false;
  6. String s = "";
  7. int step = 0;
  8. int p;
  9. int r = 0;
  10. int x = 0;
  11. int y = 0;
  12. // in map Klasse
  13. v[y][x] = 'X';
  14. map.setArray(' ', x, y);
  15.  
  16. //ab hier müsste das in einen rekursiven befehl
  17.  
  18.  
  19. if(v[y+1][x] == 0 || v[y-1][x] == 0 || v[y][x+1] == 0 || v[y][x-1] == 0) { //Nachbarn überprüfen
  20. while(!b) {
  21. r = (int) Math.random() * 3; // rand. zu einem möglcihen Nachbarn bewegen
  22. switch (r) {
  23. case 0:
  24. if (v[y+1][x] == 0) {
  25. y++;
  26. b = true;
  27. break;
  28. }
  29. case 1:
  30. if (v[y-1][x] == 0) {
  31. y--;
  32. b = true;
  33. break;
  34. }
  35. case 2:
  36. if (v[y][x+1] == 0) {
  37. x++;
  38. b = true;
  39. break;
  40. }
  41. case 3:
  42. if (v[y][x-1] == 0) {
  43. y--;
  44. b = true;
  45. break;
  46. }
  47. }
  48.  
  49. }
  50. s += r; // gegangenen Schritt in einem String speichern, um zurückgehen zu können
  51. step = s.length(); // aktuellen Schritt als den letzten gegangenen Schritt setzen
  52. v[y][x] = 'V'; // Feld als angeguckt makieren
  53. map.setArray(' ', x, y); // In der tatsächlichen Map einen Weg frei machen.
  54.  
  55. //Dead End (wenn keine Nachbarn frei sind)
  56.  
  57. } else {
  58. step--; // aktuellen Schritt um einen zurücksetzen
  59. v[y][x] = 'X'; // aktuelles Feld als DeadEnd makieren
  60. p = Integer.parseInt(s.substring(step, step+1)); // switchcase um einen Schritt zurückzugehen (einfach switchcase von oben invers)
  61. s += p;
  62. switch (p) {
  63. case 0:
  64. y--;
  65. break;
  66. case 1:
  67. y++;
  68. break;
  69. case 2:
  70. x--;
  71. break;
  72. case 3:
  73. x++;
  74. break;
  75. }
  76. }
  77. }
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement