Как случайным образом выбрать значение из массива для 2D-игры (не min, max) - PullRequest
0 голосов
/ 22 декабря 2018

Я делаю игру со змеями: если змея съест яблоко, она будет случайным образом появляться в одном из углов.

Я пробовал код, подобный getRandomInt(0, 25), но появляется в диапазоне от 0 до25: (0,1,2,3,4,5,6,7,8,9,10, ... 25)

Код, который я использовал:

var grid = 16;

if (cell.x === apple.x && cell.y === apple.y) {
    snake.maxCells++;        
    apple.x = getRandomInt(0, 25) * grid;
    apple.y = getRandomInt(0, 25) * grid;

Iхотите, чтобы яблоко случайно появилось в одном из 4 углов карты (2d)

при x = 25 или 0

или

при y = 25 или 0

не: х, у в 1 или 2 или 3 или 4 или .. 24

Ответы [ 2 ]

0 голосов
/ 22 декабря 2018

Math.random () дает вам 0-0.99999999 (не уверен в точности), затем вы можете умножить его на нужное вам число.

Math.random () * 2 дает вам число от 0-2(исключая 2), Math.random () * 100 дает вам число от 0-99.999999 .. (не 100)

Вы можете сделать это с плавающей точкой int с помощью Math.floor () ... Math.floor (Math.random () * 100) ... так что вы получите число от 0 до 99

Попробуйте использовать это в своем файле, чтобы получить подсказку ^^

<script>
for (let i = 0; i < 100; i++)
{
    console.log(Math.floor(Math.random() * 100))
}
</script>
0 голосов
/ 22 декабря 2018

Если размер вашей сетки равен grid, тогда не используйте жесткий код 25 в своем коде, а используйте эту переменную.

Вам нужен только выбор между двумя значениями, поэтому:

apple.x = getRandomInt(0, 1) * grid;

Предположим, getRandomInt работает так.Конечно, вы можете сделать это с помощью встроенной функции Math.random:

apple.x = (Math.random() >= 0.5) * grid;
...