Hallo Liebe Community,
ich habe ein kleines Programm geschrieben & würde Euch gerne um Eure Rückmeldungen bitten unter anderem zu:
Meine Aufgabenstellung lautete:
Ratespiel:
Das Spiel umfasst ein Ratespiel-Objekt und eine beliebige Anzahl an Spielern. Das Spiel generiert eine Zufallszahl zwischen 0 und 9, und die Spieler versuchen, diese Zahl zu erraten. (Klar, ich weiß - ist nicht sonderlich spannend😅)
Klassen:
Ratespiel.class
Spieler.class
SpielStarter.class
Logik:
1)Die Klasse SpielStarter ist die Klasse, mit der die Anwendung beginnt. Sie hat die main()- Methode.
2) ln der main()-Methode wird ein Ratespiel-Objekt erzeugt und seine starteSpiel()-Methode aufgerufen.
3) in der starteSpiel()-Methode des Ratespiel-Objekts wird das vollständige Spiel abgewickelt. Sie »denkt<< sich eine Zufallszahl aus (das von den Spielern zu erratende Ziel). Dann fordert sie jeden Spieler auf zu raten, prüft die Ergebnisse und gibt dann entweder Informationen zu dem/den erfolgreichen Spieler(n) aus oder fordert sie auf, erneut zu raten.
Meine Lösung:
[CODE lang="java" title="Ratespiel.java"]import java.util.*;
public class Ratespiel {
public void starteSpiel() {
//Spieler anlegen
Spieler spieler = new Spieler();
spieler.SpielerAnlegen();
//Formatierung
System.out.println();
System.out.println("Spiel startet jetzt!");
System.out.println();
//Zufallszahl Intervall festlegen
int max = 9;
int min = 0;
int range = max - min + 1;
boolean RichtigeAntwortVorhanden = false;
do {
//Zufallszahl erzeugen im oben festgelegten Intervall
int rand = 0;
for (int i = 0; i < 10; i++) {
rand = (int)(Math.random()*range) + min;
}
//alt get
//System.out.println("Alle " + Spieler.getSpielerAnzahl() + " Spieler suchen sich jetzt eine Zahl aus:");
System.out.println("Alle " + Spieler.getSpielerAnzahlAlternativ() + " Spieler suchen sich jetzt eine Zahl aus:");
//Speichere SpielerAnzahl in Variable um in for Schleife darauf zugreifen zu können
int SpielerAnzahl = Spieler.getSpielerAnzahlAlternativ();
//LEge ArrayListe an, um eingegebene Spielerzahlen abzuspeichern
ArrayList<Integer> SpielerZahlenListe = new ArrayList<Integer>();
//Frage nach den Zahlen und speichere in der ArrayList
for (int i = 1; i <= SpielerAnzahl; i++) {
System.out.println("Spieler " + i + " such dir eine Zahl zwischen 0 und 9 aus!");
Scanner gewaehlteZahl = new Scanner(System.in);
SpielerZahlenListe.add(gewaehlteZahl.nextInt());
}
System.out.println("____________________________________");
//Prüfen welche Spieler richtig lagen
for (int i = 0; i < SpielerAnzahl; i++) {
int Spielernummer = i+1;
if (SpielerZahlenListe.get(i) == rand) {
System.out.println("Spieler " + Spielernummer + " lag richtig & hat gewonnen!");
RichtigeAntwortVorhanden = true;
}
else {
System.out.println("Spieler " + Spielernummer + " hat leider nicht richtig geraten...");
}
}
System.out.println("Die richtige Zahl lautete: " + rand);
if (RichtigeAntwortVorhanden == false) {
System.out.println("__________________DURCHGANG BEENDET______________");
System.out.println("Kein Spieler hat richtig geraten! Ihr dürft noch einmal raten!");
System.out.println("Nächster Durchgang beginnt:");
}
} while (RichtigeAntwortVorhanden == false);
}
}[/CODE]
[CODE lang="java" title="Spieler.java"]import java.util.*;
public class Spieler {
//Alternativ get
//public static int SpielerAnzahl;
public static int anzahlSpielerAusUserInput;
public void SpielerAnlegen() {
//Einlesen der Spielerzahl
Scanner anzahlSpieler = new Scanner(System.in);
System.out.println("Wie viele Spieler seid Ihr? Bitte gebt die Zahl der Mitspieler ein!");
anzahlSpielerAusUserInput = anzahlSpieler.nextInt(); //Schreibe userinput in variable anzahlSpielerAusUserInput
if (anzahlSpielerAusUserInput > 0) {
System.out.println("Spiel mit " + anzahlSpielerAusUserInput + " Spielern(n) wird erstellt!");
//Erstelle ArrayListe mit eingegebenen Spielern und gib jedem Spieler eine Nummer angefangen bei 1 & endend bei Spielernr. aus UserInput
ArrayList<Integer> SpielerArray = new ArrayList<Integer>();
for (int i=1; i<=anzahlSpielerAusUserInput; i++) {
SpielerArray.add(i);
//alt. get
//SpielerAnzahl++;
}
//Ausgabe der erstellten Spieler aus der ArrayListe mit dem ListIterator (mehr zur Überprüfung, das auch alle Spieler korrekt erstellt wurden sind)
ListIterator<Integer> li = SpielerArray.listIterator();
while(li.hasNext()) {
System.out.println("Spieler Nummer " + li.next() + " erfolgreich erstellt.");
}
}
//Wenn Spieleranzahl nicht 0 ist, PRogramm abbrechen
else {
System.out.println("Spieleranzahl muss größer 0 sein!");
System.exit(0);
}
}
//alt get
/*public static int getSpielerAnzahl() {
return SpielerAnzahl;
}*/
public static int getSpielerAnzahlAlternativ() {
return anzahlSpielerAusUserInput;
}
}[/CODE]
[CODE lang="java" title="SpielStarter.java"]public class SpielStarter {
public static void main(String[] main) {
Ratespiel ratespiel = new Ratespiel();
ratespiel.starteSpiel();
}
}[/CODE]
Ich weiß es ist schon ein wenig mehr Code und klar das Programm läuft, wäre euch aber dennoch wie gesagt sehr dankbar für das oben genannte Feedback.
Aus anderen Augen oder welchen mit mehr Erfahrung dürfte der Code bestimmt auch wieder anders aussehen 😇
Ich freu mich auf eure Kritik & Lg
ich habe ein kleines Programm geschrieben & würde Euch gerne um Eure Rückmeldungen bitten unter anderem zu:
- Welche Stellen könnten optimiert werden & wie hätten Sie besser gelöst werden können?
- Was ist unübersichtlich geworden?
- Was hätte ich besser machen können? (Stil, unnötiger Code, Fehler, alles andere was euch noch an Kritik einfällt etc etc)
- Was ist gut gelungen & sollte beibehalten werden & was auf jeden Fall schnell vergessen werden?
Meine Aufgabenstellung lautete:
Ratespiel:
Das Spiel umfasst ein Ratespiel-Objekt und eine beliebige Anzahl an Spielern. Das Spiel generiert eine Zufallszahl zwischen 0 und 9, und die Spieler versuchen, diese Zahl zu erraten. (Klar, ich weiß - ist nicht sonderlich spannend😅)
Klassen:
Ratespiel.class
Spieler.class
SpielStarter.class
Logik:
1)Die Klasse SpielStarter ist die Klasse, mit der die Anwendung beginnt. Sie hat die main()- Methode.
2) ln der main()-Methode wird ein Ratespiel-Objekt erzeugt und seine starteSpiel()-Methode aufgerufen.
3) in der starteSpiel()-Methode des Ratespiel-Objekts wird das vollständige Spiel abgewickelt. Sie »denkt<< sich eine Zufallszahl aus (das von den Spielern zu erratende Ziel). Dann fordert sie jeden Spieler auf zu raten, prüft die Ergebnisse und gibt dann entweder Informationen zu dem/den erfolgreichen Spieler(n) aus oder fordert sie auf, erneut zu raten.
Meine Lösung:
[CODE lang="java" title="Ratespiel.java"]import java.util.*;
public class Ratespiel {
public void starteSpiel() {
//Spieler anlegen
Spieler spieler = new Spieler();
spieler.SpielerAnlegen();
//Formatierung
System.out.println();
System.out.println("Spiel startet jetzt!");
System.out.println();
//Zufallszahl Intervall festlegen
int max = 9;
int min = 0;
int range = max - min + 1;
boolean RichtigeAntwortVorhanden = false;
do {
//Zufallszahl erzeugen im oben festgelegten Intervall
int rand = 0;
for (int i = 0; i < 10; i++) {
rand = (int)(Math.random()*range) + min;
}
//alt get
//System.out.println("Alle " + Spieler.getSpielerAnzahl() + " Spieler suchen sich jetzt eine Zahl aus:");
System.out.println("Alle " + Spieler.getSpielerAnzahlAlternativ() + " Spieler suchen sich jetzt eine Zahl aus:");
//Speichere SpielerAnzahl in Variable um in for Schleife darauf zugreifen zu können
int SpielerAnzahl = Spieler.getSpielerAnzahlAlternativ();
//LEge ArrayListe an, um eingegebene Spielerzahlen abzuspeichern
ArrayList<Integer> SpielerZahlenListe = new ArrayList<Integer>();
//Frage nach den Zahlen und speichere in der ArrayList
for (int i = 1; i <= SpielerAnzahl; i++) {
System.out.println("Spieler " + i + " such dir eine Zahl zwischen 0 und 9 aus!");
Scanner gewaehlteZahl = new Scanner(System.in);
SpielerZahlenListe.add(gewaehlteZahl.nextInt());
}
System.out.println("____________________________________");
//Prüfen welche Spieler richtig lagen
for (int i = 0; i < SpielerAnzahl; i++) {
int Spielernummer = i+1;
if (SpielerZahlenListe.get(i) == rand) {
System.out.println("Spieler " + Spielernummer + " lag richtig & hat gewonnen!");
RichtigeAntwortVorhanden = true;
}
else {
System.out.println("Spieler " + Spielernummer + " hat leider nicht richtig geraten...");
}
}
System.out.println("Die richtige Zahl lautete: " + rand);
if (RichtigeAntwortVorhanden == false) {
System.out.println("__________________DURCHGANG BEENDET______________");
System.out.println("Kein Spieler hat richtig geraten! Ihr dürft noch einmal raten!");
System.out.println("Nächster Durchgang beginnt:");
}
} while (RichtigeAntwortVorhanden == false);
}
}[/CODE]
[CODE lang="java" title="Spieler.java"]import java.util.*;
public class Spieler {
//Alternativ get
//public static int SpielerAnzahl;
public static int anzahlSpielerAusUserInput;
public void SpielerAnlegen() {
//Einlesen der Spielerzahl
Scanner anzahlSpieler = new Scanner(System.in);
System.out.println("Wie viele Spieler seid Ihr? Bitte gebt die Zahl der Mitspieler ein!");
anzahlSpielerAusUserInput = anzahlSpieler.nextInt(); //Schreibe userinput in variable anzahlSpielerAusUserInput
if (anzahlSpielerAusUserInput > 0) {
System.out.println("Spiel mit " + anzahlSpielerAusUserInput + " Spielern(n) wird erstellt!");
//Erstelle ArrayListe mit eingegebenen Spielern und gib jedem Spieler eine Nummer angefangen bei 1 & endend bei Spielernr. aus UserInput
ArrayList<Integer> SpielerArray = new ArrayList<Integer>();
for (int i=1; i<=anzahlSpielerAusUserInput; i++) {
SpielerArray.add(i);
//alt. get
//SpielerAnzahl++;
}
//Ausgabe der erstellten Spieler aus der ArrayListe mit dem ListIterator (mehr zur Überprüfung, das auch alle Spieler korrekt erstellt wurden sind)
ListIterator<Integer> li = SpielerArray.listIterator();
while(li.hasNext()) {
System.out.println("Spieler Nummer " + li.next() + " erfolgreich erstellt.");
}
}
//Wenn Spieleranzahl nicht 0 ist, PRogramm abbrechen
else {
System.out.println("Spieleranzahl muss größer 0 sein!");
System.exit(0);
}
}
//alt get
/*public static int getSpielerAnzahl() {
return SpielerAnzahl;
}*/
public static int getSpielerAnzahlAlternativ() {
return anzahlSpielerAusUserInput;
}
}[/CODE]
[CODE lang="java" title="SpielStarter.java"]public class SpielStarter {
public static void main(String[] main) {
Ratespiel ratespiel = new Ratespiel();
ratespiel.starteSpiel();
}
}[/CODE]
Ich weiß es ist schon ein wenig mehr Code und klar das Programm läuft, wäre euch aber dennoch wie gesagt sehr dankbar für das oben genannte Feedback.
Aus anderen Augen oder welchen mit mehr Erfahrung dürfte der Code bestimmt auch wieder anders aussehen 😇
Ich freu mich auf eure Kritik & Lg