ich ein Design von Grund auf neu mache, ich hoffe, es hilft Ihnen.
Wenn mein Spiel Arena ist nxn Matrix von ganzen Zahlen,
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
Ich kann durch Anwendung eines solchen 3x3-Matrix eine Bombe in dieser Matrix platzieren Modell:
1 1 1
1 9 1
1 1 1
Hier 9 eine Bombe bezeichnet, Sie müssen wahrscheinlich eine größere Ganzzahl verwenden. Und wenn ich apply sage, wähle ich den Ort und inkrementiere ihn um die Zahlen in dieser 3x3-Matrix. Also lasst uns 1 Bombe platzieren:
0 1 1 1 0
0 1 9 1 0
0 1 1 1 0
0 0 0 0 0
0 0 0 0 0
Legen wir eine weitere Bombe, direkt neben der ersten. Und lassen Sie uns ein bisschen klug sein und die Lage ist nicht erhöht werden, wenn der Anfangswert in einer Zelle 9.
0 1 2 2 1
0 1 9 9 1
0 1 2 2 1
0 0 0 0 0
0 0 0 0 0
Lassen Sie uns ein anderes diesmal irgendwo unten platzieren.
0 1 2 2 1
0 1 9 9 1
0 1 3 3 2
0 0 1 9 1
0 0 1 1 1
Also wenn ich versuche, Zahlen von unten rechts zu enthüllen. Was sollte mein Algorithmus sein? Hier ist meine nehmen:
function revealCell(location)
{
if(cellValueIsRevealed(location)) {
return;
}
var value = revealValueOfCell(location);
if(value > 0)
{
return;
}
foreach(neighbor in neighbors)
{
revealCell(neighbor);
}
}
Zur Umsetzung cellValueIsRevealed
Methode, eine Möglichkeit wäre, eine Matrix von booleans zu implementieren.
Ich denke, es ist etwas Ähnliches wie der [Flood fill] (https://en.wikipedia.org/wiki/Flood_fill) Algorithmus. –
Danke für Ihre Hilfe, wissen Sie, ob es einen einfacheren Algorithmus gibt? – naikjones
Sie werden es schwer haben, einen einfacheren Algorithmus als [this] (https://en.wikipedia.org/wiki/Flood_fill#Stack-based_recursive_implementation_.28four-way.29) zu finden, um dieses Problem zu lösen – SirGuy