Hallo, ich versuche mich gerade an einem ganz simplen Spiel, jedoch stehe ich vor einem Problem:
ich möchte die Spieleranzahl über ein final int spieleranzahl = *hier spieleranzahl einfügen";
Dann möchte ich jedoch alle Spieler voneinander differenzieren, sodass ich Spieler1 bis Spieler*n* auflisten kann.
Bzw zu beginn jedes Zuges eines Spielers möchte ich in die Konsole schreiben: "Spieler*n* ist am Zug"
Wie mache ich das?
Danke, aber was haben die spielrunden damit zu tun? Es ist ähnlich wie blackjack. Jeder spieler ist einmal dran und darf so lange ziehen, bis er nicht mehr will, dann ist der Nächste dran... Soll heißen die Konsole gibt aus:
"Spieler 1 ist dran"
"Spieler 1 hat 7 gezogen"
"Spieler 1 hat 10 gezogen"
"Spieler 1 hat 17"
"Spieler 2 ist dran."
Alles klar, vielen dank dir!!
Problem ist, dass ich da in der Konsole stehen habe:
Spieler 1 ist dran
Spieler 1 hat eine 6 gezogen
Spieler 2 ist dran
Spieler 1 hat eine 6 gezogen
Spieler 3 ist dran
Spieler 1 hat eine 6 gezogen
Alles klar, vielen dank dir!!
Problem ist, dass ich da in der Konsole stehen habe:
Spieler 1 ist dran
Spieler 1 hat eine 6 gezogen
Spieler 2 ist dran
Spieler 1 hat eine 6 gezogen
Spieler 3 ist dran
Spieler 1 hat eine 6 gezogen
public class TestSpiel {
public static void main(String[] args) {
final int numberOfPlayers = 3;
// int player = 1;
int w = (int)(Math.random() *10 + 1);
for (int player = 1; player <= numberOfPlayers; player++) {
System.out.println("NEXT TURN: Player " + player);
System.out.println("Player 1 drawed a " + w + "Score: " + w);
}
}
}
Ich bin absolut Blutiger anfänger, also verurteilt mich für nichts
Grundsätzlich würde ich am liebsten alles mit schleifen machen, damit ich auch meinen eigenen Code verstehe...
also
if (player <= numberOfPlayers) {
// sysout Satz
dann einen
while (score <= 18)
// schleife, dass man so lange zieht bis man bei 18 ist (sicherheitsabbstand) zu 21 (vorerst entscheidet der Computer wie lange man zieht)
// hier kommt das Script, dass mit einer Math.random eine Zahl festlegt diese wird per sysout ausgegeben dann mit der nächsten Math.random generierten zahl addiert und der neue Score als sysout ausgegeben. bis man bei 18 ist, wenn man dabei über 21 kam kommt player*n* Lost. sonst gewinnt der spieler, der am nähsten an 21 ist und es kommt player*n* won
System.out.println("Player 1 drawed a "+ w +"Score: "+ w);
Hier schreibst du die 1 halt fest rein. Statt der 1 muss hier player rein. Und du musst die einen neuen Random Wert holen. Also so:
Java:
finalint numberOfPlayers =3;for(int player =1; player <= numberOfPlayers; player++){System.out.println("NEXT TURN: Player "+ player);int w =(int)(Math.random()*10+1);System.out.println("Player "+ player +" drawed a "+ w +"Score: "+ w);}
Okay, das funktioniert soweit, wie bringe ich jetzt aber den Code dazu bei jedem Spieler w so lange zu addieren, bis mind 18 rauskommt?
Also ich denke ich muss den w Wert aufaddiert in einem neuen int score speichern und mit einer while schleife dafür sorgen, dass bei 18 aufgehört wird. dann muss ich den jeweiligen score Wert einem player zuordnen und überprüfen ob einer über 21 ist. von den restlichen muss ich überprüfen welcher am nähesten an 21 ist...
hab ich bemerkt, hatte bei meinem code den w Wert vor der schleife generieren lassen hab den jetzt in die schleife gezogen...
also ich gehe davon aus, dass ich alles in der for schleife weiterschreiben muss, außer das Ende, wo ausgewertet wird, wer gewonnen / verloren hat
Die gezeigte Schleife handelt die einzelnen Spieler ab. In dieser brauchst du noch mindestens eine weitere Schleife, in der jeder einzelne Spieler seine Züge macht, bis er nicht mehr möchte. Du solltest allerdings mal drüber nachdenken, das in einer separaten Methode zu machen, damit das nicht zu unübersichtlich wird.