Jeg vil gerne fremhæve konstanterne for kortfarver og værdier (som ikke er numeriske).
Læg også mærke til de to private operationer som hjælper toString() med at præsentere et kort
på en pæn måde. I praksis ville vi nok ikke implementere ligMed, men derimod redefinere operationen equals.
Min udgave af klassen Spillekort ser således ud: Her er endvidere et link til det rene Java program . Et helt kortspil kan repræsenteres af klassen KortSpil, som endvidere indeholder et
hovedprogram der laver et spil kort: Bemærk at vi samler kortene op i et array af størrelse 52. Bemærk også hvor omstændeligt
det er at putte kortene ind i dette array (indeks beregninger). Vi vil senere i kurset møde
andre array-linenede klasser, som gør dette meget lettere - og mere elegant. Her er et link til det rene Java program af KortSpil . public class Spillekort{
// Farve konstanter:
public final static int RUDER = 0;
public final static int HJERTER = 1;
public final static int KLØR = 2;
public final static int SPAR = 3;
// Værdi konstanter:
public final static int KNÆGT = 11;
public final static int DRONNING = 12;
public final static int KONGE = 13;
public final static int ES = 1;
private int farve;
private int værdi;
Spillekort(int farve, int værdi){
this.farve = farve;
this.værdi = værdi;
}
private String værdiPræsentation(){
if (this.værdi == ES) return ("Es");
else if (this.værdi == KNÆGT) return ("Knægt");
else if (this.værdi == DRONNING) return ("Dronning");
else if (this.værdi == KONGE) return ("Konge");
else return (Integer.toString(værdi));
}
private String farvePræsentation(){
switch (this.farve) {
case RUDER: return("Ruder");
case HJERTER: return ("Hjerter");
case KLØR: return("Klør");
case SPAR: return("Spar");
default: return("???");
}
}
public String toString(){
return(farvePræsentation() + " " + værdiPræsentation());
}
public boolean ligMed(Spillekort andetKort){
return(this.farve == andetKort.farve && this.værdi == andetKort.værdi);
}
public boolean mindreEnd(Spillekort andetKort){
int thisReelVærdi = (this.værdi == 1) ? KONGE+1 : this.værdi;
int andetKortReelVærdi = (andetKort.værdi == 1) ? KONGE+1 : andetKort.værdi;
return(thisReelVærdi < andetKortReelVærdi);
}
public boolean størreEnd(Spillekort andetKort){
return !(this.ligMed(andetKort) || this.mindreEnd(andetKort));
}
}
public class KortSpil{
public Spillekort[] bunke = new Spillekort[52];
/* Lav et spil kort med 52 kort. */
public KortSpil(){
for(int f = Spillekort.RUDER; f <= Spillekort.SPAR; f++)
for (int v = 1; v <= Spillekort.KONGE; v++){
Spillekort kort = new Spillekort(f,v);
bunke[f*13+(v-1)] = kort;
}
}
/* Et hovedprogram som instantierer denne klasse og udskriver KortSpil objektets kort */
public static void main(String[] args){
KortSpil spil = new KortSpil();
for (int i = 0; i < 52; i++)
System.out.print(spil.bunke[i] + " ");
}
}