Hallo zusammen,
ich habe jetzt mein erstes selbst programmiertes Spiel so ziemlich fertig. Ein paar Bugs sind noch vorhanden, die werden noch ausgemerzt. 🙂
Bin mit der Optik schon sehr zufrieden, aber an der Performance hängt's irgendwie noch ein wenig... 😳 Ich vermute mal es liegt an meinem Aufdeckalgorithmus.
Habt ihr eine Idee, wie ich diese unschöne Passage ändern könnte:
(Methode fragt ihre benachbarten Buttons/Felder, ob eine Mine dort liegt und ermittelt so wieviele Nachbarminen der Button hat (Zustand9 entspricht einer Mine und Zustand12 einer gesetzen Flagge auf einer Mine)). Die ganzen Exception-Fresser finde ich doch ziemlich unschön und würde sie gerne vermeiden.
Hab's auch schon statt der "try-catch-Methode" mit einer if-Abfrage vor jeder Zeile versucht. Ist aber auch nicht performanter...
Ich weiß nicht, ob ihr noch mehr Code braucht. Einfach melden. 🙂
Aufdeck-Algorithmus:
Hier zwecks Interesse noch die lauffähige .jar:
MinesweeperBETA.jar - Dropbox-Link
Über Lob und verbesserungsvorschläge bin ich immer sehr dankbar! 😉
ich habe jetzt mein erstes selbst programmiertes Spiel so ziemlich fertig. Ein paar Bugs sind noch vorhanden, die werden noch ausgemerzt. 🙂
Bin mit der Optik schon sehr zufrieden, aber an der Performance hängt's irgendwie noch ein wenig... 😳 Ich vermute mal es liegt an meinem Aufdeckalgorithmus.
Habt ihr eine Idee, wie ich diese unschöne Passage ändern könnte:
(Methode fragt ihre benachbarten Buttons/Felder, ob eine Mine dort liegt und ermittelt so wieviele Nachbarminen der Button hat (Zustand9 entspricht einer Mine und Zustand12 einer gesetzen Flagge auf einer Mine)). Die ganzen Exception-Fresser finde ich doch ziemlich unschön und würde sie gerne vermeiden.
Hab's auch schon statt der "try-catch-Methode" mit einer if-Abfrage vor jeder Zeile versucht. Ist aber auch nicht performanter...
Ich weiß nicht, ob ihr noch mehr Code braucht. Einfach melden. 🙂
Aufdeck-Algorithmus:
Java:
public void minenSuche(JButtonZustand [] [] grid) {
int anzahlMinen = 0;
try {
if ( grid[x-1][y].getZustand() == 9 || grid[x-1][y].getZustand() == 12) {
anzahlMinen++;
}
} catch (ArrayIndexOutOfBoundsException e) {}
try {
if ( grid[x-1][y-1].getZustand() == 9 || grid[x-1][y-1].getZustand() == 12 ) {
anzahlMinen++;
}
} catch (ArrayIndexOutOfBoundsException e) {}
try {
if ( grid[x][y-1].getZustand() == 9 || grid[x][y-1].getZustand() == 12) {
anzahlMinen++;
}
} catch (ArrayIndexOutOfBoundsException e) {}
try {
if ( grid[x+1][y-1].getZustand() == 9 || grid[x+1][y-1].getZustand() == 12 ) {
anzahlMinen++;
}
} catch (ArrayIndexOutOfBoundsException e) {}
try {
if ( grid[x+1][y].getZustand() == 9 || grid[x+1][y].getZustand() == 12 ) {
anzahlMinen++;
}
} catch (ArrayIndexOutOfBoundsException e) {}
try {
if ( grid[x+1][y+1].getZustand() == 9 || grid[x+1][y+1].getZustand() == 12 ) {
anzahlMinen++;
}
} catch (ArrayIndexOutOfBoundsException e) {}
try {
if ( grid[x][y+1].getZustand() == 9 || grid[x][y+1].getZustand() == 12 ) {
anzahlMinen++;
}
} catch (ArrayIndexOutOfBoundsException e) {}
try {
if ( grid[x-1][y+1].getZustand() == 9 || grid[x-1][y+1].getZustand() == 12 ) {
anzahlMinen++;
}
} catch (ArrayIndexOutOfBoundsException e) {}
Java:
public void rundOeffnen(JButtonZustand [] [] grid) {
try {
if ( grid[x-1][y].getZustand() == 10 || grid[x-1][y].getZustand() == 9 ) {
grid[x-1][y].doClick();
}
} catch (ArrayIndexOutOfBoundsException e) {}
try {
if ( grid[x-1][y-1].getZustand() == 10 || grid[x-1][y-1].getZustand() == 9 ) {
grid[x-1][y-1].doClick();
}
} catch (ArrayIndexOutOfBoundsException e) {}
try {
if ( grid[x][y-1].getZustand() == 10 || grid[x][y-1].getZustand() == 9 ) {
grid[x][y-1].doClick();
}
} catch (ArrayIndexOutOfBoundsException e) {}
try {
if ( grid[x+1][y-1].getZustand() == 10 || grid[x+1][y-1].getZustand() == 9 ) {
grid[x+1][y-1].doClick();
}
} catch (ArrayIndexOutOfBoundsException e) {}
try {
if ( grid[x+1][y].getZustand() == 10 || grid[x+1][y].getZustand() == 9 ) {
grid[x+1][y].doClick();
}
} catch (ArrayIndexOutOfBoundsException e) {}
try {
if ( grid[x+1][y+1].getZustand() == 10 || grid[x+1][y+1].getZustand() == 9 ) {
grid[x+1][y+1].doClick();
}
} catch (ArrayIndexOutOfBoundsException e) {}
try {
if ( grid[x][y+1].getZustand() == 10 || grid[x][y+1].getZustand() == 9 ) {
grid[x][y+1].doClick();
}
} catch (ArrayIndexOutOfBoundsException e) {}
try {
if ( grid[x-1][y+1].getZustand() == 10 || grid[x-1][y+1].getZustand() == 9 ) {
grid[x-1][y+1].doClick();
}
} catch (ArrayIndexOutOfBoundsException e) {}
}
Hier zwecks Interesse noch die lauffähige .jar:
MinesweeperBETA.jar - Dropbox-Link
Über Lob und verbesserungsvorschläge bin ich immer sehr dankbar! 😉