Guten Morgen,
erstmal entschuldige ich mich im voraus, falls das hier das komplett falsch Unterforum ist, aber ich bin mir nicht sicher, ob meine Sorgen noch zu Anfänger-Sachen oder sonstwo hin gehören, aber da ich das gerade an einem Spiel benutzen will, kommt es mal hier rein.
Mein Zwischenziel besteht gerade darin, ein kleines Spiel zu entwickeln, das vorerst nur mit Text auf einer 2D-Anzeige läuft, also mit Swing.
Man soll Waren auf einem Markt anbieten und erstehen können und kann Gebäude bauen, die erstmal Geld und Baumaterial kosten, dann aber wieder Waren produzieren.
Mein erster Stolperstein wäre allerdings schon die Installation auf verschiedenen Betriebssystemen, die ich bisher mehr schlecht als recht zusammen gebastelt habe:
aus der Main kommen:
Es läuft also darauf hinaus, dass der Speicherort in einer fest platzierten Check-Datei abgelegt wird und dadurch findet man später wieder die ganzen Dateien. Funktioniert wunderbar, bis jemand die Chech-Datei verschiebt, löscht oder ändert.
Habe zwar schon rumgesucht wie blöd, aber wrklich eine Lösung gefunden hab ich nicht.
Wie machen es denn versiertere Programmierer, wenn sie etwas auf Windows und Linux zum laufen kriegen wollen? :autsch:
Mein nächstes Problem wäre, dass ich nicht sicher bin, wie ich am besten mit den Daten umgehe, die aus Dateien geladen werden sollen.
Beispielsweise habe ich für Güter eine einfache Textdatei benutzt und darin steht dann:
Ich gehe bisher ja davon aus, dass es am sinnvollsten ist, die Waren dann zum Spielstart aus der Datei auslesen zu lassen und die ganze Zeit als HashMap gespeichert zu halten. Wenn dann ein Spieler etwas kauft, bekommt er eine Kopie der geladenen Waren. Dann stellt sich mir die Frage, ob es sinnvoll ist, dazu gleich die Mengen zu speichern, in welchen diese jeweils vorkommt oder ob das auch eleganter gehen würde.
Für Gebäude stelle ich mir das ganze etwas schwieriger vor, weil man für die auch irgendwie abspeichern können sollte, was diese produzieren, wobei z.B. Farmen gerne mehrere Optionen bieten sollten.
Also wäre meine Frage ganz allgemein:
Wie organisiert ihr es, wenn ihr auf Daten zugreifen wollt? Textdateien oder gibt es sinnvolleres?
Lädt man besser gleich alles raus, was man früher oder später ohnehin braucht oder ist es doch sinnvoller die Datenschnipsel jedes mal wieder aus der Datei zu holen?
Und hat irgendwer Erfahrung, mit welchen Datenstrukturen man am besten so etwas wie Warenlager abbildet? Ich schwanke da immernoch zwischen ArrayList und HashMap.
Falls irgendwer guten Rat weiß, wäre ich dankbar,
SilverClaw
erstmal entschuldige ich mich im voraus, falls das hier das komplett falsch Unterforum ist, aber ich bin mir nicht sicher, ob meine Sorgen noch zu Anfänger-Sachen oder sonstwo hin gehören, aber da ich das gerade an einem Spiel benutzen will, kommt es mal hier rein.
Mein Zwischenziel besteht gerade darin, ein kleines Spiel zu entwickeln, das vorerst nur mit Text auf einer 2D-Anzeige läuft, also mit Swing.
Man soll Waren auf einem Markt anbieten und erstehen können und kann Gebäude bauen, die erstmal Geld und Baumaterial kosten, dann aber wieder Waren produzieren.
Mein erster Stolperstein wäre allerdings schon die Installation auf verschiedenen Betriebssystemen, die ich bisher mehr schlecht als recht zusammen gebastelt habe:
aus der Main kommen:
public final static String home = System.getProperty("user.home");
public final static String sep = System.getProperty("file.separator");
public final static String checkFileLocation = home+sep+"check.txt";
Java:
package manager;
import java.io.File;
import java.io.IOException;
import javax.swing.JFileChooser;
public class Installer {
private static String installPath = null;
private static String [] checkText;
private static String ressourcePath = null;
static String sep = Main.sep;
public static void installNew(String checkFileLocation) throws IOException {
checkText = new String[10];
JFileChooser fc = new JFileChooser();
fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
if(fc.showSaveDialog(JMainFrame.getWindow()) == JFileChooser.APPROVE_OPTION) {
installPath = fc.getSelectedFile().getAbsolutePath();
System.out.println(installPath);
ressourcePath = installPath+sep+"ressource";
//directories
File ressource = new File(ressourcePath);
ressource.mkdir();
File goods = new File(ressourcePath+sep+"goods");
goods.mkdir();
File buildings = new File(ressourcePath+sep+"buildings");
buildings.mkdir();
//files
File goodslist = new File(goods.getAbsolutePath()+sep+"goodslist.txt");
goodslist.createNewFile();
File readme = new File(installPath+sep+"Readme.txt");
readme.createNewFile();
FileHandler checker = new FileHandler(checkFileLocation);
checkText[0] = "Damascus Pre-Alpha 0.3";
checkText[1] = "installFolder :\n" + installPath;
checkText[2] = "ressourceFolder:\n"+ ressourcePath;
checker.WriteLines(checkText);
} else {
installPath = "Kein Installationsverzeichnis ausgewählt.";
}
}
public String getCheckFile() {
File checkFile = new File(Main.checkFileLocation);
if(checkFile.exists()) {
return checkFile.getAbsolutePath();
} else {
return null;
}
}
}
Habe zwar schon rumgesucht wie blöd, aber wrklich eine Lösung gefunden hab ich nicht.
Wie machen es denn versiertere Programmierer, wenn sie etwas auf Windows und Linux zum laufen kriegen wollen? :autsch:
Mein nächstes Problem wäre, dass ich nicht sicher bin, wie ich am besten mit den Daten umgehe, die aus Dateien geladen werden sollen.
Beispielsweise habe ich für Güter eine einfache Textdatei benutzt und darin steht dann:
WATER
"Eimer Wasser"
"Eimer Wasser"
0.2
WHEAT
"Sack Getreide"
"Säcke Getreide"
0.6
FLOUR
"Sack Mehl"
"Säcke Mehl"
2.0
...
Ich gehe bisher ja davon aus, dass es am sinnvollsten ist, die Waren dann zum Spielstart aus der Datei auslesen zu lassen und die ganze Zeit als HashMap gespeichert zu halten. Wenn dann ein Spieler etwas kauft, bekommt er eine Kopie der geladenen Waren. Dann stellt sich mir die Frage, ob es sinnvoll ist, dazu gleich die Mengen zu speichern, in welchen diese jeweils vorkommt oder ob das auch eleganter gehen würde.
Für Gebäude stelle ich mir das ganze etwas schwieriger vor, weil man für die auch irgendwie abspeichern können sollte, was diese produzieren, wobei z.B. Farmen gerne mehrere Optionen bieten sollten.
Also wäre meine Frage ganz allgemein:
Wie organisiert ihr es, wenn ihr auf Daten zugreifen wollt? Textdateien oder gibt es sinnvolleres?
Lädt man besser gleich alles raus, was man früher oder später ohnehin braucht oder ist es doch sinnvoller die Datenschnipsel jedes mal wieder aus der Datei zu holen?
Und hat irgendwer Erfahrung, mit welchen Datenstrukturen man am besten so etwas wie Warenlager abbildet? Ich schwanke da immernoch zwischen ArrayList und HashMap.
Falls irgendwer guten Rat weiß, wäre ich dankbar,
SilverClaw