Hi Leute,
bevor mir sofort die Forenregeln um die Ohren geschmissen werden - NEIN, das ist keine Hausaufgabe, sondern ein klitzekleines Projekt, welches ich für mich selbst schreiben wollte. Es geht nämlich um Folgendes:
Ich spiele auf Facebook das Spiel "Monster Legends" in welchem man Monster züchten und weiterentwickeln kann. Jedes Monster muss dafür in einem für ihn passenden Lebensraum leben.
Lebensräume haben eine Elementeigenschaft, während Monster mind. eine und max. zwei Elementeigenschaften besitzen.
Nehmen wir als Beispiel ein Feuer/Natur Monster. Dieses kann im Lebensraum Feuer, sowie im Lebensraum Natur leben. Es gibt aber wie gesagt auch Monster mit nur einer Eigenschaft, wie z.B. Feuer. Dieses kann dementsprechend nur im Lebensraum Feuer leben.
Mein Ziel ist es nun all' meine Lebensräume und all' meine Monster einzulesen und dann eine Methode schreiben welche mir quasi die beste Verteilung der Monster in meinen Lebensräumen rausgibt. Sprich, ich möchte errechnet bekommen wie ich mir am meisten freien Platz in den Lebensräumen schaffen kann, indem ich alle meine Monster so gut verteile, dass die anderen Lebensräume vollgepackt sind.
Ein paar Klassen habe ich dafür auch schon geschrieben, mit welchen in zumindest die Daten eingelesen bekomme. Jetzt fehlt mir eben nur noch die Logik, und da hoffte ich auf einen kleinen Denkanstoß eurerseits. Hier schonmal der Code den ich bisher geschrieben habe und übrigens, falls ihr dazu auch ein paar Verbesserungstipps hättet - immer her damit!
bevor mir sofort die Forenregeln um die Ohren geschmissen werden - NEIN, das ist keine Hausaufgabe, sondern ein klitzekleines Projekt, welches ich für mich selbst schreiben wollte. Es geht nämlich um Folgendes:
Ich spiele auf Facebook das Spiel "Monster Legends" in welchem man Monster züchten und weiterentwickeln kann. Jedes Monster muss dafür in einem für ihn passenden Lebensraum leben.
Lebensräume haben eine Elementeigenschaft, während Monster mind. eine und max. zwei Elementeigenschaften besitzen.
Nehmen wir als Beispiel ein Feuer/Natur Monster. Dieses kann im Lebensraum Feuer, sowie im Lebensraum Natur leben. Es gibt aber wie gesagt auch Monster mit nur einer Eigenschaft, wie z.B. Feuer. Dieses kann dementsprechend nur im Lebensraum Feuer leben.
Mein Ziel ist es nun all' meine Lebensräume und all' meine Monster einzulesen und dann eine Methode schreiben welche mir quasi die beste Verteilung der Monster in meinen Lebensräumen rausgibt. Sprich, ich möchte errechnet bekommen wie ich mir am meisten freien Platz in den Lebensräumen schaffen kann, indem ich alle meine Monster so gut verteile, dass die anderen Lebensräume vollgepackt sind.
Ein paar Klassen habe ich dafür auch schon geschrieben, mit welchen in zumindest die Daten eingelesen bekomme. Jetzt fehlt mir eben nur noch die Logik, und da hoffte ich auf einen kleinen Denkanstoß eurerseits. Hier schonmal der Code den ich bisher geschrieben habe und übrigens, falls ihr dazu auch ein paar Verbesserungstipps hättet - immer her damit!
Java:
public class Monster {
int element1;
int element2;
public Monster(int e1, int e2){
this.element1 = e1;
this.element2 = e2;
}
public int getElement1(){
return element1;
}
public int getElement2(){
return element2;
}
}
Java:
public class Habitat {
int element;
int size;
public Habitat(int e, int s){
this.element = e;
this.size = s;
}
public int getElement() {
return this.element;
}
public int getSize(){
return this.size;
}
}
Java:
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Vector;
public class DataReader {
public Vector<Habitat> habitat = new Vector<Habitat>();
public Vector<Monster> monster = new Vector<Monster>();
public DataReader(String file) throws FileNotFoundException, IOException {
try (BufferedReader br = new BufferedReader(new FileReader(file))) {
String line;
while ((line = br.readLine()) != null) {
line = line.replaceAll(" ", "");
if (line.startsWith("Habitat")) {
String hab = line.split(";")[0];
String siz = line.split(";")[1];
habitat.add(new Habitat(nameToInt(hab.split("=")[1]), Integer.parseInt(siz.split("=")[1])));
} else if (line.startsWith("Monsters")) {
String first = line.split("=")[1].trim();
String[] second = first.split(",");
try{
monster.add(new Monster(nameToInt(second[0]), nameToInt(second[1])));
}catch(ArrayIndexOutOfBoundsException e){
monster.add(new Monster(nameToInt(second[0]), 0));
}
} else if (line.startsWith("")) {
continue;
} else {
System.err.println("Invalid line.");
}
}
}
}
public Vector<Habitat> readHabitat() {
return habitat;
}
public Vector<Monster> readMonster() {
return monster;
}
public int nameToInt(String s){
switch (s){
case "Fire" : return 1;
case "Nature" : return 2;
case "Earth" : return 3;
case "Thunder" : return 4;
case "Water" : return 5;
case "Dark" : return 6;
case "Magic" : return 7;
case "Light" : return 8;
case "Legendary": return 9;
case "default" : return 0;
}
return -1;
}
}