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.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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.

Weiterlesen  

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...