"unschöne" if-Abfragen

Status
Nicht offen für weitere Antworten.

Lexi

Bekanntes Mitglied
Ich bin gerade dabei Minesweeper nachzuprogrammieren und hänge an einer sehr unschönen Stelle meines Codes fest. Um die Anzahl der benachbarten Bomben eines Feldes herauszufinden muss ich ja bekanntlich seine 8 Nachbarn überprüfen. Das funktioniert so lange, wie sich das Feld, dessen umliegenden Nachbarn ich prüfen will, nicht in einer der vier Ecken oder am Rand des Spielfeldes befindet.

Da ich die Felder in einem 2 Dimensionalen Array gespeichert habe, bekomme ich natürlich immer eine NullpointerException, sobald ich versuche auf die Nachbarn eines Eck/Randstückes zuzugreifen.
Um dies zu verhindern müsste ich allerlei if-Abfragen einfügen, was eine Menge "unschönen" Code produziert.

Vor kurzem gab es hier mal einen Thread, indem der TS versuchte ein Schachspiel versuchte zu implementieren und ganz ähnliche Probleme hatte, nur habe ich Schwierigkeiten, die dort vorhandenen Lösungen auf mein Problem zu übertragen.

Wäre euch sehr dankbar für jeglichen Ansatz/ Anstoß oder jegliche Idee .
 

Marco13

Top Contributor
Erstmal vorneweg: Die Lösung dort diente nur sekundär dem Zweck, "unschöne" if-Abfragen zu vermeiden, sondern vielmehr dem Zweck ... if-Abfragen zu vermeiden (weil sie Zeit kosten). Bei etwas so wenig zeitkritischen wie Minesweeper ist sowas wie
Code:
boolean isValid(int x, int y)
{
    return 
        x >= 0 && x < sizeX-1 &&
        y >= 0 && y < sizeY-1;
}
ja nicht so das Problem.

Aber wenn doch... solltest du genauer sagen, wo die Schwierigkeiten liegen. Die Grundidee war ja, ein Spielbrett anzulegen, das (für Minesweeper) 2 Felder höher und breiter ist, als das eigentliche Brett, und das eigentliche Brett dort in die Mitte zu legen...
 

Lexi

Bekanntes Mitglied
Die Grundidee war ja, ein Spielbrett anzulegen, das (für Minesweeper) 2 Felder höher und breiter ist, als das eigentliche Brett, und das eigentliche Brett dort in die Mitte zu legen...

Müsste ich für Minesweeper das Spielfeld nicht eigentlich nur 1 Feld höher und breiter machen ?
Ich greife doch immer nur auf die unmittelbaren Nachbarn eines Feldes zu.

Ich habe da jetzt eine Vorstellung wie ich das mit dem zentrierten Spielfeld und dem zusätzlichen Rand auf mein Beispiel übertrage, werde mich bei weiteren Problemen nochmal melden.
 

Lexi

Bekanntes Mitglied
Ist mir jetzt bei der Umsetzung auch aufgefallen.

Ich dachte erst du meintest oben, unten, rechts, links jeweils +2...

___

Ich habe mein 2D-Array jetzt um 2(^^) vergrößert und den Ring außenrum dann einfach mit null-Verweisen ( <-- sagt man das so ? ) gefüllt. Hat dann doch so geklappt, wie im besagten "Schachbrett-Beispiel" :)

Vielen Dank für die Hilfe
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Unschöne Html Fehlermeldung bei Eclipse Java Basics - Anfänger-Themen 8
S unschöne schleifen.jemand ne bessere idee Java Basics - Anfänger-Themen 4
D Map<String, Integer> sortieren und der reinfolge nach die Glieder abfragen Java Basics - Anfänger-Themen 3
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
ven000m Bitcoin Blockhöhe abfragen Java Basics - Anfänger-Themen 12
S If abfragen (+, - , /, *) Java Basics - Anfänger-Themen 13
M Dialogbox solange abfragen, bis gültige Wert-Eingabe Java Basics - Anfänger-Themen 12
Phash Websocket abfragen Java Basics - Anfänger-Themen 1
volcanos List & ArrayList nach Familiennamen abfragen Java Basics - Anfänger-Themen 57
E schneller von der Datenbank abfragen Java Basics - Anfänger-Themen 15
M Checkbox abfragen und Radiobutton Group zurücksetzen Java Basics - Anfänger-Themen 1
L Datenpaare abfragen Java Basics - Anfänger-Themen 11
O ADT Graph nach größe Abfragen Java Basics - Anfänger-Themen 42
B Serial port abfragen Java Basics - Anfänger-Themen 18
F Ordner auf alle Unterdatein abfragen Java Basics - Anfänger-Themen 3
N Abfragen eines Textes aus einem JTextField in Java, Funktion, CardLayout, Java Basics - Anfänger-Themen 2
S boolean Wert von mehreren int Möglichkeiten abfragen ? Java Basics - Anfänger-Themen 4
H Variablen Methode zum Abfragen von Variablen aus Subklassen Java Basics - Anfänger-Themen 9
T Erste Schritte Textfeld abfragen ob etwas enthalten ist. Java Basics - Anfänger-Themen 17
S Asynchrone Socket-Abfragen Java Basics - Anfänger-Themen 5
S mehrfache if-Abfragen - beste Lösung Java Basics - Anfänger-Themen 1
E Abfragen des SimpleDateFormats Java Basics - Anfänger-Themen 1
L int array abfragen Java Basics - Anfänger-Themen 16
T Variablen Var aus While-Schleife abfragen -.-' Java Basics - Anfänger-Themen 9
Y Mehrdimensionales Array diagonal abfragen. Java Basics - Anfänger-Themen 5
S Datenbank auf Knopfdruck abfragen Java Basics - Anfänger-Themen 8
T if abfragen verkürzen Java Basics - Anfänger-Themen 5
M Wo Hilfsvariablen abfragen? Java Basics - Anfänger-Themen 1
M Farben/Color Abfragen von Farben innerhalb einer Methode Java Basics - Anfänger-Themen 9
M "Exceptions abfragen" Java Basics - Anfänger-Themen 6
M Frage nach BestPractice in if-Abfragen Java Basics - Anfänger-Themen 1
P Anlegen und Abfragen von Array List Java Basics - Anfänger-Themen 4
R IF Abfragen Java Basics - Anfänger-Themen 8
R If Abfragen Problem! Java Basics - Anfänger-Themen 4
I Button abfragen ob er geklickt wurde Java Basics - Anfänger-Themen 4
C If Abfragen Problem Java Basics - Anfänger-Themen 46
I Drei booleans abfragen Java Basics - Anfänger-Themen 2
R Input/Output Java String abfragen Java Basics - Anfänger-Themen 3
A Vokabel abfragen Java Basics - Anfänger-Themen 3
R Datentypen Datentyp eines Werts in einer Textdateizeile abfragen und ändern Java Basics - Anfänger-Themen 4
N Best Practice Stilistische Anwendung von if/else-Abfragen Java Basics - Anfänger-Themen 7
E Checkboxen abfragen Java Basics - Anfänger-Themen 10
H if abfragen Java Basics - Anfänger-Themen 38
C TreeMap Abfragen Problem Java Basics - Anfänger-Themen 7
S Abfragen wenn das ende einer Tabelle erreicht ist Java Basics - Anfänger-Themen 8
B mehrere Abfragen zusammenfügen Java Basics - Anfänger-Themen 3
H durch Schleife 50 Variablen abfragen Java Basics - Anfänger-Themen 8
B If abfragen! Java Basics - Anfänger-Themen 9
J checkbox status abfragen und drucken Java Basics - Anfänger-Themen 13
M AWT Applet - Button aus anderer Klasse abfragen Java Basics - Anfänger-Themen 4
F Bedingungen mit Abfragen verknüpfen Java Basics - Anfänger-Themen 7
P länge von array abfragen? Java Basics - Anfänger-Themen 2
Gossi Input/Output Datei Lesen, inhalt abfragen, speichern Java Basics - Anfänger-Themen 5
T jNumberField auf null abfragen Java Basics - Anfänger-Themen 5
Z Erste Schritte LinkedList Werte abfragen und vergleichen Java Basics - Anfänger-Themen 3
S Input/Output Welche Möglichkeiten Eingabe von User abfragen Java Basics - Anfänger-Themen 5
H Checkboxstatus abfragen Java Basics - Anfänger-Themen 10
S unzulässigen Wert abfragen - aber wo Java Basics - Anfänger-Themen 3
eLogic Aktive Internetverbindung abfragen Java Basics - Anfänger-Themen 21
B Abfragen eines Preises.. Java Basics - Anfänger-Themen 20
D Touchpad abfragen?! Java Basics - Anfänger-Themen 9
D Abfragen ob Excel-Dateien Makros enthalten? Java Basics - Anfänger-Themen 4
B Abfragen eines Excel-Feldes auf null Java Basics - Anfänger-Themen 17
B GridLayout - elemente mit Maus abfragen Java Basics - Anfänger-Themen 3
B Daten in Instanz einer Klasse ändern / abfragen Java Basics - Anfänger-Themen 12
M Datentypen String mit Trennzeichen abfragen Java Basics - Anfänger-Themen 7
D GUI Checkboxen in allen Klassen abfragen? Java Basics - Anfänger-Themen 5
B OOP String auf bestimmte Zeichen abfragen Java Basics - Anfänger-Themen 4
M Double.NaN abfragen Java Basics - Anfänger-Themen 6
J Performance Vergleich von if-Abfragen mit mehreren Bedingungen Java Basics - Anfänger-Themen 9
H Objecttyp abfragen... Java Basics - Anfänger-Themen 11
N Zeilenanzahl einer TXT abfragen..? Java Basics - Anfänger-Themen 11
S Bremsen 3 IF-Abfragen ein Programm? Java Basics - Anfänger-Themen 7
T scanner bestimmtes format abfragen Java Basics - Anfänger-Themen 5
T JOptionPane mit .showInputDialog: Ergebnis abfragen? Java Basics - Anfänger-Themen 2
S Absatz aus Textdokument abfragen Java Basics - Anfänger-Themen 6
B gedrückte Tasten abfragen Java Basics - Anfänger-Themen 11
JFeel-x JComponent<-----Eigenschaften<-- Als Liste abfragen? Java Basics - Anfänger-Themen 8
P Pixelfarbe abfragen Java Basics - Anfänger-Themen 8
J einfache Tastendrücke in einem JFrame abfragen Java Basics - Anfänger-Themen 2
S if-Abfragen bringen mich zum VERZWEIFELN! Java Basics - Anfänger-Themen 12
B Aus JTable ImageIcon abfragen Java Basics - Anfänger-Themen 8
hdi Desktop-Auflösung abfragen -> setLocation() von Frame Java Basics - Anfänger-Themen 5
D jeditorpane checkbox abfragen? Java Basics - Anfänger-Themen 7
A Googel Lokal abfragen Java Basics - Anfänger-Themen 7
G in einem inputstream auf " " abfragen? Java Basics - Anfänger-Themen 3
T Rechner-Name abfragen Java Basics - Anfänger-Themen 6
N Event auf JTabbedPane abfragen ? Java Basics - Anfänger-Themen 8
M Maus position abfragen und setzen? Java Basics - Anfänger-Themen 1
L JTabel abfragen ob es eine erste Zeile gibt? Java Basics - Anfänger-Themen 2
G If Abfragen Java Basics - Anfänger-Themen 3
T Variablen Classübergreifen abfragen Java Basics - Anfänger-Themen 6
S Abfragen ob Label enabled ist . Java Basics - Anfänger-Themen 2
M Status von ext. Programm abfragen Java Basics - Anfänger-Themen 2
G [Applet] Mauskkoodinaten abfragen Java Basics - Anfänger-Themen 3
C String.split("") einzelne Positionen abfragen Java Basics - Anfänger-Themen 10
R Vector mit contains abfragen Java Basics - Anfänger-Themen 32
T String splitten und auf fehler abfragen Java Basics - Anfänger-Themen 3
V thread, variable abfragen Java Basics - Anfänger-Themen 14
F Abfragen aber wie ? Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben