Welches Speichermanagement für einen Kalkulator

Amazonasmann

Neues Mitglied
Hallo, ich habe einen Kalkulator, der einem auf Basis von ca. 12 Items mit jeweils ~8 Attributen seinen Schaden, Rüstungswert etc berechnet...Für Diablo 3 um genau zu sein, was viele von euch wohl kennen werden..

Ich habe alles fertig, GUI usw. auch..jedoch wird momentan alles nur statisch in Variablen gespeichert, und bei Beenden ist natürlich wieder alles weg...

Ich bin mir aber nicht sicher wie ich die Daten jetzt speichern soll..habe mir überlegt vielleicht in einfach Files? Und mit Implode Explode auslesen..aber ist ziemlich umständlich denke ich..
Doch lieber XML?
Datenbank sogar?

Habt ihr Ideen die mir weiterhelfen können? Danke!
 
Wie wär's denn so: Du machst dir praktisch so ne eigene Syntax für sowas:
[c][ItemName1]:[Stattyp1]-[Statwert1]+[Stattyp2]-[Statwert2]+[...]|[ItemName2]:[Stattyp1]-[Statwert1]+[Stattyp2]-[Statwert2]+[...]|[...][/c]

Und dann einfach mit nem PrintWriter schreiben - Kein Problem^^

Könnte dann so aussehen: (Kenn das Spiel nicht wirklich, aber egal)

Code:
Holzschwert:
    Stärke-5 +
    Schlaggeschwindigkeit-50
|
Holzschild:
    Verteidigung-10

Dann einfach Zeilenumbrüche und Leerzeichen entfernen, und dann so z.B:

Java:
String s = inhaltDerDatei;
int anzahlDerItems = zähleChars(s, '|') + 1;
String[] itemInfos = s.split('|');

for(String itemInfoString : itemInfos) {

    String itemName = itemInfoString.split(':')[0];
    String itemStatsString = itemInfo.split(':')[1];
    int statAnzahl = zähleChars(itemStatsString, '-') + 1;
    System.out.print("Item '" + itemName + "' hat " + statAnzahl + " Stats:");

    for(String itemStat : itemStatsString.split('+'))
        System.out.print(" " + itemStat.split('-')[0] + " mit dem Wert " + itemStat.split('-')[1] + ",");

    System.out.print("\n");
}
 
Zuletzt bearbeitet:
Das kommt von Java um 0:00 ohne Eclipse.. Da ist ein Fehler, richtig wär's so:
Java:
String s = inhaltDerDatei;
int anzahlDerItems = zähleChars(s, '|') + 1;
String[] itemInfos = s.split('|');
 
for(String itemInfoString : itemInfos) {
 
    String itemName = itemInfoString.split(':')[0];
    String itemStatsString = itemInfo.split(':')[1];
    int statAnzahl = zähleChars(itemStatsString, '+') + 1;
    System.out.print("Item '" + itemName + "' hat " + statAnzahl + " Stats:");
 
    for(String itemStat : itemStatsString.split('+'))
        System.out.print(" " + itemStat.split('-')[0] + " mit dem Wert " + itemStat.split('-')[1] + ",");
 
    System.out.print("\n");
}
 
Bilde die zustaende auf java-beans ab und schreibe xml mit jaxb oder xstream. Auf keinen fall das parsen von hand uebernehmen, zu viel arbeit.
 
Toller Ansatz@Ikaron, das war das was ich mit Files und Implode Explode meinte!:toll:

@Cola_Colin auch eine Super Idee..ich habe leider in meiner ganzen Studienzeit noch nie etwas davon gehört, wie genau funktioniert aber das physikalische Speichern dann? In die Jar?

@luluman Ich informier mich mal noch mehr darüber, aber mit Beans habe ich schon gearbeitet, bei JSPs eben..

Gibt es noch Möglichkeiten?

Hier mal meine Item und Attributklasse, das ihr einen Ansatz habt wie ich das aufgebaut habe..hab es Objektorientiert versucht!

Attribute :

Java:
package ItemCalculator;

public class Attribute {
	
	public double value;
	private String name;
	
	
	Attribute(String name, double value)
	{
		this.value=value;
		this.name=name;
		
	}
	
	public void setValue(double value)
	{
		this.value=value;
	}
	public double getValue()
	{
		return value;
	}
	
	public void setName(String name)
	{
		this.name=name;
	}
	
	public String getName()
	{
		return name;
	}
	


}


Item :

Java:
package ItemCalculator;

public class Item{
	
	String name;
	Attribute[] attributes;
	public int attributelength=0;
	Double armor=0.0,DPS=0.0;
	
	
	//Erzeugt ein Item mit vorgegebenem Namen mit 7 leeren Attributen
	Item(String name)
	{
		this.name=name;
		attributes=new Attribute[7];
		
		for(int i=0;i<attributes.length-1;i++)
		{
			attributes[i]=new Attribute("Blanko Attribut",0);
		}
	}
	
	public Attribute[] returnAttributes()
	{
		return attributes;
	}
	//liefert von gegebenem String das jeweilige Attribut zurück
	//Falls nicht existent, wird 0 zurückgegeben
	public double getValue(String attributname)
	{
		for(int i=0;i<attributes.length-1;i++)
		{
			if(attributname.compareTo(attributes[i].getName())==0)
			{
				return attributes[i].getValue();
			}
		}
		return 0;
	}
	
	public void setName(String name)
	{
		this.name=name;
	}
	
	public String getName()
	{
		return name;
	}

	//Fügt ein Attribut dem Item hinzu
	public void addAttribute(String name, double value)
	{
		
		attributes[attributelength]=new Attribute(name,value);
	
		
		if(attributelength>5)
		{
			System.out.println("Mehr als 7 Attribute!");
		}
		else
		{
			attributelength++;
		}
	}
	
	//Gibt einen String zurück, der Alle Items mit ihren Attributen enthält
	public String toString()
	{
		String derString="";
		derString=derString+"Itemname :"+name;	
		derString=derString+"\n";
		derString=derString+"Attributes : ";
		derString=derString+"\n";
		for(int i=0;i<attributelength;i++)
		{
			if(attributes[i].getName().compareTo("Blanko Attribut")!=0)
		derString=derString +attributes[i].getName()+" "+ attributes[i].getValue()+"\n";
		}
		return derString;
	}
	public int attributelength()
	{
		return attributelength;
	}
	public double getArmor()
	{
		return armor;
	}
	public double getDPS()
	{
		return DPS;
	}
	
	public void setArmor(double armor)
	{
		this.armor=armor;
	}
	
	public void setDPS(double DPS)
	{
		this.DPS=DPS;
	}

}
 

Zurück
Oben