For a school project, i have to make a card game. The cards can have different types (Joker, PuntenKaart, KleurKaart). Each player has a hand with multiple different combinations of cards (obviously).
i have an abstract class Kaart (card), with 3 subclasses: Joker, KleurKaart (ColourCard), PuntenKaart (PointsCard). All subclasses have an attribute "type" (Joker, KleurKaart, PuntenKaart), but KleurKaart has a second attribute called kleur (colour).
Here's the question: how can I sort a player's hand alphabetically in this situation? Joker and PuntenKaart are easy, just compare type, but with KleurKaart, i'd first have to check if the given Kaart is an instance of KleurKaart and then compare other cards' type to kleur? i don't understand.
class Kaart
package domein;
public abstract class Kaart implements Comparable<Kaart>{
private String type;
public Kaart(String type){
this.type = type;
}
public String getType(){
return type;
}
@Override
public int compareTo(Kaart vergelijkingsKaart) {
return type.compareTo(vergelijkingsKaart.type);
}
@Override
public String toString(){
return this.type;
}
}
class Joker
package domein.kaarten;
import domein.Kaart;
public class Joker extends Kaart {
public Joker() {
super("JokerKaart");
}
}
class PuntenKaart
package domein.kaarten;
import domein.Kaart;
public class PuntenKaart extends Kaart {
public PuntenKaart() {
super("PuntenKaart");
}
}
class KleurKaart
package domein.kaarten;
import domein.Kaart;
public class KleurKaart extends Kaart {
private String kleur;
public KleurKaart(String kleur) {
super("KleurKaart");
this.kleur = kleur;
}
public String getKleur(){
return this.kleur;
}
@Override
public String toString(){
return this.kleur;
}
}