Hi Leute!
Ich habe hier eine Übungsaufgabe in dem ich ein Kartenspiel programmieren soll ... was ich auch getan habe nun möchte ich aber eine methode schreiben die mein Array mit den Kartenobjekten soriteirt und das sollte möglichst mit compareTo geschehen hab aber leider keine ahnung wie das funzen soll
mein code sieht folgendermaßen aus :
zu erst die Klasse Karte :
Alles anzeigen
2.ten die Klasse Kartenspiel: (hier sind sämtliche funktionen )
Alles anzeigen
3ten: Die Klasse Kartetest (main methode)
Alles anzeigen
1.Frage: was muss ich in der Klasse Karte in der Singnatur compareTo übergeben ???.... farbwert ist aufjeden fall falsch so wie ich das mitbekommen habe:(
2. Frage: wie muss ich das genau mit der if schleife und dem vergleichen aufbauen ist mein ansatz wenigst schon in der richtigen richtung ????
3. Frage: wie bring ich nun Array.sort() daszu das Array nach der Ordnungswerten die ich festgelegt habe zu sortieren also wie muss ich die übergeben ????
4. Frage: wie rufe ich Array.sort() in der Main auf
5. Frage: sind noch andere Fehler zu endecken die verbessert werden müssten ?
6. Frage: Vieleicht kann mir noch jemand einen kurzen ansatz für aufgabe e zeigen ?
Aufgabenstellung:
Karten in diesem Spiel haben die Farben „kreuz“, „pik“, „herz“ ,„karo“
sowie die Kartenwerte: „7“, „8“, „9“, „10“, „bauer“, „dame“, „koenig“ , „ass“.
a. Implementieren Sie eine Klasse Karte, die die Karten des Kartenspiels
repräsentieren kann. Dazu definieren Sie
- einen Konstruktor Karte (Farbe f, Wert w), wobei Farbe und
Wert die jeweiligen Werte als enum definieren
- eine toString Methode
b. Implementieren Sie eine Klasse Kartenspiel, die aus Karten besteht. Dazu
definieren Sie
- einen Konstruktor Kartenspiel(int n), wobei n die Anzahl der Karten
in diesem Kartenspiel definiert
- eine toString Methode
c. Ergänzen Sie Kartenspiel um eine Methode void mischen(), die die
Karten des Kartenspiels zufällig mischt. Verwenden Sie hierzu die bekannte
Klasse Math.random.
d. Ergänzen Sie das Kartenspiel um eine Methode void sort(), die die Karten
des Kartenspiels sortiert. Verwenden Sie dazu Arrays.sort.
Lösungshinweis: Damit Karten sich sortieren lassen, müssen Sie eine
Ordnung für Karten definieren. Sie müssen also für Karten die compareTo
Methode implementieren. Die Ordnung für Karten ist nur über die Farben
definiert (die Werte können Sie ignorieren): Karo < Herz < Pik < Kreuz.
Tipp: Um enum werte zu vergleichen, machen Sie sich mit der Methode
ordinal() für enums vertraut.
e. Ergänzen Sie das Kartenspiel um eine Methode
kartenspielHinzufuegen(Kartenspiel neu), mit der neue Karten
dem Kartenspiel hinzugefügt werden. Verwenden Sie hierzu die Methode
Systems.arraycopy.
Vielen Dank schonmal im Vorraus.... GreetZ....the.old.Pirate ;)
Ich habe hier eine Übungsaufgabe in dem ich ein Kartenspiel programmieren soll ... was ich auch getan habe nun möchte ich aber eine methode schreiben die mein Array mit den Kartenobjekten soriteirt und das sollte möglichst mit compareTo geschehen hab aber leider keine ahnung wie das funzen soll

zu erst die Klasse Karte :
Quellcode
- [/code
- public class Karte {
- public enum Farbe{
- KREUZ(3),
- PIK(2),
- KARO(0),
- HERZ(1);
- private int farbewert;
- private Farbe(int ordnungswert) // constructor zum übergeben des Ordnungswertes
- {
- farbewert=ordnungswert;
- }
- }
- //declaration of new Datatype und zuweisung von Ordnungswerten
- enum Wert {
- SIEBEN,
- ACHT,
- NEUN ,
- ZEHN,
- BUBE,
- DAME,
- KOENIG,
- ASS;
- }
- private Farbe farbe; //Instanzvariabel
- private Wert wert;
- public Karte (Farbe f, Wert w){ // Constructor
- this.farbe = f;
- this.wert= w;
- }
- public int compareTo( int farbewert){
- if (this.farbe.ordinal()==this.farbe.ordinal()){
- return 0;
- }
- if (this.farbe.ordinal()<this.farbe.ordinal()){
- return 1;
- }
- if (this.farbe.ordinal()>this.farbe.ordinal()){
- return -1;
- }
- }
- public String toString(){ // String Method
- return " " + this.farbe.toString() + " " +this.wert.toString();
- }
- }
2.ten die Klasse Kartenspiel: (hier sind sämtliche funktionen )
Quellcode
- public class Kartenspiel {
- Karte[] karte; //deklaration Array
- //String ausgabe="";
- public Kartenspiel(int n){ //Constructor
- karte = new Karte[n]; //initalisirung Array mit n Plätzen
- for(int i=0; i<n;i++){ //Schleife schreibt Objekte in Array
- int ranfarbe=(int)(Math.random() *4); //erzeugen von Zufallszahlen die für Farben stehen
- int ranwert=(int)(Math.random() *8); //erzeugen von Zufallszahlen die für Werte stehen
- karte[i]= new Karte(Karte.Farbe.values()[ranfarbe] , Karte.Wert.values()[ranwert]);
- //erzeuge an nter stelle Objekt Karte in Array (Karte.Farbe.usw Pfadangabe)
- //ausgabe+=karte[i].toString()+"\n";
- }
- }
- public String toString(){ //String Method
- String rückgabe = "";
- for( int i=0; i<karte.length; i++){
- rückgabe += karte[i].toString()+"\n";
- }
- return ""+rückgabe;
- }
- public void mischen(){
- Karte temp;
- for (int i=0; i<karte.length*10;i++){
- int karteran=(int)(Math.random()*karte.length);
- int stelleran=(int)(Math.random()*karte.length);
- temp=karte[karteran];
- karte[karteran]=karte[stelleran];
- karte[karteran]= temp;
- }
- }
- }
3ten: Die Klasse Kartetest (main methode)
Quellcode
1.Frage: was muss ich in der Klasse Karte in der Singnatur compareTo übergeben ???.... farbwert ist aufjeden fall falsch so wie ich das mitbekommen habe:(
2. Frage: wie muss ich das genau mit der if schleife und dem vergleichen aufbauen ist mein ansatz wenigst schon in der richtigen richtung ????
3. Frage: wie bring ich nun Array.sort() daszu das Array nach der Ordnungswerten die ich festgelegt habe zu sortieren also wie muss ich die übergeben ????
4. Frage: wie rufe ich Array.sort() in der Main auf
5. Frage: sind noch andere Fehler zu endecken die verbessert werden müssten ?
6. Frage: Vieleicht kann mir noch jemand einen kurzen ansatz für aufgabe e zeigen ?
Aufgabenstellung:
Karten in diesem Spiel haben die Farben „kreuz“, „pik“, „herz“ ,„karo“
sowie die Kartenwerte: „7“, „8“, „9“, „10“, „bauer“, „dame“, „koenig“ , „ass“.
a. Implementieren Sie eine Klasse Karte, die die Karten des Kartenspiels
repräsentieren kann. Dazu definieren Sie
- einen Konstruktor Karte (Farbe f, Wert w), wobei Farbe und
Wert die jeweiligen Werte als enum definieren
- eine toString Methode
b. Implementieren Sie eine Klasse Kartenspiel, die aus Karten besteht. Dazu
definieren Sie
- einen Konstruktor Kartenspiel(int n), wobei n die Anzahl der Karten
in diesem Kartenspiel definiert
- eine toString Methode
c. Ergänzen Sie Kartenspiel um eine Methode void mischen(), die die
Karten des Kartenspiels zufällig mischt. Verwenden Sie hierzu die bekannte
Klasse Math.random.
d. Ergänzen Sie das Kartenspiel um eine Methode void sort(), die die Karten
des Kartenspiels sortiert. Verwenden Sie dazu Arrays.sort.
Lösungshinweis: Damit Karten sich sortieren lassen, müssen Sie eine
Ordnung für Karten definieren. Sie müssen also für Karten die compareTo
Methode implementieren. Die Ordnung für Karten ist nur über die Farben
definiert (die Werte können Sie ignorieren): Karo < Herz < Pik < Kreuz.
Tipp: Um enum werte zu vergleichen, machen Sie sich mit der Methode
ordinal() für enums vertraut.
e. Ergänzen Sie das Kartenspiel um eine Methode
kartenspielHinzufuegen(Kartenspiel neu), mit der neue Karten
dem Kartenspiel hinzugefügt werden. Verwenden Sie hierzu die Methode
Systems.arraycopy.
Vielen Dank schonmal im Vorraus.... GreetZ....the.old.Pirate ;)
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von the_old_Pirate ()