関数定義は次のとおりです。
/**
* @param {number} x The x-coordinate (can be positive or negative)
* @param {number} y The y-coordinate (can be positive or negative)
* @param {number} tileCount The number of available tiles
* @return {number} The selected tile index
*/
function getRandomTileIndex(x, y, tileCount) {
// Fill in code here
}
たとえば、可能ですが、return x * y % tileCount
ランダム性を導入したいと思います。できますreturn Math.round(Math.random() * (tileCount-1))
が、毎回異なるタイル インデックスが返されます。
この関数を決定論的にしたいので、同じ入力を使用する(x, y, tileCount)
と常に同じ出力が発生します。しかし、私はそれが(可能な限り)均一な分布でランダムであるように見せたいと思っています.ランダム性の質は完璧である必要はありません.
このランダム タイル ジェネレーターの目的は、(ほぼ) 無限のグリッドを持つゲーム用です。ユーザーは中央から開始し、(x,y) = (0,0)
任意の方向に外側に移動します。「地面」の背景タイルは一定数しかありません。そして、ゲームをロードするたびに世界が同じように見えるようにしたい.