Ich schlage vor, die sich auf die Positionen der Zellen durch einen nullbasierten Index. Es erleichtert die Verwendung von mathematischen Tricks wie Modulo oder Integer-Division zur Auswahl von Zeilen oder Spalten. Andernfalls müssen Sie eine Menge Offsets verwenden, um Fehler in Einzelschritten zu vermeiden.
IE, könnte das Board beschriftet werden:
0 1 2
3 4 5
6 7 8
Der Spielzustand kann mit einem Zeichenfeld dargestellt werden, mit Zeichen ‚-‘ leer bedeutet, und x und o x und o bedeutet dort gespielt.
Hier ist eine menschliche Spielansicht und das Spiel in einer String-Array gespeichert:
x
o x o
o x
var state = "-x-oxoox-";
Um zu überprüfen, ob ein Spiel gewonnen hat, läßt eine Funktion machen.
Die Funktion gibt '-' zurück, wenn niemand gewonnen hat, 'x' wenn x gewonnen hat und 'o' wenn o gewonnen hat.
Ich werde Sie mit einer Implementierung starten, die jeden Pfad hart zu überprüfen hart überprüft. Dann zeige ich, wie man die zu prüfenden Pfade erzeugt.
function WhoIsWinningHardCode(state) {
var rows = IsWin(state, [[0,1,2],[3,4,5],[6,7,8]]);
var cols = IsWin(state, [[0,3,6],[1,4,7],[2,5,8]]);
var diagUp = IsWin(state, [[6,4,2]]);
var diagDown = IsWin(state, [[0,4,8]]);
if (rows !== '-') return rows;
if (cols !== '-') return cols;
if (diagUp !== '-') return diagUp;
return diagDown;
}
function WhoIsWinningGeneratePaths(state) {
var rows = IsWin(state, GenPaths(3, 0, 1, 3));
var cols = IsWin(state, GenPaths(3, 0, 3, 1));
var diagUp = IsWin(state, GenPaths(1, 2, 2, 0));
var diagDown = IsWin(state, GenPaths(1, 0, 4, 0));
if (rows !== '-') return rows;
if (cols !== '-') return cols;
if (diagUp !== '-') return diagUp;
return diagDown;
}
function GenPaths(count, start, incrementA, incrementB) {
var paths = [];
for (var i = 0; i < count; i++) {
var path = [];
for (var j = 0; j < 3; j++) {
path.push(start + i*incrementB + j*incrementA)
}
paths.push(path);
}
return paths;
}
function IsWin(state, paths) {
for (var i = 0; i < paths.length; i++) {
var path = paths[i];
var a = state[path[0]];
var b = state[path[1]];
var c = state[path[2]];
if (a !== '-')
if (a == b)
if (a == c)
return a;
}
return '-';
}
„Ich zum Beispiel, ob die Werte der Zellen a1 = b1 = c1, Entscheidungen treffen will oder a1 = b2 = c3 usw. " Ich weiß nicht genau, was du meinst, kannst du ein wenig ausarbeiten –
Um es auszuarbeiten, es ist ein Tic Tac Toe Spiel. Also möchte ich Entscheidungen basierend auf den eingegebenen Werten treffen. Und die eingegebenen Werte sind in diesem Array. – Ayan
Angenommen, die Benutzer haben auf die Zellen a1, b2 und c3 geklickt, was die Diagonale von links ist, dann muss ich überprüfen, ob diese Zellen die gleichen Werte haben, um den Gewinner zu deklarieren. – Ayan