Moin,
bin noch ein relativer Anfänger im programmieren und beschäftige mich momentan mit „abstrakten Klassen und Methoden“, sowie mit „Vererbung“.
Meine Frage selber beinhaltet, das Aufrufen von Objekten!!
Wichtig sind die Klassen „Spieler“ und „AlphabetPraesentation“!!
In der „TestKlasse“ rufe ich die Methode „starteSpiel“ auf, sie wird auch aufgerufen, aber das Spiel selber funktioniert leider nicht!
Es gibt Probleme in der „alphabetErkennenAblauf“ Methode sowie in der Methode „frageSpielerNamenAb“ aus der Klasse Spieler.
Wenn ich in der Klasse „AlphabetPraesentation“ ein Objekt spieler aus Spieler anlege und z.B. gleich eine 2 mit übergebe, bekomme ich immerhin keine NullPointerException und das Spiel kann soweit laufen, allerdings nicht mit den eingegebenen Namen, sondern mit so etwas z.B. „Ljava.lang.String;@26e431“.
Ich weiß in keinem Fall woran es liegen könnte, ich habe schon sämtliche Möglichkeiten ausprobiert, die ich aber nicht weiter erörtern will, da der Text sonst kein Ende nehmen würde J!
Es wäre super Toll, wenn mir eine/einer vielleicht bei den Problemen helfen könnte.
Wie funktioniert in diesem Kontext das Objektanlegen bzw. das aufrufen von Objekten, wie kann ich das Spiel auf diese Weise zum laufen bringen?
Insgesamt will ich noch mehr Klassen anlegen, wo weitere Spiele realisiert werden sollen, wie z.B. „BuchstabenWiedererkennen“, deshalb sollen eigentlich die Fragen nach „frageSpielerAnzahlAb“ als auch „frageSpielerNamenAb“, nur einmal betätigt werden, die dann für die diversen Spiele aus verschiedenen Klassen gelten.
Insofern ist die Frage, wie funktioniert das Objektanlegen für dieses Vorhaben, anhand des Beispiels der zwei besagten Klassen? Bzw. für die gesamte Klassenstruktur in denen Spiele realisiert werden?!
Dankeschööön für deine Hilfe!!
lieben Gruß, jojo
bin noch ein relativer Anfänger im programmieren und beschäftige mich momentan mit „abstrakten Klassen und Methoden“, sowie mit „Vererbung“.
Meine Frage selber beinhaltet, das Aufrufen von Objekten!!
Wichtig sind die Klassen „Spieler“ und „AlphabetPraesentation“!!
In der „TestKlasse“ rufe ich die Methode „starteSpiel“ auf, sie wird auch aufgerufen, aber das Spiel selber funktioniert leider nicht!
Es gibt Probleme in der „alphabetErkennenAblauf“ Methode sowie in der Methode „frageSpielerNamenAb“ aus der Klasse Spieler.
Wenn ich in der Klasse „AlphabetPraesentation“ ein Objekt spieler aus Spieler anlege und z.B. gleich eine 2 mit übergebe, bekomme ich immerhin keine NullPointerException und das Spiel kann soweit laufen, allerdings nicht mit den eingegebenen Namen, sondern mit so etwas z.B. „Ljava.lang.String;@26e431“.
Ich weiß in keinem Fall woran es liegen könnte, ich habe schon sämtliche Möglichkeiten ausprobiert, die ich aber nicht weiter erörtern will, da der Text sonst kein Ende nehmen würde J!
Es wäre super Toll, wenn mir eine/einer vielleicht bei den Problemen helfen könnte.
Wie funktioniert in diesem Kontext das Objektanlegen bzw. das aufrufen von Objekten, wie kann ich das Spiel auf diese Weise zum laufen bringen?
Insgesamt will ich noch mehr Klassen anlegen, wo weitere Spiele realisiert werden sollen, wie z.B. „BuchstabenWiedererkennen“, deshalb sollen eigentlich die Fragen nach „frageSpielerAnzahlAb“ als auch „frageSpielerNamenAb“, nur einmal betätigt werden, die dann für die diversen Spiele aus verschiedenen Klassen gelten.
Insofern ist die Frage, wie funktioniert das Objektanlegen für dieses Vorhaben, anhand des Beispiels der zwei besagten Klassen? Bzw. für die gesamte Klassenstruktur in denen Spiele realisiert werden?!
Dankeschööön für deine Hilfe!!
lieben Gruß, jojo
Java:
import javax.swing.JOptionPane;
public class AlphabetPraesentation extends Spiel
{
private int alphabetVon;
private int alphabetBis;
private int alphabetGanz;
private boolean hatAuswahlVonBisMoeglichkeit;
Spieler spieler = new Spieler();
AlphabetPraesentation(int alphabetVon,
int alphabetBis,
int alphabetGanz,
boolean hatAuswahlVonBisMoeglichkeit)
{
this.alphabetVon = alphabetVon;
this.alphabetBis = alphabetBis;
this.alphabetGanz = alphabetGanz;
this.hatAuswahlVonBisMoeglichkeit = hatAuswahlVonBisMoeglichkeit;
}
AlphabetPraesentation(Spieler spieler)
{
this.spieler = spieler;
}
AlphabetPraesentation()
{
hatAuswahlVonBisMoeglichkeit = true;
}
public void frageAlphabetVonAb()
{
alphabetVon = Integer.parseInt(JOptionPane.showInputDialog("Mit welchem Buchstaben willst du anfangen zu üben?"));
}
public void frageAlphabetBisAb()
{
alphabetBis = Integer.parseInt(JOptionPane.showInputDialog("Bis zu welchem Buchstaben willst du üben?"));
}
/* public void frageAlphabetGanzAb()
{
alphabetGanz;//benötig man eigentlich gar nicht!
}
*/
public void setzeAuswahlVonBisMoeglichkeit(boolean hatAuswahlVonBisMoeglichkeit)
{
this.hatAuswahlVonBisMoeglichkeit = hatAuswahlVonBisMoeglichkeit;
}
public int gebeAlphabetVonZurueck()
{
return alphabetVon;
}
public int gebeAlphabetBisZurueck()
{
return alphabetBis;
}
public int gebeAlphabetGanzZurueck()
{
return alphabetGanz = Methoden.ALPHABET.length();
}
@Override
public void starteSpiel()
{
alphabetErkennenAblauf();
}
@Override
public void beendeSpiel()
{
}
@Override
public boolean frageSpielZustandAb()
{
return false;
}
@Override
public SpielTyp setzeSpielTyp()
{
// return SpielTyp.ALPHABETBUCHSTABENLERNEN;
return null;
}
@Override
public Spieler frageSpielerAnzahlAb()
{
return spieler;//vermutlich doch überflüssige Methode!! ?
}
public void spielStartAlphabetErkennen()
{
// for(int i=gebeAlphabetVonZurueck(); i<=gebeAlphabetBisZurueck(); i++)
for(int i=0; i<gebeAlphabetGanzZurueck(); i++)
for(int j=0; j<spieler.gebeSpielerAnzahlZurueck(); j++)
{
{
JOptionPane.showMessageDialog(null, "Hallo "+ spieler.gebeSpielerNamenZurueck() +", du bist dran!");
String ausgabeIntern = Methoden.alphabetAufsagen(1, i);
JOptionPane.showMessageDialog(null, ausgabeIntern);
}
}
}
public void alphabetErkennenAblauf()
{
AlphabetPraesentation alphabetPraesentation = new AlphabetPraesentation();
alphabetPraesentation.spieler.frageSpielerAnzahlAb();
System.out.println("so viele Spieler gibt es: "+alphabetPraesentation.spieler.gebeSpielerAnzahlZurueck());
alphabetPraesentation.spieler.frageSpielerNamenAb();
System.out.println("Spielernamen: "+alphabetPraesentation.spieler.gebeSpielerNamenZurueck());
// alphabetPraesentation.spieler.zaehlerZurueckSetzen();
// alphabetPraesentation.frageAlphabetVonAb();
// alphabetPraesentation.frageAlphabetBisAb();
alphabetPraesentation.spielStartAlphabetErkennen();
}
}
Java:
import javax.swing.JOptionPane;
public class Spieler
{
private int spielerAnzahl;
private String[] name;
private int[] zaehlerRichtig;
Spieler()
{}
Spieler(int spielerAnzahl)
{
this.spielerAnzahl = spielerAnzahl;
name = new String[spielerAnzahl];
zaehlerRichtig = new int[spielerAnzahl];
for(int i=0; i<spielerAnzahl; i++)
{
name[i] = new String();
}
}
public void frageSpielerAnzahlAb()
{
spielerAnzahl = Integer.parseInt(JOptionPane.showInputDialog("Wie viele wollen spielen?"));
}
public void frageSpielerNamenAb()
{
for( int i=0; i < spielerAnzahl; i++)
{
name[i] = JOptionPane.showInputDialog("Bitte gib Deinen Namen ein. Danke!");
}
}
public void erhoeheZaehlerRichtig()
{
for(int i=0; i<spielerAnzahl; i++)
{
zaehlerRichtig[i]++;
}
}
public void zaehlerZurueckSetzen()
{
for(int i=0; i<spielerAnzahl; i++)
{
zaehlerRichtig[i] = 0;
}
}
public int gebeSpielerAnzahlZurueck()
{
return spielerAnzahl;
}
public String[] gebeSpielerNamenZurueck()
{
return name;
}
public int[] gebeZaehlerRichtigZurueck()
{
return zaehlerRichtig;
}
public void ergebnissAnzeigeFuerSpielende(int aufgabenAnzahl)
{
String ausgabe = "";
String ausgabeVariationen = ergebnissAnzeigeVariationen(aufgabenAnzahl);
for(int i=0; i<spielerAnzahl; i++)
{
ausgabe += "Hallo "+ name[i] +", du hast von " +
zaehlerRichtig[i] + ausgabeVariationen;
}
JOptionPane.showMessageDialog(null, ausgabe);
}
private String ergebnissAnzeigeVariationen(int aufgabenAnzahl)
{
String ausgabe = "";
for(int i=0; i<spielerAnzahl; i++)
{
if(zaehlerRichtig[i] == 0)
{
ausgabe = " Runden, leider keins richtig gehabt!\nAber ganz bestimmt beim nächsten mal!!";
}
else if(zaehlerRichtig[i] > 0 && zaehlerRichtig[i] != aufgabenAnzahl)
{
ausgabe = " Runden" +aufgabenAnzahl+" richtig.\n";
}
else if(zaehlerRichtig[i] == aufgabenAnzahl)
{
ausgabe = " Runden\nalles richtig gehabt!! SUPER.\n";
}
}
return ausgabe;
}
}
Java:
public abstract class Spiel
{
public abstract void starteSpiel();
public abstract void beendeSpiel();
public abstract boolean frageSpielZustandAb();
public abstract SpielTyp setzeSpielTyp();
public abstract Spieler frageSpielerAnzahlAb();
}
Java:
public class TestKlasse
{
public static void main(String[] args)
{
Spiel spieler1 = new AlphabetPraesentation();
spieler1.starteSpiel();
}
}
Java:
import javax.swing.JOptionPane;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Methoden
{
final static String ALPHABET = "ABCDE"; //FGHIJKLMNOPQRSTUVWXYZ";
public static String alphabetAufsagen(int buchstabenAnzahl, int buchstabe)
{
String ausgabeIntern = "";
StringBuffer alphabetNeu = new StringBuffer(ALPHABET);
for(int i=0; i<buchstabenAnzahl; i++)
{
ausgabeIntern += alphabetNeu.charAt(buchstabe);
alphabetNeu = alphabetNeu.deleteCharAt(buchstabe);
}
return ausgabeIntern;
}
}
Zuletzt bearbeitet von einem Moderator: