Mahjong-Entwicklungshilfe gesucht!

haubex

Mitglied
Ich will mit Hilfe der GUI das Spiel Mahjong programmieren und habe auch schon ein recht großen Schritt der Anordnung geschaffen!

Etwas Theorie zum Verständniss des Problems:
Zum einen gibt es die Klasse "Karte", "Position", "MyData" und "Verwaltung"...

Nun war der Gedanke so, dass in dem JFrame ein Verwaltungs-Objekt erzeugt wird. Dieses ist dafür zuständig, das alle benötigten Karten erstellt werden. Der Konstruktor der Karte erwartet ein MyData-Object, was später einige Attribute und ein Objekt der Klasse Position beinhalten soll!
Nun wurden einige Karten-Objekt fertig erstellt und enthalten jeweils alle nötigen Daten für:
  • die genaue Ausrichtung auf dem JPanel
  • den Verlauf des Spiels

Diese Aufgaben soll das Verwaltungs-Objekt erledigen!
(Also passiert bei der Konstruktion des V-O'es einiges mehr, als man denkt...um Fehler in der Laufzeit zu vermeiden, setzte ich dieses auch gleich noch als Thread und stellte somit sicher, dass man auf das Ende des Ablaufs dieses Objektes wartet)

Ist dieses algorithmische Konzept zu verzweigt, oder bin ich da auf einem guten Weg!?
Problem bei diesem Spiel ist nun, das man nun gewisse Ebenen implentieren muss..und nur die Karten am Rand der Ebene können geklickt werden...(Spielregeln, Mahjong)

Ich steh grad ein wenig auf dem Schlauch und würde wirklich gern einige Meinungen hören...
 
Also wenn Du Polygone speziell in dem Fall Rechtecke für deine Karten verwendest und zeichnest da gibt es intersect abfragemöglichkeit so weit ich mich recht erinnere Funktioniert bei den standardmäßigen Java-Polygonen jedoch nur auf Recheckebene korrekt. Wenn Du mehr als Rechecke für die Darstellung haben willst, habe ich da irgendwo eine Polygnklasse die Dir da weiter helfen kann.
Also wenn vom User gewählte Karte eine oder mehere überschneidet kontrolliere welche Karte(n) diese sind und wenn die gewählte nicht die oberste Level (z-koordinate) ist dann ist sie wohl offenbar gesperrt bzw. nicht verwendbar.
Intuitiv würde ich vermutlich die drei Kordinaten (x,y,z) den Kartenobjekten überlassen und eine Abfrage bezüglich Überschneidung und prüfung auf "verwendbar" würde ich dem Verwaltungsobjekt zuordnen, welches alle auf dem Spielfeld befindlichen Karten kennt.

Mal ne Frage, wie stellst Du die Karten dar, via weiterer Gui-Komponenten (z.b. JButton) oder malst Du Sie selbst mittels veränderter paintComponent routine des Panels mit dem Du das Spielfeld darstellst?
(Ich würde mich normalerweise auf Letzeres setzen, denn es wäre nicht so überfrachtet und man kann bei Problemen seinen eigenen Code besser analysieren!)

Takidoso
 
Dein Positionsobjekt beinhaltet natürlich dre Koordinatenwerte und sollte aus meiner Sicht dem Kartenobjekt obliegen.
 
Zunächst mal habe ich mir für die Karte eine eigene Klasse erstellt, die ein JLabel ist. (vererbt) class Karte extends JLabel

Ein Karte-Objekt bekommt dann im Konstruktor ein Icon über
"this.setIcon( myData.getIcon() );"
zugewiesen, welcher im dazugehörigen myData-Objekt vorliegt und über die get-Methode zurückgeliefert wird.
Im MyData-Objekt ist dies zwar ein ImageIcon, aber dieser wird automatisch auch in einen Icon umgewandelt.

Zusammengefasst lade ich also ein normales gif-Bild als ImageIcon im myData-Objekt der dazugehörigen Karte und hole mir dieses per get-Methode als Icon für das Label...

Dann kann ich das Karte-Objekt über
karte1.setBounds(x,y,width,height);
ganz simple in das JPanel oder sonst wohin zeichnen lassen...

funktioniert soweit auch ganz gut!
 
hm...also mit JButton war auch mein erster Gedanke, aber das t nicht, wenn Objekt übereinander oder aufeinander liegen, da sich bei jedem Mouse-Click der JButton verselbständigt und sich in den Vordergrund schiebt.
D.h.: sollte ein JButton ganz unten liegen und angeklickt werden, so schiebt er sich ganz nach vorne und überdeckt alles andere....hab ich zumindest so getestet :)
man kann ich das schlecht beschreiben ;)))


Und genau das mit der Sperre muss ich noch gut durchdenken. Ich weiß noch nicht so richtig, wie ich es machen soll, dass man automatisch prüft, was um das Karten Objekt links und rechts liegt und wenn noch was oben drauf liegt.
Mir ist schon klar, dass ich mit der xyz-Koordinate arbeiten muss, aber wie genau...hmmm....das wird mich noch in den wahnsinn treiben..hehe
 
Zurück