私はtic-tac-toeのJavaScriptゲームを作成し、Wikipediaの記事で概説されている戦略に基づいて賢明な動きをするほどスマートにしようとしています。 IEに2つのXまたは2つのOsがある行または列がある場合は、空の位置を取る。 OBJ { KEY1: "X"、 KEY2: ""、 KEY3: "X"、 }オブジェクト内の特定のキー/値を効率的にソート型関数を使用して更新する方法
私が持っているので、キーと値のペアの行または列与えられ、値があるかもしれないと言うことができしばらくの間これを行う方法に取り組んできましたし、一連のループ以外でこれを行う方法があるのならば、興味があります。私の最初の試みはアルファベット順にアイテムをソートしようとしていましたので、空白の値を切り分けることができました:var = "" "X" "X"
この場合、簡単に最初のアイテムを呼び出して更新できます私はそれを元の位置に戻すことはできません。しかし、無駄なコードがたくさん作成されないように、これをどうやって行うのか分かりません。おそらく複数のループに分割する方が良いでしょうか? 1つの空白のスポットを持つ行と列を(それらのうちの8つが)分離する1つ?
私が持っていたもう一つのアイデアは、グリッドの各値に1の値を与え、グリッドを調べ、行が3の場合(varを作成して.eval()メソッドを使用)それぞれの項目を1にして空白の点を1に更新し、すでに1である他の2つの点を更新します。
私は可能な限り具体的にしようとしましたが、私は認めます。
$(document).ready(function(){
var playerTurn = true;
var buttonStatus = "allowclick"; // Change to inactive once game starts
var player = "";
var machine = "";
var test = "";
var emptyObj = {1: "", 2: "", 3: "",
4: "", 5: "", 6: "",
7: "", 8: "", 9: ""};
var gridObj = {1: "", 2: "", 3: "",
4: "", 5: "", 6: "",
7: "", 8: "", 9: ""};
var winningObj = [[1,2,3], [4,5,6], [7,8,9], [1,4,7], [2,5,8], [3,6,9], [1,5,9], [3,5,7]];
// Check if player is holding a corner
function machineFunction() {
// Loop through winningObj and check if there are rows/columns with 2/3 taken
// for(i = 0; i < winningObj.length; i++) {
var i = 3;
var alpha = winningObj[i][0];
var bravo = winningObj[i][1];
var charlie = winningObj[i][2];
console.log(alpha);
console.log(bravo);
console.log(charlie);
// After defining alpha/bravo/charlie, fire the fxn
testFxn(alpha, bravo, charlie);
// This is my function to sort the 3 different spots within the grid
function testFxn(a,b,c) {
// Test would be equal to ["", "X", "X"] or something similar
var test = [gridObj[a], gridObj[b], gridObj[c]].sort();
console.log(test);
console.log(gridObj);
// If 2/3 spots taken by either X or O, take this spot
if (test[0] === "" && test[1] === "X" && test[2] === "X") {
console.log("#" + alpha + "")
$('#' + alpha + '').html(machine);
gridObj[alpha] = machine;
console.log(gridObj);
$(this).html(machine); // Sends player over to html
gridObj[this.id] = machine; // Update gridObj object
playerTurn = true;
}
if (test[0] === "" && test[1] === "O" && test[2] === "O") {
// How do I get the ID I need??
$('#' + test[0] + '').html(machine);
playerTurn = true;
}
};
これはフィドルのリンクですが、私は以前のものは動作しないと思います。 (https://jsfiddle.net/1hup5195/#&togetherjs=i67M4LaRnw) –