Hallo Leute,
ich habe ein kleines Problem und hoffe, dass ihr mir vielleicht weiterhelfen könnt.
Ich bastel gerade an einem kleinen Spielchen bzw. einem Grundgerüst und im speziellen gerade an einem Inventarsystem. Ich habe es so aufgebaut, dass das Inventar aus ArrayListen besteht.
Drei Listen, Item, Waffen und Ruestung. Für diese drei Arten habe ich Klassen geschrieben um entsprechende Objekte zu erzeugen. Dann schrieb ich eine weitere Klasse mit dem Namen
ItemInitialer in welcher verschiedene Objekte erzeugt werden, wenn die entsprechenden Methoden aufgerufen werden. Das klappt in soweit auch, ich kann diese dann mit z.b. Inventar.add oder Waffen.add auch hinzufügen. Das Problem ist aber, dass ich auf diese Objekte nur mit ihrem Index zugreifen kann, per contains findet mein Programm sie leider nicht. Das Problem wird darin bestehen, dass die Objekte von den Methoden einer Klasse übergeben werden, denn mit anderen Objekte funktioniert contains und remove ohne Probleme.
Ich vermute, ich finde einfach nicht den richtigen Weg, die von den Methoden in die Listen eingefügten Objekte richtig anzusprechen.
Ich hoffe, ich habe mein Problem einigermaßen verständlich erklärt und es findet sich jemand, der mir sagen kann, wo mein Fehler ist.
Hier der Quellcode:
Konstruktor Item
Konstruktor Spieler
Objekt Initialisierer
Main
System.out.println(player.Inventar.contains(Axt));
Um diese Zeile geht es primär. Wenn in der Main ein Object der Klasse Waffen erzeuge, dann kann ich diese mit
.contains finden und es wird true ausgegeben. Wenn ich aber über die Methode der Klasse ItemInitialer ein Object des
Typs Waffen erzeuge, dann gibts contains false zurückt.
Ich sage jetzt schon mal danke, wenn mir jemand sagen kann, wo mein Gedankenfehler ist und für eure Mühe.
Grüße Thodryth
ich habe ein kleines Problem und hoffe, dass ihr mir vielleicht weiterhelfen könnt.
Ich bastel gerade an einem kleinen Spielchen bzw. einem Grundgerüst und im speziellen gerade an einem Inventarsystem. Ich habe es so aufgebaut, dass das Inventar aus ArrayListen besteht.
Drei Listen, Item, Waffen und Ruestung. Für diese drei Arten habe ich Klassen geschrieben um entsprechende Objekte zu erzeugen. Dann schrieb ich eine weitere Klasse mit dem Namen
ItemInitialer in welcher verschiedene Objekte erzeugt werden, wenn die entsprechenden Methoden aufgerufen werden. Das klappt in soweit auch, ich kann diese dann mit z.b. Inventar.add oder Waffen.add auch hinzufügen. Das Problem ist aber, dass ich auf diese Objekte nur mit ihrem Index zugreifen kann, per contains findet mein Programm sie leider nicht. Das Problem wird darin bestehen, dass die Objekte von den Methoden einer Klasse übergeben werden, denn mit anderen Objekte funktioniert contains und remove ohne Probleme.
Ich vermute, ich finde einfach nicht den richtigen Weg, die von den Methoden in die Listen eingefügten Objekte richtig anzusprechen.
Ich hoffe, ich habe mein Problem einigermaßen verständlich erklärt und es findet sich jemand, der mir sagen kann, wo mein Fehler ist.
Hier der Quellcode:
Konstruktor Item
Java:
package zombcraft;
public class Item {
String itemName;
int index;
int heal;
}
Konstruktor Spieler
Java:
package zombcraft;
import java.util.*;
class Spieler
{
//Objektvariablen
String vName;
String nName;
int alter;
float posx, posy;
int gesund, schaden, block;
List<Item> Inventar = new ArrayList<Item>();
List<Waffen> Waffen = new ArrayList<Waffen>();
List<Ruestung> Ruestung = new ArrayList<Ruestung>();
//Schaden austeilen und einstecken
public int getGesund() {
return gesund;
}
public void treffer(int schaden) {
gesund = gesund - schaden;
}
public void heilung(int heil) {
gesund = gesund + heil;
}
public int angriff(int waffendmg) {
schaden = schaden + waffendmg;
return schaden;
}
public int blocken(int schildblock) {
block = block + schildblock;
return block;
}
}
Objekt Initialisierer
Java:
package zombcraft;
public class ItemInitialer {
//ITEM
public static Item Trank() {
Item Trank = new Item();
Trank.itemName = "Heiltrank";
Trank.heal = 50;
return Trank;
}
public static Item Bier() {
Item Bier = new Item();
Bier.itemName = "Bier";
return Bier;
}
public static Item Wasser() {
Item Wasser = new Item();
Wasser.itemName = "Wasser";
return Wasser;
}
//WAFFEN
public static Waffen Axt() {
Waffen Axt = new Waffen();
Axt.itemName = "Axt";
Axt.dmg = 15;
return Axt;
}
public static Waffen Ast() {
Waffen Ast = new Waffen();
Ast.itemName = "Ast";
Ast.dmg = 5;
return Ast;
}
//RUESTUNG
public static Ruestung Weste() {
Ruestung Weste = new Ruestung();
Weste.itemName = "Weste";
Weste.block = 15;
return Weste;
}
}
Main
Java:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package zombcraft;
import java.util.*;
/**
*
* @author Reaper
*/
public class ZombCraft {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Spieler player = new Spieler();
player.nName = "Mueller";
player.vName = "Peter";
player.alter = 25;
player.gesund = 100;
player.Inventar.add(ItemInitialer.Bier());
player.Inventar.add(ItemInitialer.Trank());
player.Waffen.add(ItemInitialer.Axt());
player.Waffen.add(ItemInitialer.Ast());
System.out.println(player.Inventar.contains(Axt));
}
}
System.out.println(player.Inventar.contains(Axt));
Um diese Zeile geht es primär. Wenn in der Main ein Object der Klasse Waffen erzeuge, dann kann ich diese mit
.contains finden und es wird true ausgegeben. Wenn ich aber über die Methode der Klasse ItemInitialer ein Object des
Typs Waffen erzeuge, dann gibts contains false zurückt.
Ich sage jetzt schon mal danke, wenn mir jemand sagen kann, wo mein Gedankenfehler ist und für eure Mühe.
Grüße Thodryth
Zuletzt bearbeitet: