Added Image Cell for Map
This commit is contained in:
parent
077c8dfb90
commit
4a5e5501e5
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
66
src/main/java/ImageCell.java
Normal file
66
src/main/java/ImageCell.java
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user