Ich habe deinen Code jetzt mal in den vorherigen Beiträgen in einen CODE Block gepackt, beim nächsten mal bitte entsprechenden Quelltext in einen Code block schreiben, hierzu einfach auf die drei Punkte neben dem Smiley klicken und dann "</> Code" auswählen.
Deinen Code habe ich nun als Basis genommen und meinen Algorithmus mit integriert, an sich müsste es so jetzt ohne weiteres laufen.
Eine Garantie kann ich nicht geben, da ich nicht weiß ob die Arrays so richtig angelegt wurden.
Die meisten Anpassungen sind entsprechend kommentiert.
An sich sollte diese Aufgabe aber zu erledigen sein, wenn man die entsprechenden Veranstaltungen an der Uni aufmerksam verfolgt hat.
Java:
public class Macao3 {
public static void main(String[] args)
{
final int numberOfPlayers;
int wurf;
// String y = "y"; sollte nicht notwenig sein, siehe Anpassung Zeile 36
String eingabe;
Scanner sc = new Scanner(System.in);
System.out.println("Bitte Spielerzahl eingeben");
numberOfPlayers = sc.nextInt();
//int[] points = new int[numberOfPlayers + 1];
int[] points = new int[numberOfPlayers]; // Spart uns ein Element und damit Speicher
System.out.println("Pointslänge: " + points.length);
//for (int i = 1; i < numberOfPlayers + 1; i++)
for(int i = 0; i < numberOfPlayers; i++) // Wir beginnen beim ersten Element, welches auf Position 0 ist
{
points[i] = 0; // Wir initialsieren die Punkte des aktuellen Spielers mit 0, denn er hat ja noch keine
System.out.println("NEXT TURN: Spieler: " + (i+1); // Der richtige Spielername ist immer i+1
wurf = (int) (Math.random() * 6 + 1);
System.out.print("Würfelwurf: " + wurf + " ");
points[i] += wurf;
System.out.println("Points" + (i+1) + ": " + points); // Ich vermute mal hier soll die Spielernummer hin
System.out.println("Nochmal würfel?");
eingabe = sc.next();
// while (eingabe.equals(y))
while (eingabe.equals("y")) // Sollte auch Funktionieren.
{
System.out.println("NEXT TURN: Spieler: " + (i+1); // Spielernummer ist i+1
wurf = (int) (Math.random() * 6 + 1);
System.out.print("Würfelwurf: " + wurf + " ");
points[i] += wurf;
System.out.println("Summe: " + points[i]);
if (points[i] > 9)
{
System.out.println("Verloren!");
break;
}
System.out.println("Nochmal würfel?");
eingabe = sc.next();
continue;
}
System.out.println("Finale Summe: " + points[i]);
}
//int o = 1;
//int k = 2;
// Anpassung des C++ Codes von mir, Arryinitialisierung wurde von oben übernommen und nicht geprüft
int maxPoints = 0;
int maxPosition = 0;
bool[] winner = new bool[numberOfPlayers];
for(int i = 0; i < numberOfPlayers; i++)
{
winner[i] = true;
}
// Zu erst ist jeder ein Potenzieller gewinner, jeder der nicht gewonnen hat ist nach der Schleife auf "false" gesetzt.
for(int i = 0; i < numberOfPlayers; i++)
{
if(points[i] > 9)
{
winner[i] = false;
}
else if(ponits[i] < maxPoints)
{
winner[i] = false;
}
else if(points[i] > maxPoints)
{
maxPoints = points[i];
i = 0;
}
}
for(int i = 0; i < numberOfPlayers; i++)
{
if(winner[i]) // Wenn False passiert nichts, wenn true wird in die If Anweisung herein gegangen
{
System.out.println("Spieler" + (i+1) + " hat gewonnen mit: " + points[i]); // Spielernummer i+1 aber die dazu gehöriigen Punkte sind i
}
sc.close();
}
}
Sollte es noch Probleme geben, melde dich einfach noch mal, es kann sein, dass irgendwo ein Tippfehler drin ist, der sollte aber mit der Compilerausgabe schnell zu finden und zu beheben sein.