BlueJ Schach Steuerung programmieren

Ich bräuchte Hilfe bei der Steuerung eines Schachspiels. Ich habe die Figuren in jeweils eigenen Klassen, also z.B für weißen und schwarzen Bauern mit Bilddateien auf ein Schachbrett, dass aus 64 Rechtecken besteht erstellt. Nun bräuchte ich noch den Code um die Schachfiguren per Mausklick bewegen zu können, hierfür habe ich eine neue Klasse gemacht, die von der Klasse Spiel erbt. Die Klassen seht ihr in den Screenshots. Ich hoffe jemand kann mir bei der Steuerung helfen, vielen Dank schon im voraus.
 

Anhänge

  • Screenshot 2023-06-29 171816.png
    Screenshot 2023-06-29 171816.png
    60,5 KB · Aufrufe: 0
  • Screenshot 2023-06-29 172050.png
    Screenshot 2023-06-29 172050.png
    30,2 KB · Aufrufe: 0
  • Screenshot 2023-06-29 172227.png
    Screenshot 2023-06-29 172227.png
    69,7 KB · Aufrufe: 0
  • Screenshot 2023-06-29 172312.png
    Screenshot 2023-06-29 172312.png
    69,9 KB · Aufrufe: 0
Zuletzt bearbeitet:

KonradN

Super-Moderator
Mitarbeiter
Code bitte immer als Code in Code-Tags posten. Dazu am Besten den Knopf </> links oberhalb des Eingabebereiches nutzen.

Bildschirmfotos sind einfach mangelhaft und man kann zu wenig Details erkennen.

Das Klassenlayout sieht auch relativ dubios aus. BauerSchwarz sieht man nur, aber vermutlich wird es eine Klasse BauerWeiss geben. Das ist schon relativ dubios, denn beides werden ja Bauern sein - nur einmal mit Farbe weiss und einmal mit Farbe schwarz.

Mein Ansatz bei sowas ist auch mehr, dass ich da noch nicht einmal Klassen haben würde. Ich würde einfach nur eine Klasse Figur haben und die haben ein Bild, ein Farbe und Möglichkeiten, sich zu bewegen. Das mit der Bewegung der Figuren, das könnte man dann als Klassen machen. Das ginge dann nach dem Strategy Pattern (Design Patterns - Strategy Pattern (tutorialspoint.com)).

Und natürlich würde ich auch Darstellung und Model trennen. Da sehen wir noch keine Details, aber ich habe das Gefühl, dass Du da auch von entsprechenden graphischen Klassen erbst und Darstellung und Model somit vermischst.

Aber wie dem auch sei - bei der eigentlichen Frage nach Hilfe: Das ist noch viel zu ungenau. Was genau für Hilfe brauchst Du denn da? Bisher ist die Klasse ja noch leer. Ein Problem, dass ich sehe: Du nutzt da eine Library für die graphische Darstellung, die lediglich etwas im Schulbereich eingesetzt wird. Ich bin mir unsicher, ob es da entsprechende Funktionalität für Drag&Drop gibt oder so. Da müsste man dann genauere Details haben, was genau Du da an Library nutzt um zu schauen, was es da so gibt. Wenn ich mich recht an andere Posts erinnere, ist das Framework (so es das gleiche ist, das Andere genutzt haben) nicht Event-Orientiert und man muss lediglich in der Schleife diverse Dinge prüfen. Dann ließe sich vermutlich ein Drag & Drop auch selbst bauen. Beim Maus drücken auf einer Figur wird diese dann vom Spielfeld genommen (bei der Anzeige) und so lange die Maus gedrückt ist, wird die Figur an der Maus angezeigt. Wenn die Maus losgelassen wird, dann wird die Figur da abgesetzt so möglich. Wenn das nicht möglich ist, wird sie wieder an der ursprünglichen Stelle abgesetzt.

Aber wie schon geschrieben: Da müsste man noch einmal die genaue Library bekommen. Evtl. ist es engine-alpha/edu-klassen: alle zusätzlichen Klassen zum Unterichtskonzept, die nicht in ea oder ea.edu sind (github.com) - Von den Klassen her (SPIEL, RECHTECK, ...) würde es passen.
 
Code bitte immer als Code in Code-Tags posten. Dazu am Besten den Knopf </> links oberhalb des Eingabebereiches nutzen.

Bildschirmfotos sind einfach mangelhaft und man kann zu wenig Details erkennen.

Das Klassenlayout sieht auch relativ dubios aus. BauerSchwarz sieht man nur, aber vermutlich wird es eine Klasse BauerWeiss geben. Das ist schon relativ dubios, denn beides werden ja Bauern sein - nur einmal mit Farbe weiss und einmal mit Farbe schwarz.

Mein Ansatz bei sowas ist auch mehr, dass ich da noch nicht einmal Klassen haben würde. Ich würde einfach nur eine Klasse Figur haben und die haben ein Bild, ein Farbe und Möglichkeiten, sich zu bewegen. Das mit der Bewegung der Figuren, das könnte man dann als Klassen machen. Das ginge dann nach dem Strategy Pattern (Design Patterns - Strategy Pattern (tutorialspoint.com)).

Und natürlich würde ich auch Darstellung und Model trennen. Da sehen wir noch keine Details, aber ich habe das Gefühl, dass Du da auch von entsprechenden graphischen Klassen erbst und Darstellung und Model somit vermischst.

Aber wie dem auch sei - bei der eigentlichen Frage nach Hilfe: Das ist noch viel zu ungenau. Was genau für Hilfe brauchst Du denn da? Bisher ist die Klasse ja noch leer. Ein Problem, dass ich sehe: Du nutzt da eine Library für die graphische Darstellung, die lediglich etwas im Schulbereich eingesetzt wird. Ich bin mir unsicher, ob es da entsprechende Funktionalität für Drag&Drop gibt oder so. Da müsste man dann genauere Details haben, was genau Du da an Library nutzt um zu schauen, was es da so gibt. Wenn ich mich recht an andere Posts erinnere, ist das Framework (so es das gleiche ist, das Andere genutzt haben) nicht Event-Orientiert und man muss lediglich in der Schleife diverse Dinge prüfen. Dann ließe sich vermutlich ein Drag & Drop auch selbst bauen. Beim Maus drücken auf einer Figur wird diese dann vom Spielfeld genommen (bei der Anzeige) und so lange die Maus gedrückt ist, wird die Figur an der Maus angezeigt. Wenn die Maus losgelassen wird, dann wird die Figur da abgesetzt so möglich. Wenn das nicht möglich ist, wird sie wieder an der ursprünglichen Stelle abgesetzt.

Aber wie schon geschrieben: Da müsste man noch einmal die genaue Library bekommen. Evtl. ist es engine-alpha/edu-klassen: alle zusätzlichen Klassen zum Unterichtskonzept, die nicht in ea oder ea.edu sind (github.com) - Von den Klassen her (SPIEL, RECHTECK, ...) würde es passen.
Vielen Dank für die Antwort. Wäre es vielleicht möglich Ihnen die Datei zukommen zu lassen, weil in Code Tags ist es schon sehr viel Code und es ist sehr unübersichtlich. Bei der Steuerung ist es eigentlich egal ob es über drag & drop oder anders funktioniert. Hauptsache die Figuren lassen sich bewegen. Vielen Dank für Ihre Hilfe
 

KonradN

Super-Moderator
Mitarbeiter
Ok, wenn es die Library ist, die ich da gefunden habe, dann hast Du da in Spiel die Methode klickReagieren(int, int), die du überschreiben kannst. Bei Mausklicks wird diese aufgerufen.

Aus den zwei Parametern musst Du dann das Feld ermitteln - das kannst Du ja mathematisch herleiten - Du hast ja aus den Positionen bereits die Mittelpunkte ermittelt beim Aufbau des Spielfeldes. Das ist ja jetzt nur die andere Richtung.

Damit kannst Du dann die Logik bauen:

Wenn auf ein Feld geklickt wird:
  • Ist noch kein Feld ausgewählt, dann wird das angeklickte Feld ausgewählt.
  • Ist bereits ein Feld ausgewählt, dann prüfst Du: Ist das bereits markierte Feld angeklickt worden? Dann wird die Markierung aufgehoben. Ansonsten hast Du ein gewünschten Zug von markiertem Feld hin zu dem nun angeklickten Feld.
 
Code bitte immer als Code in Code-Tags posten. Dazu am Besten den Knopf </> links oberhalb des Eingabebereiches nutzen.

Bildschirmfotos sind einfach mangelhaft und man kann zu wenig Details erkennen.

Das Klassenlayout sieht auch relativ dubios aus. BauerSchwarz sieht man nur, aber vermutlich wird es eine Klasse BauerWeiss geben. Das ist schon relativ dubios, denn beides werden ja Bauern sein - nur einmal mit Farbe weiss und einmal mit Farbe schwarz.

Mein Ansatz bei sowas ist auch mehr, dass ich da noch nicht einmal Klassen haben würde. Ich würde einfach nur eine Klasse Figur haben und die haben ein Bild, ein Farbe und Möglichkeiten, sich zu bewegen. Das mit der Bewegung der Figuren, das könnte man dann als Klassen machen. Das ginge dann nach dem Strategy Pattern (Design Patterns - Strategy Pattern (tutorialspoint.com)).

Und natürlich würde ich auch Darstellung und Model trennen. Da sehen wir noch keine Details, aber ich habe das Gefühl, dass Du da auch von entsprechenden graphischen Klassen erbst und Darstellung und Model somit vermischst.

Aber wie dem auch sei - bei der eigentlichen Frage nach Hilfe: Das ist noch viel zu ungenau. Was genau für Hilfe brauchst Du denn da? Bisher ist die Klasse ja noch leer. Ein Problem, dass ich sehe: Du nutzt da eine Library für die graphische Darstellung, die lediglich etwas im Schulbereich eingesetzt wird. Ich bin mir unsicher, ob es da entsprechende Funktionalität für Drag&Drop gibt oder so. Da müsste man dann genauere Details haben, was genau Du da an Library nutzt um zu schauen, was es da so gibt. Wenn ich mich recht an andere Posts erinnere, ist das Framework (so es das gleiche ist, das Andere genutzt haben) nicht Event-Orientiert und man muss lediglich in der Schleife diverse Dinge prüfen. Dann ließe sich vermutlich ein Drag & Drop auch selbst bauen. Beim Maus drücken auf einer Figur wird diese dann vom Spielfeld genommen (bei der Anzeige) und so lange die Maus gedrückt ist, wird die Figur an der Maus angezeigt. Wenn die Maus losgelassen wird, dann wird die Figur da abgesetzt so möglich. Wenn das nicht möglich ist, wird sie wieder an der ursprünglichen Stelle abgesetzt.

Aber wie schon geschrieben: Da müsste man noch einmal die genaue Library bekommen. Evtl. ist es engine-alpha/edu-klassen: alle zusätzlichen Klassen zum Unterichtskonzept, die nicht in ea oder ea.edu sind (github.com) - Von den Klassen her (SPIEL, RECHTECK, ...) würde es passen.
 
Ok, wenn es die Library ist, die ich da gefunden habe, dann hast Du da in Spiel die Methode klickReagieren(int, int), die du überschreiben kannst. Bei Mausklicks wird diese aufgerufen.

Aus den zwei Parametern musst Du dann das Feld ermitteln - das kannst Du ja mathematisch herleiten - Du hast ja aus den Positionen bereits die Mittelpunkte ermittelt beim Aufbau des Spielfeldes. Das ist ja jetzt nur die andere Richtung.

Damit kannst Du dann die Logik bauen:

Wenn auf ein Feld geklickt wird:
  • Ist noch kein Feld ausgewählt, dann wird das angeklickte Feld ausgewählt.
  • Ist bereits ein Feld ausgewählt, dann prüfst Du: Ist das bereits markierte Feld angeklickt worden? Dann wird die Markierung aufgehoben. Ansonsten hast Du ein gewünschten Zug von markiertem Feld hin zu dem nun angeklickten Feld.
Vielen Dank. Es tut mir Leid aber ich verstehe nicht genau, wie ich das in Code umsetzen soll. Könnten Sie das vielleicht in Code schreiben? Falls Sie die genauen Klassen, etc. brauchen wäre hier die Datei https://drive.google.com/drive/u/2/folders/1t3Y9nCYd6K2rGksnsjbTCCZOHQKSLA3R
Vielen herzlichen Dank für die Hilfe
 

KonradN

Super-Moderator
Mitarbeiter
Erst einmal für die Anderen: Es scheint sich um die Library zu handeln, die ich auch auf GitHub gefunden habe.

Ich habe mir das einmal herunter geladen und ich schaue mal, ob ich morgen etwas Zeit finde, Dir den Rahmen einmal aufzuzeigen, wie sowas aussehen könnte.
 

KonradN

Super-Moderator
Mitarbeiter
Erst einmal der Part bezüglich der Felderkennung:

Java:
public class STEUERUNG extends SPIEL  {
    private SCHACHBRETT Anzeige;
    ;
    
    @Override
    public void klickReagieren( int x , int y ) {
        System.out.println("klick Koordinaten: " + x + ", " + y);
        int feldx = x / 75;
        int feldy = y / 75;
        System.out.println("klick Feld: " + feldx + ", " + feldy);
    }

    
     public STEUERUNG(){
         super(800,600,true);
         Anzeige = new SCHACHBRETT();
        
    }
}

Das kannst Du ja erst einmal ausprobieren und dann schauen, was Du da bei den Mausklicks bekommst. In der Konsole solltest Du entsprechende Anzeigen bekommen bezüglich des Feldes, in das Du geklickt hast.

Das ist der erste Schritt. Da musst Du Dir dann nur überlegen, wie Du da weiter mit vorgehen möchtest. Bei sowas ist wichtig, dass Du Dir die Logik erst einmal so überlegst. Also vergiss Java. Beschreibe genau, was passieren soll. Das kannst Du also ganz genau formulieren. Wenn Du Dir einmal den Ablauf genau überlegt hast, dann kann man es umsetzen. (Einen ersten Anfang, wie so etwas aussehen könnte, habe ich ja schon gemacht!)
 
Erst einmal der Part bezüglich der Felderkennung:

Java:
public class STEUERUNG extends SPIEL  {
    private SCHACHBRETT Anzeige;
    ;
   
    @Override
    public void klickReagieren( int x , int y ) {
        System.out.println("klick Koordinaten: " + x + ", " + y);
        int feldx = x / 75;
        int feldy = y / 75;
        System.out.println("klick Feld: " + feldx + ", " + feldy);
    }

   
     public STEUERUNG(){
         super(800,600,true);
         Anzeige = new SCHACHBRETT();
       
    }
}

Das kannst Du ja erst einmal ausprobieren und dann schauen, was Du da bei den Mausklicks bekommst. In der Konsole solltest Du entsprechende Anzeigen bekommen bezüglich des Feldes, in das Du geklickt hast.

Das ist der erste Schritt. Da musst Du Dir dann nur überlegen, wie Du da weiter mit vorgehen möchtest. Bei sowas ist wichtig, dass Du Dir die Logik erst einmal so überlegst. Also vergiss Java. Beschreibe genau, was passieren soll. Das kannst Du also ganz genau formulieren. Wenn Du Dir einmal den Ablauf genau überlegt hast, dann kann man es umsetzen. (Einen ersten Anfang, wie so etwas aussehen könnte, habe ich ja schon gemacht!)
Vielen Dank für die Hilfe. Ich würde nun so vorgehen, dass es entweder über drag and drop Funktioniert oder man die Figur erst auswählt und dann auf das Feld fährt. Jetzt bin ich mir nur unsicher wie man es umsetzen kann, dass man eine Figur auswählt, weil ich ja für die Figuren unterschiedliche Klassen habe.
 

KonradN

Super-Moderator
Mitarbeiter
Du hast an Spielfeld … auf den sind alle Figuren. Du musst also eine Methode schreiben, die heraus bekommt, welche Figur auf dem Feld steht.

Dazu schaust Du Dir an, was für Daten du bisher hast und was du da machen kannst, um dieses Problem zu lösen. Evtl. macht es auch Sinn, an der Datenhaltung etwas zu verändern.
 
Du hast an Spielfeld … auf den sind alle Figuren. Du musst also eine Methode schreiben, die heraus bekommt, welche Figur auf dem Feld steht.

Dazu schaust Du Dir an, was für Daten du bisher hast und was du da machen kannst, um dieses Problem zu lösen. Evtl. macht es auch Sinn, an der Datenhaltung etwas zu verändern.
Danke für den Tipp, jedoch stehe ich gerade völlig auf dem Schlauch, ich habe es jetzt so probiert, dass wenn man klickt es die Figur in die Konsole einträgt, jedoch schaffe ich es nicht, dass es funktioniert.
 

KonradN

Super-Moderator
Mitarbeiter
Der erste Schritt muss wirklich sein, das Problem in Teilprobleme zu zerlegen. Dazu einfach einmal im Detail beschreiben, was Du überhaupt machen willst.
Und das wird dann immer weiter verfeinert.

Also bitte trenne Dich von der Idee, direkt Code zu schreiben. Das ist nicht der Weg, wie es funktioniert.
 
Der erste Schritt muss wirklich sein, das Problem in Teilprobleme zu zerlegen. Dazu einfach einmal im Detail beschreiben, was Du überhaupt machen willst.
Und das wird dann immer weiter verfeinert.

Also bitte trenne Dich von der Idee, direkt Code zu schreiben. Das ist nicht der Weg, wie es funktioniert.
Ja, ich habe bereits eine Liste mit den verbleibenden Schritten geschrieben, jedoch bekomme ich es nicht hin es in Code zu schreiben
 

Anhänge

  • Screenshot 2023-06-30 150640.png
    Screenshot 2023-06-30 150640.png
    16,9 KB · Aufrufe: 0

KonradN

Super-Moderator
Mitarbeiter
Du musst jeden einzelnen Schritt dann immer weiter verfeinern. Was muss bei jedem Schritt passieren? Und Du musst Dir bewusst werden, dass Du auf Events reagieren musst. Der Benutzer klickt und du reagierst dann auf den Mausklick.

Die Beschreibung muss also da mehr drauf eingehen.

Und das kannst Du mit Stift und Papier durchspielen. Mal einfach ein Spielfeld auf und pack da paar Figuren rein. Also z.B. einfach ein 2x2 Feld mit 1 weißen und 1 schwarzen Figur. 2 Felder sind leer. Oder Du nimmst Dir ein Schachspiel und spielst damit herum.

Wenn noch nichts ausgewählt ist: Was für Fälle für Mausklicks siehst Du dann? Wo kann der Benutzer hin klicken?
Da solltest Du dann sehen:
  • Es kann eine von seinen Figuren sein
  • Es kann eine gegnerische Figur sein
  • Es kann ein leeres Feld sein
  • Der Klick kann auch außerhalb sein.

a) Wie kannst Du die einzelnen Fälle unterscheiden?
b) Was muss dann jeweils passieren?

Wenn da dann eine Figur ausgewählt wird: Dann ist die Frage: Mit ausgewählter Figur: Was für Fälle sind da dann möglich? Wie kann man die Fälle unterscheiden? Wie muss jeweils reagiert werden?

Das sind dann alles Dinge, die du Formulieren musst. Und das kannst Du dann immer weiter ausbauen.
 
Du musst jeden einzelnen Schritt dann immer weiter verfeinern. Was muss bei jedem Schritt passieren? Und Du musst Dir bewusst werden, dass Du auf Events reagieren musst. Der Benutzer klickt und du reagierst dann auf den Mausklick.

Die Beschreibung muss also da mehr drauf eingehen.

Und das kannst Du mit Stift und Papier durchspielen. Mal einfach ein Spielfeld auf und pack da paar Figuren rein. Also z.B. einfach ein 2x2 Feld mit 1 weißen und 1 schwarzen Figur. 2 Felder sind leer. Oder Du nimmst Dir ein Schachspiel und spielst damit herum.

Wenn noch nichts ausgewählt ist: Was für Fälle für Mausklicks siehst Du dann? Wo kann der Benutzer hin klicken?
Da solltest Du dann sehen:
  • Es kann eine von seinen Figuren sein
  • Es kann eine gegnerische Figur sein
  • Es kann ein leeres Feld sein
  • Der Klick kann auch außerhalb sein.

a) Wie kannst Du die einzelnen Fälle unterscheiden?
b) Was muss dann jeweils passieren?

Wenn da dann eine Figur ausgewählt wird: Dann ist die Frage: Mit ausgewählter Figur: Was für Fälle sind da dann möglich? Wie kann man die Fälle unterscheiden? Wie muss jeweils reagiert werden?

Das sind dann alles Dinge, die du Formulieren musst. Und das kannst Du dann immer weiter ausbauen.
Ja auf jeden Fall, aber mir geht es eigentlich nur darum, dass zwei Spieler an einem Rechner das Spiel spielen können und dabei muss es nicht sein, dass z.b ein Läufer nur diagonal sich bewegen kann, sondern die Spieler müssen diese Regeln selbst beachten. Also hätte ich geplant, dass man je nach Spieler seine Farbe selbst manuell auswählt und man dann die Figur auf irgendein Feld bewegt, ob das nach den Regeln korrekt ist müssen die Spieler dann selbst entscheiden. Ich müsste das Projekt gegen 18 Uhr nämlich fertig habe. Vielen Dank für die Tipps
 

KonradN

Super-Moderator
Mitarbeiter
Das ändert aber nichts an dem Vorgehen. Das Vorgehen, das ich beschrieben habe, ist das normale Vorgehen, wenn man ein Programm schreibt. Wenn die angefangene Beschreibung nicht passt, dann ändere sie so ab, dass sie für Deine Anforderungen passt.

Aber einiges sollte durchaus drin bleiben. Der Weisse Spieler sollte keine schwarzen Figuren ziehen können. Und ein leeres Feld wird nichts bringen, wenn man eine Figur selektieren soll.
 
Das ändert aber nichts an dem Vorgehen. Das Vorgehen, das ich beschrieben habe, ist das normale Vorgehen, wenn man ein Programm schreibt. Wenn die angefangene Beschreibung nicht passt, dann ändere sie so ab, dass sie für Deine Anforderungen passt.

Aber einiges sollte durchaus drin bleiben. Der Weisse Spieler sollte keine schwarzen Figuren ziehen können. Und ein leeres Feld wird nichts bringen, wenn man eine Figur selektieren soll.
Ja ich glaube vor allem, das Problem ist die Umsetzung in Code, denn im Prinzip, weiß ich schon, was ich programmieren muss, ich weiß nur nicht wie
 
Und genau das ist so eben nicht ausreichend aus meiner Sicht. Wie willst Du etwas in der Sprache Java schreiben (die Du erst lernst), wenn Du Probleme hast, es in Deiner Muttersprache im Detail zu beschreiben?
Ja das liegt wahrscheinlich daran, dass ich nicht mehr viel Zeit habe und deswegen versuche ich lieber in Java es hinzubekommen, dass es irgendwie funktioniert
 

KonradN

Super-Moderator
Mitarbeiter
Ja das liegt wahrscheinlich daran, dass ich nicht mehr viel Zeit habe und deswegen versuche ich lieber in Java es hinzubekommen, dass es irgendwie funktioniert
Der Ansatz ist in der Regel nicht zielführend. Die Beschreibung dient mit dazu, dass die fachlichen Anforderungen im Detail verstanden werden. Das ist ein unerlässlicher Punkt ohne den man nur selten zu einer Lösung kommt.

Natürlich muss man - so man genug Erfahrung hat - nicht mehr alles ganz so detailliert beschreiben, aber die fachlichen Anforderungen stehen immer am Anfang. Und dazu gehört, dass man sich klar wird, wann was passieren kann und wie darauf reagiert werden sollte.
 
Der Ansatz ist in der Regel nicht zielführend. Die Beschreibung dient mit dazu, dass die fachlichen Anforderungen im Detail verstanden werden. Das ist ein unerlässlicher Punkt ohne den man nur selten zu einer Lösung kommt.

Natürlich muss man - so man genug Erfahrung hat - nicht mehr alles ganz so detailliert beschreiben, aber die fachlichen Anforderungen stehen immer am Anfang. Und dazu gehört, dass man sich klar wird, wann was passieren kann und wie darauf reagiert werden sollte.
Ja auf jeden Fall ich habe mir jetzt im Detail überlegt wie man das mit den Figuren und der Bewegung hinkriegen könnte, aber ich schaffe es einfach nicht in Java die Erkennung von der Figur auf welchem Feld sie steht zu coden, könnten Sie mir da eventuell helfen?
 

KonradN

Super-Moderator
Mitarbeiter
ich schaffe es einfach nicht in Java die Erkennung von der Figur auf welchem Feld sie steht zu coden
Hast Du im Spielfeld Zugriff auf die Figuren?
Hast Du Zugriff auf die Koordinaten der Figur?
Kannst Du von den Koordinaten auf das Feld schließen?

Wenn Du diese Teilprobleme gelöst hast, dann kannst du vermutlich das Problem selbst lösen, oder?

Aber Du solltest Dir Überlegen, ob Du die Figuren nicht evtl. anders speichern könntest, damit das Durchgehen der Figuren einfacher wird. Das könnte Sinn machen, aber ist natürlich nicht zwingend notwendig.
 
Hast Du im Spielfeld Zugriff auf die Figuren?
Hast Du Zugriff auf die Koordinaten der Figur?
Kannst Du von den Koordinaten auf das Feld schließen?

Wenn Du diese Teilprobleme gelöst hast, dann kannst du vermutlich das Problem selbst lösen, oder?

Aber Du solltest Dir Überlegen, ob Du die Figuren nicht evtl. anders speichern könntest, damit das Durchgehen der Figuren einfacher wird. Das könnte Sinn machen, aber ist natürlich nicht zwingend notwendig.
Wie bekomme es ich hier hin, dass auf einen Mausklick überprüft wird
public void figurPosition() {
//Wenn Maus geklickt wird, wird das Feld auf die Figur untersucht
if(
}
 

KonradN

Super-Moderator
Mitarbeiter
Der Mausklick wird doch in STEUERUNG behandelt. STEUERUNG hat die Instanz von Spielfeld in der Variable Anzeige (die vom Typ SCHACHBRETT ist).

Du kannst also in Schachbrett eine Methode getFigur(int x, int y) aufrufen. Und diese Methode musst Du natürlich schreiben.
Die Methode soll ja die Figur zurück geben - gibt es ggf. eine gemeinsame Superklasse? Das könnte dann der Rückgabetyp sein.

In der Methode musst du dann aus den x / y Koordinaten erst einmal ein Feld machen. Das hatte ich ja bereits in dem Beispielcode etwas gezeigt.

Aber ggf. willst Du auch einfach die Spielfiguren anders speichern. Statt die vielen Arrays könntest Du einfach ein 2D Array von BILD erzeugen. Und dann fügst Du die Figuren einfach diesem 2D Array hinzu. Dann kannst Du einfach direkt die Figur aus diesem 2D Array ablesen.
Was ist der Wert bei einem leeren Feld in dem Array? Das ist eine Sache, über die Du auch nachdenken solltest, damit Du da ein klares Verständnis hast.
 
Der Mausklick wird doch in STEUERUNG behandelt. STEUERUNG hat die Instanz von Spielfeld in der Variable Anzeige (die vom Typ SCHACHBRETT ist).

Du kannst also in Schachbrett eine Methode getFigur(int x, int y) aufrufen. Und diese Methode musst Du natürlich schreiben.
Die Methode soll ja die Figur zurück geben - gibt es ggf. eine gemeinsame Superklasse? Das könnte dann der Rückgabetyp sein.

In der Methode musst du dann aus den x / y Koordinaten erst einmal ein Feld machen. Das hatte ich ja bereits in dem Beispielcode etwas gezeigt.

Aber ggf. willst Du auch einfach die Spielfiguren anders speichern. Statt die vielen Arrays könntest Du einfach ein 2D Array von BILD erzeugen. Und dann fügst Du die Figuren einfach diesem 2D Array hinzu. Dann kannst Du einfach direkt die Figur aus diesem 2D Array ablesen.
Was ist der Wert bei einem leeren Feld in dem Array? Das ist eine Sache, über die Du auch nachdenken solltest, damit Du da ein klares Verständnis hast.
Leider bekomme ich das alles nicht umgesetzt. Danke für Ihre Hilfe, könnten Sie vielleicht irgendeine Möglichkeit die Figuren zu bewegen coden, da die Abgabe bereits in 1 Stunde ist.
 

KonradN

Super-Moderator
Mitarbeiter
Zumindest macht es keinen Sinn auf eine fertige Lösung durch mich zu warten. Ich erachte es für hilfreich, Anderen so zu helfen, dass sie dazu lernen und Lösungen selbst erstellen. Hausaufgaben erstelle ich (in der Regel) nicht, da ich dann zum einen keinen Lernerfolg und zum Anderen kein Erfolgserlebnis sehe.

Mein Ziel im Forum ist aber explizit darauf ausgelegt: Andere sollen etwas dazu lernen und dann im idealen Fall auch ein Erfolgserlebnis verbuchen, weil sie eine Aufgabe, die zuerst unlösbar schien, dann am Ende (relativ) eigenständig gelöst haben.
 
Zumindest macht es keinen Sinn auf eine fertige Lösung durch mich zu warten. Ich erachte es für hilfreich, Anderen so zu helfen, dass sie dazu lernen und Lösungen selbst erstellen. Hausaufgaben erstelle ich (in der Regel) nicht, da ich dann zum einen keinen Lernerfolg und zum Anderen kein Erfolgserlebnis sehe.

Mein Ziel im Forum ist aber explizit darauf ausgelegt: Andere sollen etwas dazu lernen und dann im idealen Fall auch ein Erfolgserlebnis verbuchen, weil sie eine Aufgabe, die zuerst unlösbar schien, dann am Ende (relativ) eigenständig gelöst haben.
Alles Klar, trotzdem danke für die Hilfe
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D BlueJ Ufo-Projekt Spiele- und Multimedia-Programmierung 10
F BlueJ Ufospiel Probleme Spiele- und Multimedia-Programmierung 1
P Frage zu einem Projekt "Einarmiger Bandit" 3 Walzen / 9 Zeichnungen BLUEJ Spiele- und Multimedia-Programmierung 10
U java blueJ BMI rechner Spiele- und Multimedia-Programmierung 8
H BlueJ Frage Spiele- und Multimedia-Programmierung 13
W Hilfe bei Pong mit Bluej Spiele- und Multimedia-Programmierung 4
Z Schach Figuren bewegen Spiele- und Multimedia-Programmierung 4
B Schach-AI Spiele- und Multimedia-Programmierung 6
P schach programm- wo anfangen? Spiele- und Multimedia-Programmierung 13
R Schach Spiele- und Multimedia-Programmierung 4
N Schach nur mit Bauern Spiele- und Multimedia-Programmierung 4
Taschentuch9 Einfache fertige Schach AI gesucht Spiele- und Multimedia-Programmierung 3
R Schach, Array und GUI Verknüpfung, enum Spiele- und Multimedia-Programmierung 16
C Schach auf der Konsole Spiele- und Multimedia-Programmierung 2
M Suche Schach Images Spiele- und Multimedia-Programmierung 5
F Schach Spiele- und Multimedia-Programmierung 3
L Denkanstösse bei Schach Spiele- und Multimedia-Programmierung 6
A Spracherkennung/steuerung Spiele- und Multimedia-Programmierung 12
staxx6 (Slick) Steuerung - mehrere Belegungen Spiele- und Multimedia-Programmierung 12
C Bluetooth Helikopter steuerung Spiele- und Multimedia-Programmierung 6
T Problem mit JnR-Steuerung / KeyListener Spiele- und Multimedia-Programmierung 6
D java 3d Steuerung (mit KSKB) Spiele- und Multimedia-Programmierung 9
L iTunes-Steuerung / Ereignisse abfangen Spiele- und Multimedia-Programmierung 2
A Steuerung des Bewegungsflusses bei einem Netzwerkspiel Spiele- und Multimedia-Programmierung 18
R Problem Steuerung Spiele- und Multimedia-Programmierung 3
L 2 Spieler Steuerung Spiele- und Multimedia-Programmierung 4

Ähnliche Java Themen

Neue Themen


Oben