私は20ishで20ishの "グリッド"を持っていると仮定します。私はランダムに食べ物を起動方法は、次の式である:Javascript Snake Game(魚の産卵場所)
はMath.floor(Math.random() * ((max - min)/20) + 1) + 20 * min;
これは基本的に食品がグリッドセルの1つにきちんと出現するようになります。
私はヘビの体の上に食べ物を産むのを避けたいと思います。分散ランダム性を維持しながらこれを行う最善の方法は見つけられていません。かなりの仕事をしません
ソリューション:
私は何人かの人々がこれを行う見てきましたが、それは動作しません、それは食べ物がヘビに出現しないことを保証するものではありませんので、それはちょうどそれが少なくなりますおそらく。 getRandomPoint()はまだ私にヘビのランダムなポイントを与えるかもしれません。
for (let i = 0; i < snake.length; i++) {
if (foodPosition.x === snake[i].x && foodPosition.y === snake[i].y) {
foodPosition.x = getRandomPoint();
foodPosition.y = getRandomPoint();
}
}
食品は、まだ、まだ確認されていないヘビの任意のセルに出現することができますので、この次はどちらか動作しません。たとえば、i = 0のときは、foodPosition.xとfoodPosition.yがsnake [0] .xおよびsnake [0] .yと等しいかどうかだけを確認します。このループの繰り返しで、i = 0のとき、snake [2] .x、snake [2] .yで占められていたセルで食べ物を生み出すことができます。
for (let i = 0; i < snake.length; i++) {
while (foodPosition.x === snake[i].x && foodPosition.y === snake[i].y) {
foodPosition.x = getRandomPoint();
foodPosition.y = getRandomPoint();
}
}
私が試したことがいくつかありますが、それを残しておきます。私がしようとしているようなことをする良い方法は何ですか?
このようなことをやめました。提案していただきありがとうございます。 – embracethefuture