Advertisement
Guest User

Untitled

a guest
May 6th, 2016
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.17 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.List;
  3. import java.util.Random;
  4.  
  5. public class Map {
  6.     private static Random random;
  7.  
  8.     private int[][] map;
  9.     private int height;
  10.     private int width;
  11.  
  12.     static {
  13.         random = new Random();
  14.     }
  15.  
  16.     Map(int height, int width) {
  17.         this.height = height;
  18.         this.width = width;
  19.         this.map = new int[height][width];
  20.     }
  21.  
  22.     public void printMap() {
  23.         for (int i = 0; i < height; i++) {
  24.             for (int j = 0; j < width; j++) {
  25.                 //System.out.printf("%d\t", map[i][j]);
  26.                 if (map[i][j] == -1)
  27.                     System.out.print(" " + map[i][j]);
  28.                 else
  29.                     System.out.print("  " + map[i][j]);
  30.             }
  31.             System.out.println();
  32.         }
  33.     }
  34.  
  35.     public void randMap() {
  36.         for (int i = 0; i < height; i++) {
  37.             for (int j = 0; j < width; j++) {
  38.                 if (random.nextInt(6) == 0)
  39.                     map[i][j] = -1;
  40.                 else
  41.                     map[i][j] = 0;
  42.             }
  43.         }
  44.     }
  45.  
  46.     public void findPath(int x1, int y1, int x2, int y2) {
  47.         map[x2][y2] = 0;
  48.         int key = 1;
  49.         map[x1][y1] = 1;
  50.         boolean find;
  51.         do {
  52.             find = false;
  53.             for (int i = 0; i < height; i++) {
  54.                 for (int j = 0; j < width; j++) {
  55.                     if (map[i][j] == key) {
  56.                         if (i > 0 && map[i - 1][j] == 0) {
  57.                             map[i - 1][j] = key + 1;
  58.                             find = true;
  59.                         }
  60.                         if (j < width - 1 && map[i][j + 1] == 0) {
  61.                             map[i][j + 1] = key + 1;
  62.                             find = true;
  63.                         }
  64.                         if (i < height - 1 && map[i + 1][j] == 0) {
  65.                             map[i + 1][j] = key + 1;
  66.                             find = true;
  67.                         }
  68.                         if (j > 0 && map[i][j - 1] == 0) {
  69.                             map[i][j - 1] = key + 1;
  70.                             find = true;
  71.                         }
  72.                     }
  73.                 }
  74.             }
  75.             key++;
  76.         } while (find);
  77.  
  78.  
  79.         int[][] road = new int[width - 1][height - 1];
  80.         key = map[x2][y2];
  81.         int keyCopy = key;
  82.         for (int i = key; i >= 0; i--) {
  83.             keyCopy--;
  84.             if (x2 != width - 1 && y2 != height - 1) {
  85.                 if (map[x2][y2 - 1] == keyCopy) {
  86.                     y2--;
  87.                     road[x2][y2] = keyCopy;
  88.                 } else {
  89.                     if (map[x2 - 1][y2] == keyCopy) {
  90.                         x2--;
  91.                         road[x2][y2] = keyCopy;
  92.                     } else {
  93.                         if (map[x2][y2 + 1] == keyCopy) {
  94.                             y2--;
  95.                             road[x2][y2] = keyCopy;
  96.                         } else {
  97.                             if (map[x2 + 1][y2] == keyCopy) {
  98.                                 x2++;
  99.                                 road[x2][y2] = keyCopy;
  100.                             }
  101.                         }
  102.                     }
  103.                 }
  104.             }
  105.             if (x2 == width - 1 && y2 != height - 1) {
  106.                 if (map[x2][y2 - 1] == keyCopy) {
  107.                     y2--;
  108.                     road[x2][y2] = keyCopy;
  109.                 } else {
  110.                     if (map[x2 - 1][y2] == keyCopy) {
  111.                         x2--;
  112.                         road[x2][y2] = keyCopy;
  113.                     } else {
  114.                         if (map[x2][y2 + 1] == keyCopy) {
  115.                             y2++;
  116.                             road[x2][y2] = keyCopy;
  117.                         }
  118.                     }
  119.                 }
  120.             }
  121.             if (x2 != width - 1 && y2 == height - 1) {
  122.                 if (map[x2 + 1][y2] == keyCopy) {
  123.                     x2++;
  124.                     road[x2][y2] = keyCopy;
  125.                 } else {
  126.                     if (map[x2][y2 - 1] == keyCopy) {
  127.                         y2--;
  128.                         road[x2][y2] = keyCopy;
  129.                     } else {
  130.                         if (map[x2 - 1][y2] == keyCopy) {
  131.                             x2--;
  132.                             road[x2][y2] = keyCopy;
  133.                         }
  134.                     }
  135.                 }
  136.             }
  137.             if (x2 == width - 1 && y2 == height - 1) {
  138.                 if (map[x2][y2 - 1] == keyCopy) {
  139.                     y2--;
  140.                     road[x2][y2] = keyCopy;
  141.                 } else {
  142.                     if (map[x2 - 1][y2] == keyCopy) {
  143.                         x2--;
  144.                         road[x2][y2] = keyCopy;
  145.                     }
  146.                 }
  147.             }
  148.         }
  149.  
  150.         for (int i = 0; i < width; i++)
  151.             for (int j = 0; j < height; j++)
  152.                 if (map[i][j] != -1) map[i][j] = 0;
  153.  
  154.         for (int i = 0; i < width; i++) {
  155.             for (int j = 0; j < height; j++){
  156.                 if (map[i][j] != -1)
  157.                     map[i][j] = road[i][j];
  158.             }
  159.         }
  160.  
  161.     }
  162. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement