Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo zusammen,

ich beschäfftige mich nun schon seit einer ganzen Weile min Java und versuche mich gerade am 3-Schichten Modell zu üben. Allerdings hab ich noch ein "kleines" Verständnisproblem.

Ich hab mir vorgenommen ein kleines Minesweeper-Spiel zu programmieren und versuche derzeit einfach nur die Logik und die GUI von einander zu trennen.

Leider bekomme ich beim Aufrufen der Methoden der Logik immer nur die eine Fehlermeldung:

"non-static Method connot be referenced from a static context"

Schauts euch am besten selber an ich(siehe Anhang). IDE ist Netbeans 6.7

Hoffe ihr könnte mir helfen und schon mal Danke im Voraus.:)

Minesweeper.zip

Geschrieben

1. Bitte poste NUR den relevanten Code!

2. Namenskonventionen einhalten! (Klassen, Interfaces groß; Methoden, Felder, Packages klein)

3. DIE GUI KENNT DIE LOGIK UND DIE LOGIK KENNT DIE GUI NICHT!!!

(Tschuldige die Großschreibung, aber das ist essentiell)

Wenn beide sich kennen, kann man sich's auch sparen.

5. Das Problem:


Logik.Logik.NeuesSpiel("d");

Du musst auf die Controller-Instanz zugreifen:

Controller.NeuesSpiel("d");

6. Du solltest mal ein Java-Buch lesen: GalileoComputing OpenBook: Java ist auch eine Insel

Grüße, JasonDelife.

Geschrieben

Deine Package-Namen enthalten nicht nur Großbuchstaben, sondern sind auch viel zu kurz geraten. Die Java Sprachspezifikation verlangt hier eindeutige Package-Namen, so das rein theoretisch aller jemals in Java geschriebener Code in einem einzigen jar-Archiv zusammen gefasst werden könnte ohne Dopplungen zu haben.

Daher die Empfehlung von Sun den umgekehrten Internetdomänennamen als Package-Namen zu verwenden. Beispiele hierfür sind:

  • org.w3c
  • com.sun

Du könntest zum Beispiel, um mit der Eindeutigkeit nicht zu übertreiben, folgend Package-Namen für dein GUI Package verwenden: de.the_macuser.minesweeper.gui

Aber das eigentlich nur nebenbei ;)

Was dein Problem bei dem Softwareentwurf betrifft, habe ich den Verdacht, dass du das Ganze von der völlig falschen Seite angegangen hast.

Versuch doch erstmal eine Klasse (oder mehrere) zu schreiben die das Konzept das Spiels repräsentieren ohne auch nur den Ansatz einer Oberfläche zu verwenden (System.out eingeschlossen).

Hier mein Vorschlag für eine Klasse MinesweeperFeld:

Der Konstruktor erstellt ein Feld der vorgegebenen Breite und Höhe mit zufällig in dem Feld verteilten Minen gleich der übergebenen Anzahl von Minen. Nicht vergessen auch die für Minesweeper typischen Hilfszahlen zum Lösen in das Feld einzutragen.


public MinesweeperFeld(int breite, int höhe, int anzahlMinen) {

    ...

}

Hier ein paar sondierende Methoden:

public int gibBreite() {

    ...

}


public int gibHöhe() {

    ...

}


public int gibMinenAnzahl() {

    ...

}

Und zu guter letzt eine Methode, mit deren Hilfe man den Inhalt des Feldes für beliebige Oberflächen abfragen kann. Die Rückgabewerte bei int wären dann -1 für eine Mine, 0 für ein freies Feld und 1 bis 8 für die Hilfszahlen.

public int gibFeld(int breite, int höhe) {

    ...

}

Geschrieben

Danke für die guten Tipps!

Ich werde wohl das Konzept nochmal überdenken müssen!

@JasonDelife:

Danke für den Tipp mit dem Buch sowas suche ich schon die ganze Zeit! Werde mir wohl erstmal das Buch durchlesen bevor ich weitermache.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...