Java: Wie kann ich die maximale und minimale Augenzahl erkennen?

2 Antworten

Die Zahlen die gewürfelt wurden stehen doch in Spieler1 und Spieler2.

Also sowas wie

if (Spieler1 > Spieler2) {
	Spieler1_Punkte++;
} else if (Spieler2 > Spieler1) {
	Spieler2_Punkte++;
}

Dein ganzer Aufbau sieht aber schon etwas komisch aus. Wenn du nur eine Variable für die Punktzahl hast, woher weißt du dann, welcher Spieler zu erst 5 Punkte hat?

Und du wirst ja auch mindestens 5 Runden spielen müssen, also wirst du auch mindestens 5 mal würfeln müssen, daher sollte doch in der Schleife gewürfelt werden, oder? Also eher Richtung:

import java.util.Random;
public class Wuerfelspiel {
	public static void main(String args[]) {
		Random  r = new Random();
		int s1_Punkte=0;
		int s2_Punkte=0;
		int s1;
		int s2;
		while (s1_Punkte<5 && s2_Punkte<5) {
			s1 = r.nextInt(6)+1;
			s2 = r.nextInt(6)+1;
			if (s1 > s2) {
				s1_Punkte++;
			} else if (s2 > s1) {
				s2_Punkte++;
			}
		}
		if (s1_Punkte > s2_Punkte) {
			System.out.println("Spieler 1 gewinnt mit " + s1_Punkte + ":" + s2_Punkte + " Punkten!");
		} else {
			System.out.println("Spieler 2 gewinnt mit " + s2_Punkte + ":" + s1_Punkte + " Punkten!");
		}
	}
}
Fitness34 
Fragesteller
 02.03.2022, 12:25

kann ich int maxPunkte=5;

festlegen um die maximale Punktzahl zu bestimmen

0
Fitness34 
Fragesteller
 02.03.2022, 12:26
@Fitness34

und ich verstehe auch nicht warum in der while schleife ein && zu sehen ist , dann würden ja beide gewinnen, könnte man es nicht mit ein oder machen?

0
Fitness34 
Fragesteller
 02.03.2022, 12:28
@Fitness34

also so meine ich das, s1_Punkte | s2_Punkte == maxPunkte

0
GuteAntwort2021  02.03.2022, 12:28
@Fitness34

Nein.

while (s1_Punkte<maxPunkte && s2_Punkte<maxPunkte)

bedeutet im Grunde:

Führe die Schleife erneut aus, wenn Spieler1 weniger als maxPunkte hat UND Spieler2 weniger als maxPunkte hat.
0
GuteAntwort2021  02.03.2022, 12:30
@Fitness34
also so meine ich das, s1_Punkte | s2_Punkte == maxPunkte

Das wäre dann eher eine Abbruchbedingung. Geht natürlich auch, dann setzt du den Schleifenkopf auf true und bringst eine Abbruchbedingung in der Schleife unter. Also zum Beispiel:

while (true) {
	s1 = r.nextInt(6)+1;
	s2 = r.nextInt(6)+1;
	if (s1 > s2) {
		s1_Punkte++;
	} else if (s2 > s1) {
		s2_Punkte++;
	}
	if (s1_Punkte == maxPunkte || s2_Punkte == maxPunkte) {
		break;
	}
}
0
Fitness34 
Fragesteller
 02.03.2022, 12:33
@GuteAntwort2021

wie kann ich das mit der gleichen augenzahl einbringen , wenn da steht das keiner punkte bekommt wenn beider die gleiche Augenzahl haben?

0
GuteAntwort2021  02.03.2022, 12:37
@Fitness34

Oha, man merkt, dass du wirklich gar nichts verstehst. ;-)

Das brauchst du nicht zu berücksichtigen. Du musst dem Computer nur Anweisungen geben, wenn er etwas machen soll. Etwas abzufragen, wo dann nichts geschehen soll, ist doch unnötig.

Stell dir vor, du spielst das Spiel mit deinem Kumpel. Ihr beide habt einen Würfel und du bist Schriftführer und schreibst die Punkte auf. Wenn ihr beide die gleiche Augenzahl gewürfelt habt, was schreibst du dann auf?

Na gar nichts! Genau das gleiche gilt auch für den Computer. Er gibt Spieler 1 einen Punkt, wenn seine Zahl höher war, oder Spieler 2 einen Punkt, wenn dessen Zahl höher war. Sind beide Zahlen gleich, macht er einfach gar nichts. Es bekommt also keiner einen Punkt. Das braucht man aber nicht extra berücksichtigen...

0
Fitness34 
Fragesteller
 02.03.2022, 12:39
@GuteAntwort2021

ich bin noch ein anfänger ich habe vor 3 Tagen angefangen mich damit zu beschäftigen

0

Das ganze machst du mit if-Verzweigungen. Zudem brauchst du für beide Spieler eine Variable für die Punkte. Bei der While-Schleife ist auch nen Fehler, du müsstest dort abfragen, ob ein Spieler den Gewünschten Punktestand erreicht hat, oder das mit einer if-Verzweigung in der While-Schleife abfragen und dann mit einem Break beenden. Kann dir leider kein Code-Beispiel senden, da ich diese Nachricht am Handy verfasse..

Wenn du ein wenig nachdenkst und dir ggf. nen Tutorial auf YouTube anschaust, klappt das schon. Such einfach mal „Java if statements“

Woher ich das weiß:eigene Erfahrung