Added Image Cell for Map

This commit is contained in:
iryupnik 2020-03-05 11:30:02 +02:00
parent 077c8dfb90
commit 4a5e5501e5
4 changed files with 70 additions and 64 deletions

View File

@ -19,7 +19,7 @@ public class Block extends Cell {
public void paint(Graphics2D g) { public void paint(Graphics2D g) {
super.paint(g); super.paint(g);
g.fillOval(getX() * WindowOfFreeMove.CELL_SIZE, getY() * WindowOfFreeMove.CELL_SIZE, WindowOfFreeMove.CELL_SIZE, WindowOfFreeMove.CELL_SIZE); 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); getY() * WindowOfFreeMove.CELL_SIZE, WindowOfFreeMove.CELL_SIZE, WindowOfFreeMove.CELL_SIZE, null);
} }
} }

View File

@ -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;
}
}

View File

@ -15,6 +15,7 @@ public class Map {
private LinkedList<Block> block; private LinkedList<Block> block;
private boolean isBlocked; private boolean isBlocked;
private int idExit; private int idExit;
private ImageCell imageCell;
Map(int height, int width) { Map(int height, int width) {
name = "Spawn"; name = "Spawn";
@ -185,66 +186,5 @@ public class Map {
} }
public ImageCell getImageCell() { return imageCell; }
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;
}
} }

View File

@ -159,7 +159,7 @@ public class WindowOfFreeMove extends JFrame {
m4.addMoveToEvent(new EventMoveToCell(4, 1, 8, 8, m1)); m4.addMoveToEvent(new EventMoveToCell(4, 1, 8, 8, m1));
m4.addMoveToEvent(new EventMoveToCell(3, 3, 8, 1, m3)); m4.addMoveToEvent(new EventMoveToCell(3, 3, 8, 1, m3));
m1.readMapFile("map-test"); m1.getImageCell().readMapFile("map-test");
setMap(m1); setMap(m1);
map.createMap(); map.createMap();