diff --git a/src/main/java/Block.java b/src/main/java/Block.java index dd167ce..c593b69 100644 --- a/src/main/java/Block.java +++ b/src/main/java/Block.java @@ -19,7 +19,7 @@ public class Block extends Cell { public void paint(Graphics2D g) { super.paint(g); g.fillOval(getX() * WindowOfFreeMove.CELL_SIZE, getY() * WindowOfFreeMove.CELL_SIZE, WindowOfFreeMove.CELL_SIZE, WindowOfFreeMove.CELL_SIZE); - g.drawImage(WindowOfFreeMove.getMap().getImagesOfTiles()[102], getX() * WindowOfFreeMove.CELL_SIZE, + g.drawImage(WindowOfFreeMove.getMap().getImageCell().getImagesOfTiles()[102], getX() * WindowOfFreeMove.CELL_SIZE, getY() * WindowOfFreeMove.CELL_SIZE, WindowOfFreeMove.CELL_SIZE, WindowOfFreeMove.CELL_SIZE, null); } } \ No newline at end of file diff --git a/src/main/java/ImageCell.java b/src/main/java/ImageCell.java new file mode 100644 index 0000000..f09584a --- /dev/null +++ b/src/main/java/ImageCell.java @@ -0,0 +1,66 @@ +import javax.imageio.ImageIO; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.Scanner; + +public class ImageCell { + private static BufferedImage image; + private static BufferedImage[] imagesOfTiles; + + + public void readMapFile(String name) { + try { + File mapFile = new File("src/main/resources/" + name + ".txt"); + Scanner scanner = new Scanner(mapFile); + String firstLine = scanner.nextLine(); + String[] mapInfo = firstLine.split(" "); + ImageTileset(mapInfo); + } catch (FileNotFoundException e) { + System.out.println("An error occurred."); + e.printStackTrace(); + } + } + + private void ImageTileset(String[] mapInfo) { + try { + image = ImageIO.read(getClass().getResource(mapInfo[0])); + } catch (IOException e) { + e.printStackTrace(); + } + + int width = Integer.parseInt(mapInfo[1]); + int height = Integer.parseInt(mapInfo[2]); + int tileSize = Integer.parseInt(mapInfo[3]); + + int Xtiles = width / tileSize; + int Ytiles = height / tileSize; + int tiles = Xtiles * Ytiles; + + imagesOfTiles = new BufferedImage[tiles]; + + Rectangle[] rectangles = new Rectangle[tiles]; + int count = 0; + for (int i = 0; i < rectangles.length/Ytiles; i++){ + for (int j = 0; j < rectangles.length/Xtiles; j++) { + rectangles[count] = new Rectangle(tileSize * i, tileSize * j, tileSize, tileSize); + count++; + } + } + + for (int i = 0; i < imagesOfTiles.length; i++) { + imagesOfTiles[i] = image.getSubimage(rectangles[i].x, rectangles[i].y, rectangles[i].height, rectangles[i].width); + } + +// while (scanner.hasNextLine()) { +// String data = scanner.nextLine(); +// System.out.println(imagesOfTiles[Integer.parseInt(data)]); +// } + } + + public BufferedImage[] getImagesOfTiles() { + return imagesOfTiles; + } +} diff --git a/src/main/java/Map.java b/src/main/java/Map.java index 188558e..d5203e5 100644 --- a/src/main/java/Map.java +++ b/src/main/java/Map.java @@ -15,6 +15,7 @@ public class Map { private LinkedList block; private boolean isBlocked; private int idExit; + private ImageCell imageCell; Map(int height, int width) { name = "Spawn"; @@ -185,66 +186,5 @@ public class Map { } - - - private static Scanner scanner; - private static BufferedImage image; - private static BufferedImage[] imagesOfTiles; - - - public void readMapFile(String name) { - try { - File mapFile = new File("src/main/resources/" + name + ".txt"); - scanner = new Scanner(mapFile); - String firstLine = scanner.nextLine(); - String[] mapInfo = firstLine.split(" "); - ImageTileset(mapInfo); - } catch (FileNotFoundException e) { - System.out.println("An error occurred."); - e.printStackTrace(); - } - } - - private void ImageTileset(String[] mapInfo) { - try { - image = ImageIO.read(getClass().getResource(mapInfo[0])); - } catch (IOException e) { - e.printStackTrace(); - } - - int width = Integer.parseInt(mapInfo[1]); - int height = Integer.parseInt(mapInfo[2]); - int tileSize = Integer.parseInt(mapInfo[3]); - - int Xtiles = width / tileSize; - int Ytiles = height / tileSize; - int tiles = Xtiles * Ytiles; - - imagesOfTiles = new BufferedImage[tiles]; - - Rectangle[] rectangles = new Rectangle[tiles]; - int count = 0; - for (int i = 0; i < rectangles.length/Ytiles; i++){ - for (int j = 0; j < rectangles.length/Xtiles; j++) { - rectangles[count] = new Rectangle(tileSize * i, tileSize * j, tileSize, tileSize); - count++; - } - } - - if (rectangles.length < tiles) - throw new IllegalArgumentException(); - - for (int i = 0; i < imagesOfTiles.length; i++) { - imagesOfTiles[i] = image.getSubimage(rectangles[i].x, rectangles[i].y, rectangles[i].height, rectangles[i].width); - } - -// while (scanner.hasNextLine()) { -// String data = scanner.nextLine(); -// System.out.println(imagesOfTiles[Integer.parseInt(data)]); -// } - } - - public BufferedImage[] getImagesOfTiles() { - return imagesOfTiles; - } + public ImageCell getImageCell() { return imageCell; } } diff --git a/src/main/java/WindowOfFreeMove.java b/src/main/java/WindowOfFreeMove.java index 137a63c..0a660c8 100644 --- a/src/main/java/WindowOfFreeMove.java +++ b/src/main/java/WindowOfFreeMove.java @@ -159,7 +159,7 @@ public class WindowOfFreeMove extends JFrame { m4.addMoveToEvent(new EventMoveToCell(4, 1, 8, 8, m1)); m4.addMoveToEvent(new EventMoveToCell(3, 3, 8, 1, m3)); - m1.readMapFile("map-test"); + m1.getImageCell().readMapFile("map-test"); setMap(m1); map.createMap();