Kartenspiel (Karten)

B

Billabongo

Gast
Heii

Ich will gerade ein Kartenspiel programmieren. Dabei wollte ich die Karten in einer Klasse programmieren wobei die verschiedenen Karten Subklassen sein sollten, die Karten sollten sich eigentlich wie Button verhalten. Jedoch klappt das iwie nicht. Wäre froh wenn mir jemand helfen könnte.
Java:
class Karten extends JButton {

	public int sp;//Siegpunkte
	public int ap;//Aktionspunkte
	public int g;//Geld
	public int ko;//Kosten
	public int ka;//kauf

	private JButton b;
  
   public class Karten(int sp, int ap, int g, int ko, int ka, JButton b)  {
   setRolloverEnabled(true);
  
   JButton Karte1= new JButton();
   Karte1=b;
   ImageIcon bild1= new ImageIcon("C:\\Users\\Bill\\Documents\\MA\\karte11.jpg");
   ImageIcon bild2= new ImageIcon("C:\\Users\\Bill\\Documents\\MA\\karte12.jpg");
 
   Karte1.setToolTipText("hilfe");

   Karte1.setIcon(bild1);  
   Dimension d = new Dimension(bild1.getIconWidth(), bild1.getIconHeight());
   Karte1.setPreferredSize(d);
   Karte1.setRolloverIcon(bild2);
   
   Karte1.addActionListener(new ButtonLauscher());
   this.sp=1;
   this.ap=0;
   this.g=0;
   this.ko=2;
   this.ka=0; 

	}
  Karte1() extends Karten{
	  
  }
 
S

SlaterB

Gast
> Karte1=b;
die Variable Karte1 zeigt jetzt wie vorher b auf null?

> Karte1() extends Karten{
???
 

eRaaaa

Top Contributor
> Karte1=b;
die Variable Karte1 zeigt jetzt wie vorher b auf null?
b wird übergeben :D (Sinn machts dennoch nicht, wenn man überlegt das eine Zeile vorher eine Instanz in Karte1 abgelegt wird...)

Allerdings ist die Instanz(this) doch eh schon ein JButton (class Karten extends JButton ) ???:L

public class Karten(int sp, int ap, int g, int ko, int ka, JButton b)

was hat das
Code:
class
da zu suchen?
 
S

SlaterB

Gast
das Karten-Objekt ist ein Button,
ein zweiter wird übergeben,
ein dritter mit Karte1 noch erzeugt
und dann gibts noch b als Klassenattribut

wirklich eindeutig zu viele Buttons ;)
 
B

Billabongo

Gast
ja mhm... das ist einfach die letzte version, war verzweifelt und hab halt einfach rumprobiert. Also Karte 1 sollte halt eine subklasse von karten sein.
 
B

Billabongo

Gast
sorry für doppelpost, aber als Gast kann man ja nicht editieren. Hätte den jemand einen vorschlag, wie ich die Karten programmieren könnte, bzw wie ich das korrekt mit klassen und subklassen hinkriege?
 
S

SlaterB

Gast
der erste konkrete Vorschlag ist KEINE Subklasse zu verwenden, Karte ist gut und fertig
(übrigens immer Einzahl für Klassen verwenden, es heißt ja auch JButton und nicht JButtons..)

du hast vielleicht irgendwelche Vorstellungen, warum du Subklassen brauchst,
da du die aber verschweigst und niemand anders auf sowas kommst, kann auch keine Lösung genannt werden
 
B

Billabongo

Gast
niemand anders auf sowas kommst? meintest du kommt?
Egal, ich dachte mir halt, dass die Karten ja alle gewisse Gemeinsamkeiten aufweisen und somit von einer Hauptklasse erben könnten. Also ist dein Vorschlag ich soll für jede Karte eine eigene Klasse machen?
 
S

SlaterB

Gast
kommt, richtig,
ich weiß leider weiter nicht was dein Ziel ist, vielleicht bist du mit Subklassen wirklich gut dran

class Karte1 extends Karte {

}
 
B

Billabongo

Gast
oke tut mir leid, wenn ich mich nicht so klar ausdrücken konnte. Ich versuche es nochmals. Grundsätzlich gibt es im Kartenspiel 2 Typen von Karten, solche die entweder Geld oder Punkte bringen und Aktionskarten und von beiden Typen gibt es wiederum verschiedene Karten. Ich habe nun gehofft das ich für jeden Typ eine Klasse machen kann und die einzelnen Klassen dann als Subklasse definieren kann. Aber wenn es nicht sinnvoll ist, bin ich auch ganz offen für andere Vorschläge.
 
B

Billabongo

Gast
Also das eigentliche Ziel ist es das ich Karten habe, die ich in meine Arraylist speichern kann.
 
S

SlaterB

Gast
das sind einfach nicht wirklich Infos, die Designentscheidungen rechtfertigen,
wie unterscheiden sich die Subklassen, brauchen sie unterschiedliche wesentliche Code-Blöcke?
oder haben sie nur unterschiedliche Werte in gar gleichen Attributen, was dann stark gegen einzelne Klassen spricht?

letztlich programmiere doch irgendwas, fange an und korrigiere später,
vorher unspezifisch darüber zu reden bringt nicht viel, eher bei wirklich konkreten Problemen,

du musst auch nicht alle Komplexität von Anfang an drin haben,
starte vielleicht mit einem einzelnen Kartentyp und bringe auch andere Programmteile voran
 
B

Billabongo

Gast
Oke also es gibt drei Typen Geld und Punkte Karten und die sind eig gleich ausser das die einen Geld und die anderen Punkte geben. Als dritter typ wären noch die Aktionskarten, die sind im Grunde alle ähnlich.
 
S

Skanky

Gast
Hi, ich denke es handelt sich um das Spiel Dominion?^^

ich sitze gerade an selbigen und hab es es ähnlich gelöst wie du.

1 Klasse ="Karte" mit variabel und Methoden die alle Karten gleich haben (rückseite(bild), wert, name, typ)
2 Klasse ="WerteKarte" basierend auf Karte für Punkte und Geld Karten, da diese von der Art her gleich sein (haben ein Wert =Punkt/Geld)
2 Klasse ="AktionsKarte" <-- hab ich noch nicht Geschrieben. Behinhaltet aber den Code für die verschiedenen Aktionen.

Geldkarten (Kupfer, Silber, Gold) sind demnach Wertekarten mit unterschiedlichen Variablen genauso wie Punktekarten(Herzogtum, Anwesen, Provinz, Fluch(negativer Wert). Aber alle werden durch die Klasse="WerteKarte" beschrieben.

dann hab ich noch eine Klasse="Stapel" für die Handkarten, Nachziehstapel, Ablagestapel, und die Stapel für die Kaufkarten welche wiederum in einer ArrayList zusammen gefasst sind.


Was mir sehr geholfen hat: Einfach mal die Karten nehmen und gucken was wirklich überall gleich ist und was zusammen passt. Ich habe dafür zwei Abende genommen und mir Tabellen und Ablaufdiagramme vom Spiel und den Aktionen gemacht um alles soweit es geht zu Abstrahieren. Das hilft zwar nicht beim Code schreiben aber dafür bei der Logik.

Bei meiner Variante hakt es gerade leider an der GUI :(
 

Gaara92

Mitglied
hab mich jetzt mal registriert.
@Skanky ja stimmt, ich arbeite an ein Dominion, hast du vllt skype oder ein anderer messenger, dann könnte man sich evtl austauschen
 

Ähnliche Java Themen

Neue Themen


Oben