B
br3nn3r
Gast
Also wir sollen folgendes Spiel programmieren:
Die allgemeinen Spielregeln:
Hierbei handelt es sich um eine ganz einfache Variante des Spiels "Leben und Tod". Das
Spiel wird mit zwei Spielern gespielt. Jeder der Spieler erhält einen Kartenstapel, indem ein
Kartenspiel ausgeteilt wird. Von diesen Stapeln wird jeweils die oberste Karte gezogen und
mit der Karte des Gegners verglichen. Der Spieler mit der höheren Karte erhält beide Karten,
die er auf einen Ablagestapel legt. Die Reihenfolge der Karten ist: 7, 8, 9, 10, B, D, K, As. Bei
gleichem Wert entscheidet die Farbe, hier gilt: Karo, Herz, Pik, Kreuz. Ist ein Kartenstapel zu
Ende, wird mit dem Ablagestapel weitergespielt. Das Spiel ist nach einer festgelegten Anzahl
von Runden (oder wenn ein Spieler keine Karten mehr hat) zu Ende. Gewonnen hat der
Spieler, der am Ende mehr Karten besitzt.
Die Realisierung am Computer:
Es spielen Computer und Spieler gegeneinander. Es gibt keine Strategie, sondern das Spiel
läuft nach dem Geben der Karten voll deterministisch ab. Deshalb kann per
Computerprogramm schnell entschieden werden, wer das Spiel gewinnt. Damit Sie trotzdem
den Spielverlauf verfolgen können, sollte eine geeignete Ausgabe erfolgen (z.B. jeweils die
beiden gezogenen Karten) und jeder Spielzug mittels Drücken der Enter-Taste so verzögert
werden, dass am Bildschirm der Spielverlauf nachvollzogen werden kann.
Hab mich schon ein wenig umgeschaut und bin jetzt soweit das ich den Kartenstapel und das Mischen hinbekommen habe das sieht bei mir folgendermaßen aus:
kann man das soweit machen?
meine Frage ist jetzt wie schaff ich jetzt das die gemischten karten in zwei stapel aufgeteilt werden? damit ich sie dann miteinander vergleichen kann?
danke schonmal
Die allgemeinen Spielregeln:
Hierbei handelt es sich um eine ganz einfache Variante des Spiels "Leben und Tod". Das
Spiel wird mit zwei Spielern gespielt. Jeder der Spieler erhält einen Kartenstapel, indem ein
Kartenspiel ausgeteilt wird. Von diesen Stapeln wird jeweils die oberste Karte gezogen und
mit der Karte des Gegners verglichen. Der Spieler mit der höheren Karte erhält beide Karten,
die er auf einen Ablagestapel legt. Die Reihenfolge der Karten ist: 7, 8, 9, 10, B, D, K, As. Bei
gleichem Wert entscheidet die Farbe, hier gilt: Karo, Herz, Pik, Kreuz. Ist ein Kartenstapel zu
Ende, wird mit dem Ablagestapel weitergespielt. Das Spiel ist nach einer festgelegten Anzahl
von Runden (oder wenn ein Spieler keine Karten mehr hat) zu Ende. Gewonnen hat der
Spieler, der am Ende mehr Karten besitzt.
Die Realisierung am Computer:
Es spielen Computer und Spieler gegeneinander. Es gibt keine Strategie, sondern das Spiel
läuft nach dem Geben der Karten voll deterministisch ab. Deshalb kann per
Computerprogramm schnell entschieden werden, wer das Spiel gewinnt. Damit Sie trotzdem
den Spielverlauf verfolgen können, sollte eine geeignete Ausgabe erfolgen (z.B. jeweils die
beiden gezogenen Karten) und jeder Spielzug mittels Drücken der Enter-Taste so verzögert
werden, dass am Bildschirm der Spielverlauf nachvollzogen werden kann.
Hab mich schon ein wenig umgeschaut und bin jetzt soweit das ich den Kartenstapel und das Mischen hinbekommen habe das sieht bei mir folgendermaßen aus:
Java:
class Karte
{
// Bewertung der Karten und Definition der Farben
public final static int KARO = 0, HERZ = 1, PIK = 2, KREUZ = 3;
public final static int BUBE = 11, DAME = 12, KOENIG = 13, ASS = 1;
private final int farbe, wert;
// Konstruktor
public Karte(int f, int w)
{
farbe = f;
wert = w;
}
// get-set-Funktionen
public int getFarbe()
{
return farbe;
}
public int getWert()
{
return wert;
}
// Karten-Methoden
public String Farbe2String()
{
switch (farbe) {
case KARO:
return "Karo";
case HERZ:
return "Herz";
case PIK:
return "Pik";
case KREUZ:
return "Kreuz";
}
System.out.println("Farbe falsch! : "+farbe);
return "-1";
}
public String Wert2String()
{
if ((wert>=2)&&(wert<=10))
return ""+wert;
switch (wert) {
case 1:
return "A";
case 11:
return "B";
case 12:
return "D";
case 13:
return "K";
}
return "-1";
}
public String Karte2String()
{
return Farbe2String() + "-" + Wert2String();
}
}
public class Kartenspiel
{
// 32er Kartenstapel (7-10,B,D,K,A für Karo, Herz, Pik und Kreuz)
private Karte[] stapel;
private int kartenImSpiel;
// Konstruktor
public Kartenspiel()
{
stapel = new Karte[32];
int zaehler = 0;
for (int f=0; f<4; f++ )
{
for (int w=1; w<7; w++ )
{
stapel[zaehler] = new Karte(f, w);
zaehler++;
}
}
mischen();
}
// KartenSpiel-Methoden
public void mischen()
{
Karte temp;
for (int i=31; i>0; i--)
{
int zuff = (int)(Math.random()*(i+1));
temp = stapel[i];
stapel[i] = stapel[zuff];
stapel[zuff] = temp;
}
kartenImSpiel = 32;
}
public int kartenAnzahl()
{
return kartenImSpiel;
}
public Karte gibEineKarte()
{
if (kartenImSpiel == 0)
mischen();
kartenImSpiel--;
return stapel[kartenImSpiel];
}
}
kann man das soweit machen?
meine Frage ist jetzt wie schaff ich jetzt das die gemischten karten in zwei stapel aufgeteilt werden? damit ich sie dann miteinander vergleichen kann?
danke schonmal