Moin moin ihrs.
Auf der Suche nach einer Lösung für mein Problem, bin ich in diesem Forum gelandet und ich denke, dass mir hier geholfen wird. Die Boardsuche hat gezeigt, dass sich zumindest einige mit Kämpfen und ähnlichem beschäftigt haben.
Wusste nicht, ob ich das topic hier oder in in "Anfängerfragen" posten sollte, da es beide Bereiche betrifft, also entschudligt falsch ich dort hätte posten sollen.
Kommen wir also zu meinem Problem... Ich bin neu was Programmierung angeht und die OOP verwirrt mich da noch.
Habe hier das Buch "Java in a Nutshell" von o'reilly rumliegen und hab mir auch einige Java tutorials durchgeschaut, aber irgendwie komme ich nicht weiter..:/
Ich wollte mir zur Übung mal einen Textbasierten Kampf programmieren, den ich später mal erweitern kann und stoße schon bei am Anfang auf Probleme..:/
Also ich habe 2 Klassen, die jeweils für 2 unterschiedliche Monster mit unterschiedlichen Attacken(Methoden) stehen.
Jeder dieser Monster hat noch eine Methode "kampf" (ja ich weiss, dass man Methodennamen eher mit einem verb betitelt, mir ist aber nichts tolles in den Sinn gekommen), in der sein eignes Kampfverhalten definiert wird.
Das ist das Grundgerüst. Nun weiss ich nicht wie ich am besten Auf die Werte des Gegners zugreifen kann um seine Hp beim angriff zu verringern. Ich habe mir in den Kopf gesetzt, dass ich den Gegner als Objekt an die "kampf" Methode eines Monster übergebe und so über das gegnerische Objekt auf seine hp zugreifen kann.
In den jeweiligen Angriffen könnte ich dann über "gegner.hp" auf seine Hp zugreifen.
Dazu müssen aber die Monster vom gleichen Objekttyp sein, ergo muss ich eine Basisklasse Monster erstellen, so dass die Monster vom gleichen Typ "Monster" sind.
Aber da beide dann vom Typ Monster sind , kann ich nur auf Methoden in der Klasse Monster zugreifen. Also müsste ich Methoden in der Basisklasse "Monster " erzeugen und sie überschreiben lassen oder nicht? Dazu müsste ich doch jede Methode in der Basisklasse erzeugen oder nicht?
Wäre das aber nicht bisschen blöd, wenn ich später z.b. 10 Monster habe und jeder um die 5 verscheidene Angriffe hat?
Wie löse ich das am besten?geht das so überhaupt wie ich es mir vorgestellt habe, dass ich den gegner als Objekt an die "Kampf"-methode übergebe und so auf ihn zugreife?
oder muss ich da mit get und set methoden arbeiten? schon oder? und wie geht das am besten?
ich hoffe es ist einigermaßen verständlich.
ich weiß es gehört zum grundwissen der OOP, aber irgendwie verwirr ich mich da immerweiter.
Auf der Suche nach einer Lösung für mein Problem, bin ich in diesem Forum gelandet und ich denke, dass mir hier geholfen wird. Die Boardsuche hat gezeigt, dass sich zumindest einige mit Kämpfen und ähnlichem beschäftigt haben.
Wusste nicht, ob ich das topic hier oder in in "Anfängerfragen" posten sollte, da es beide Bereiche betrifft, also entschudligt falsch ich dort hätte posten sollen.
Kommen wir also zu meinem Problem... Ich bin neu was Programmierung angeht und die OOP verwirrt mich da noch.
Habe hier das Buch "Java in a Nutshell" von o'reilly rumliegen und hab mir auch einige Java tutorials durchgeschaut, aber irgendwie komme ich nicht weiter..:/
Ich wollte mir zur Übung mal einen Textbasierten Kampf programmieren, den ich später mal erweitern kann und stoße schon bei am Anfang auf Probleme..:/
Also ich habe 2 Klassen, die jeweils für 2 unterschiedliche Monster mit unterschiedlichen Attacken(Methoden) stehen.
Jeder dieser Monster hat noch eine Methode "kampf" (ja ich weiss, dass man Methodennamen eher mit einem verb betitelt, mir ist aber nichts tolles in den Sinn gekommen), in der sein eignes Kampfverhalten definiert wird.
Code:
class Monster A{
int = 50;
public void greifeAn() {
System.out.println("Monster A greift an!");
}
public void kampf() {
if (akthp <= 0) {
System.out.println("Monster fällt zu Boden!");
}
else {
greifeAn();
}
}
}
class Monster B {
int = 65;
int mana = 40;
public void greifeAn() {
System.out.println("Monster B greift an!");
}
public void macheFeuerball() {
if ( mana > 12) {
System.out.println("Monster B schleudert einen Feuerball auf sein Ziel");
mana -= 12;
}
else {
System.out.println("Monster B verfügt nicht über ausreichend Mana um einen Feuerball zu erzeugen!");
}
}
public void kampf() {
if (akthp <= 0) {
System.out.println("Monster fällt zu Boden!");
}
else {
int rand = 1 + (int) (Math.random()*10);
if ( rand < 5 ){
feuerball();
}
else {
greifeAn();
}
}
}
}
Code:
public void kampf(Monster gegner) {
...
}
In den jeweiligen Angriffen könnte ich dann über "gegner.hp" auf seine Hp zugreifen.
Dazu müssen aber die Monster vom gleichen Objekttyp sein, ergo muss ich eine Basisklasse Monster erstellen, so dass die Monster vom gleichen Typ "Monster" sind.
Aber da beide dann vom Typ Monster sind , kann ich nur auf Methoden in der Klasse Monster zugreifen. Also müsste ich Methoden in der Basisklasse "Monster " erzeugen und sie überschreiben lassen oder nicht? Dazu müsste ich doch jede Methode in der Basisklasse erzeugen oder nicht?
Wäre das aber nicht bisschen blöd, wenn ich später z.b. 10 Monster habe und jeder um die 5 verscheidene Angriffe hat?
Wie löse ich das am besten?geht das so überhaupt wie ich es mir vorgestellt habe, dass ich den gegner als Objekt an die "Kampf"-methode übergebe und so auf ihn zugreife?
oder muss ich da mit get und set methoden arbeiten? schon oder? und wie geht das am besten?
ich hoffe es ist einigermaßen verständlich.
ich weiß es gehört zum grundwissen der OOP, aber irgendwie verwirr ich mich da immerweiter.