Hallo Community,
meine Gruppe und ich sollen in dem Programmierpraktikum der UNI das Spiel SET! nachbauen:
Das Kartenspiel SET
Bis jetzt ist auch alles schön und gut, aber hier nun das Problem:
Das Spiel besitzt einen Kartenstapel mit 81 Karten. Nun taucht aber folgende Eigenschaft auf (ich formuliere es mal umgangssprachlich:
stack.push(a): Aussehen des Stack: a
stack.push(b): Aussehen des Stack: bb
stack.push(c): Aussehen des Stack: ccc
Das heißt, beim ablegen einer neuen Karte nehmen alle vorhandenen Karte die Eigenschaft der neuen Karte an.
Hier nun der Quelltext:
Die Klasse Cardstack, also der Stapel von Karten im Spiel:
Die Karte
Und meine Hauptklasse:
meine Gruppe und ich sollen in dem Programmierpraktikum der UNI das Spiel SET! nachbauen:
Das Kartenspiel SET
Bis jetzt ist auch alles schön und gut, aber hier nun das Problem:
Das Spiel besitzt einen Kartenstapel mit 81 Karten. Nun taucht aber folgende Eigenschaft auf (ich formuliere es mal umgangssprachlich:
stack.push(a): Aussehen des Stack: a
stack.push(b): Aussehen des Stack: bb
stack.push(c): Aussehen des Stack: ccc
Das heißt, beim ablegen einer neuen Karte nehmen alle vorhandenen Karte die Eigenschaft der neuen Karte an.
Hier nun der Quelltext:
Die Klasse Cardstack, also der Stapel von Karten im Spiel:
Java:
package mitStapel;
import java.util.Stack;
public class CardstackS {
private Stack<Card> cStack; // Array zur Verwaltung der Karten
private int l; // l dient als Referenz auf die oberste Karte
public CardstackS(){
cStack = new Stack();
shuffle();
}
public void shuffle(){
int check [][][][] = new int [3][3][3][3];
for (int i=0; i<3; i++) // 4-dim Array mit je 3 Elementen zum Einzelnachweis,
for (int j=0; j<3; j++) // das jede mögliche Eigenschaft nur einmal vergeben wurde/wird
for (int k=0; k<3; k++)
for (int l=0; l<3; l++)
check[i][j][k][l]=0; // 0 = n.v. 1 = vorhanden
int n=0; // n als Zähler für die do{}while(); Schleife
do{
int a = (int)Math.round(Math.random()*2); // 4 Zufallszahlen für die Eigenschaften
int b = (int)Math.round(Math.random()*2);
int c = (int)Math.round(Math.random()*2);
int d = (int)Math.round(Math.random()*2);
if (check[a][b][c][d]==0){
cStack.push(new Card(a,b,c,d));
check[a][b][c][d]=1;
n++;
}
if (n==81){
System.out.println("Kartenstapel erfolgreich gemischt!");
}
}while (n<81);
}
public Card top(){
if (!cStack.isEmpty()){
return cStack.peek();
}
return null;
}
public void pop(){
cStack.pop();
}
Die Karte
Java:
package mitStapel;
public class Card{
private static int color, shape, number, inlay;
public Card(int c, int s, int n, int i){
color = c;
shape = s;
number = n;
inlay = i;
}
/****************SET*****************/
public static void setColor(int c){
color=c;
}
public static void setShape(int s){
shape=s;
}
public static void setNumber(int n){
number=n;
}
public static void setInlay(int i){
inlay=i;
}
/****************GET*****************/
public int getColor(){
return color;
}
public int getShape(){
return shape;
}
public int getNumber(){
return number;
}
public int getInlay(){
return inlay;
}
}
Und meine Hauptklasse:
Java:
package mitStapel;
import java.awt.Color;
public class GameS{
private Card c[]; //verwaltet die aktuellen Karten auf dem Feld
private CardstackS cs;
private int n;
public static void main (String[]args){
GameS g = new GameS();
g.cs = new CardstackS();
g.n = 12; //Anzahl der KArten am Anfang
g.c = new Card[21]; //21 sind die maximale Anzahl von Karten, damit ein Set vorliegen muss
for (int i=0; i<21; i++){
g.c[i] = g.cs.top();
g.cs.pop();
//System.out.println(i+". "+g.c[i].getColor()+ " " + g.c[i].getInlay()+ " " + g.c[i].getNumber()+ " " + g.c[i].getShape());
}
}
}