3
学校プロジェクトのためにConwayのGame of LifeのJavaScriptバージョンをプログラミングする必要がありますが、我々はエッジをループすることに固執しています。すべて正常に動作しますが、近傍にあるセルではネイバー数を計算する関数は機能しません(配列外の値を評価する必要があるため未定義です)。いくつかのオプションを試しましたが、それらはすべてプログラムの残りの機能を変更します。Stuck programming JSのConwayの "Game of Life"
グリッドのエッジで機能させるために追加する必要があるのは何ですか?
var totalNeighbors = function(x, y) {
var total = 0;
if (x > 0 && cells[(x - 1)][y] == 1) {
total++;
}
if (x < (width - 1) && cells[x + 1][y] == 1) {
total++;
}
if (y > 0 && cells[x][y - 1] == 1) {
total++;
}
if (y < (height - 1) && cells[x][y + 1] == 1) {
total++;
}
if (y > 0 && x > 0 && cells[x - 1][y - 1] == 1) {
total++;
}
if (y > 0 && x < (width - 1) && cells[x + 1][y - 1] == 1) {
total++;
}
if (y < (height - 1) && x > 0 && cells[x - 1][y + 1] == 1) {
total++;
}
if (y < (height - 1) && x < (width - 1) && cells[x + 1][y + 1] == 1) {
total++;
}
return total;
};
ありがとう!私はより多くのこのようなものでいいと思う
エッジでブロックしているかどうかを確認してください。そうであれば、あなたができないものにアクセスしようとしないでください。私は、それらのすべてがリファクタリングできると思う。そうすることで、ポイント1を簡単に適用できます。 (エッジアクセスをゼロ番目までループする必要がある場合は、モジュラス '%'はあなたの友人です) –
「エッジのブロック」とはどういう意味ですか? 'if'sをリファクタリングする方法に関する提案はありますか?私たちはそれを試して、それはさらに長いハハと判明した。 – Dat8StringGuy
「端にブロックする」とは、1つ以上の面にセルがないセルです(つまり、セルの上にセルがありません、セルの横に、セルの下にセルがあります)。食料品店、私は戻ってそれをリファクタリングで私の手を試すことができます。 (それはもっと長い解決策に終わるかもしれませんが、それはもっと洗練された解決策でなければなりません) –