erster entwurf der mapengine zum automatischen auswerten einer karte

This commit is contained in:
sykikk
2014-10-31 10:08:44 +01:00
parent 103a1dcbb1
commit b4cce2da94
+94
View File
@@ -0,0 +1,94 @@
package mapEngine;
import java.awt.Color;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Stack;
import javax.swing.JPanel;
import mapEngine2.Objekt;
public class MapEngine {
int[][] tiles;
Stack<Integer> tileID;
Map<Integer, ArrayList<Objekt>> tilesMap;
MapEngine() {
tiles = new int[24][32];
tileID = new Stack<Integer>();
tilesMap = new HashMap<Integer, ArrayList<Objekt>>();
ArrayList<Objekt> typeArrayListOne = new ArrayList<Objekt>();
ArrayList<Objekt> typeArrayListTwo = new ArrayList<Objekt>();
ArrayList<Objekt> typeArrayListThree = new ArrayList<Objekt>();
tilesMap.put(1, typeArrayListOne);
tilesMap.put(2, typeArrayListTwo);
tilesMap.put(3, typeArrayListThree);
Scanner input = null;
try {
input = new Scanner(new File("prp/spielfeld.txt"));
} catch (FileNotFoundException e) {
System.out.println("Konnte Map Datei nicht finden");
System.exit(-1);
e.printStackTrace();
}
this.createTiles(input);
}
private void createTiles(Scanner input) {
int lineCount = 0;
while (input.hasNextLine()) {
String currentLine = input.nextLine();
for (int i = 0; i<32; i++) {
tiles[lineCount][i] = defineTileType(currentLine.charAt(i));
}
lineCount++;
}
}
private int defineTileType(char charAt) {
for (char i = '0'; i<'9';i++) {
if (charAt == i) {
tileID.push(i-'0');
return 2;
}
}
switch (charAt) {
case '#':
return 1;
case '-':
return 3;
default:
return 0;
}
}
public void addAllGameTilesToPanel(JPanel gamePanel) throws IOException {
int x = 0;
int y = 0;
gamePanel.setBackground(new Color(500)); // hintergrund gamepanel auf blau setzen, bitte entfernen, ist unnötig
for (int i = 0; i<24; i++) {
for (int j = 0; j < 32; j++) {
Objekt newGameTile = new Objekt("Images/leiterbahn_lr_25.png");
System.out.println(tiles[i][j]);
newGameTile.setObjectType(tiles[i][j]);
newGameTile.setPosition(x, y);
if (x+25 >= 800) {
x = 0;
y += 25;
} else {
x += 25;
}
gamePanel.add(newGameTile.getLabel());
tilesMap.get(tiles[i][j]).add(newGameTile);
}
}
gamePanel.repaint();
}
public ArrayList<Objekt> getAllTilesOfType(int i) {
return tilesMap.get(i);
}
}