diff --git a/src/main/java/Block.java b/src/main/java/Block.java index a6e3e36..dd167ce 100644 --- a/src/main/java/Block.java +++ b/src/main/java/Block.java @@ -19,5 +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, + getY() * WindowOfFreeMove.CELL_SIZE, WindowOfFreeMove.CELL_SIZE, WindowOfFreeMove.CELL_SIZE, null); } } \ No newline at end of file diff --git a/src/main/java/Game.java b/src/main/java/Game.java index 9db5f16..6b8c633 100644 --- a/src/main/java/Game.java +++ b/src/main/java/Game.java @@ -1,5 +1,5 @@ public class Game { public static void main(String[] args) { - new WindowOfFreeMove().start(); } + new WindowOfFreeMove().start();} } diff --git a/src/main/java/Map.java b/src/main/java/Map.java index 699fdf3..088884a 100644 --- a/src/main/java/Map.java +++ b/src/main/java/Map.java @@ -1,4 +1,11 @@ +import javax.imageio.ImageIO; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.FileNotFoundException; +import java.io.IOException; import java.util.LinkedList; +import java.io.File; +import java.util.Scanner; public class Map { private String name; @@ -176,4 +183,70 @@ public class Map { return cell; return moveToCells.getFirst(); } + + + + + 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; + + System.out.println(tiles); + + 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; + } } diff --git a/src/main/java/WindowOfFreeMove.java b/src/main/java/WindowOfFreeMove.java index 1197491..60f3432 100644 --- a/src/main/java/WindowOfFreeMove.java +++ b/src/main/java/WindowOfFreeMove.java @@ -163,6 +163,8 @@ public class WindowOfFreeMove extends JFrame { map.createMap(); isReadyToPaint = true; canvas.repaint(); + + map.readMapFile("map-test"); // // lp.remove(dialogBar); // diff --git a/src/main/resources/A2_Ground.png b/src/main/resources/A2_Ground.png new file mode 100644 index 0000000..92c6cd1 Binary files /dev/null and b/src/main/resources/A2_Ground.png differ diff --git a/src/main/resources/map-test.txt b/src/main/resources/map-test.txt new file mode 100644 index 0000000..e192c44 --- /dev/null +++ b/src/main/resources/map-test.txt @@ -0,0 +1 @@ +A2_Ground.png 512 384 32 \ No newline at end of file