Spiel programmieren

Diskutiere Spiel programmieren im Java Basics - Anfänger-Themen Bereich.
J

Javlipse

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?
 
S

spike86

Bin selber blutiger Anfänger, aber würde man in dem Fall nicht einfach Spieleranzahl als Array setzen und dann über den Array Index wieder aufrufen?
 
MoxxiManagarm

MoxxiManagarm

Java:
int spielerzahl = 5;
int aktuellerSpieler = 1;
int spielrunden = 88;

for (int i = 1; i <=spielrunden; i++) {
    System.out.println("Spieler " + aktuellerSpieler + " ist dran.");
    aktuellerSpieler = (aktuellerSpieler % spielerzahl) + 1;
}
 
J

Javlipse

Java:
int spielerzahl = 5;
int aktuellerSpieler = 1;
int spielrunden = 88;

for (int i = 1; i <=spielrunden; i++) {
    System.out.println("Spieler " + aktuellerSpieler + " ist dran.");
    aktuellerSpieler = (aktuellerSpieler % spielerzahl) + 1;
}


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."
 
MoxxiManagarm

MoxxiManagarm

Danke, aber was haben die spielrunden damit zu tun?
Nichts, ich wollte für mein Beispiel einfach eine gewisse Wiederholung reinbringen.

Es ist ähnlich wie blackjack. Jeder spieler ist einmal dran
Das kam oben halt nicht raus, dann reicht doch eine einfache for-Schleife

Java:
for (int spieler = 1; spieler <= spielerzahl; spieler++) {
  System.out.println("Spieler " + spieler + " ist dran.");
  // spiele mit dem Spieler
}
 
J

Javlipse

Nichts, ich wollte für mein Beispiel einfach eine gewisse Wiederholung reinbringen.


Das kam oben halt nicht raus, dann reicht doch eine einfache for-Schleife

Java:
for (int spieler = 1; spieler <= spielerzahl; spieler++) {
  System.out.println("Spieler " + spieler + " ist dran.");
  // spiele mit dem Spieler
}

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
 
Zuletzt bearbeitet:
mihe7

mihe7

Wie wärs mit
Java:
public void beendeZug() {
    aktuellerSpieler = aktuellerSpieler % spieleranzahl + 1;
    System.out.println("Spieler " + aktuellerSpieler + " ist dran");
}
 
MoxxiManagarm

MoxxiManagarm

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
Dann zeig doch mal wie dein Code aussieht, aktuell ist das ganze eher Rätselraten
 
J

Javlipse

Dann zeig doch mal wie dein Code aussieht, aktuell ist das ganze eher Rätselraten

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
 
J

Javlipse

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
 
J

Javlipse

[to] draw ist ein irreguläres Verb und die simple past Form ist nicht "drawed" sondern "drew". Also draw, drew, drawn.
[/QUOTE]

Oh mist stimmt, das wäre peinlich gewesen :D
 
MoxxiManagarm

MoxxiManagarm

Java:
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:
final int 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);
}
 
J

Javlipse

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...
 
Zuletzt bearbeitet:
T

temi

Damit zieht ja jeder spieler immer die gleiche Zahl, weil w ja nur einmal generiert wird, also wird das spiel immer unentschieden ausgehen....
Ein wenig Arbeit soll ja noch für dich übrig bleiben. Hier bekommst du i.d.R. nur Beispiele, die Umsetzung muss dann von dir kommen.

Abgesehen davon: Es handelt sich um eine Schleife, d.h. jeder Player bekommt seine eigene Zufallszahl ;)
 
J

Javlipse

Ein wenig Arbeit soll ja noch für dich übrig bleiben. Hier bekommst du i.d.R. nur Beispiele, die Umsetzung muss dann von dir kommen.

Abgesehen davon: Es handelt sich um eine Schleife, d.h. jeder Player bekommt seine eigene Zufallszahl ;)
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
 
T

temi

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.
 
Thema: 

Spiel programmieren

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben