Как получить случайный индекс из массива в love2d - PullRequest
0 голосов
/ 15 июня 2019

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

kotak = { 
    love.graphics.newImage('images/1.png'),
    love.graphics.newImage('images/2.png')
  }

И я хочу получить один из индексов этого массива, и мой код вроде этого

randomKotak = love.math.random(#kotak)  
love.graphics.draw(kotak[randomKotak], 200,200, 0.05 , 1, 1, 16, 16)

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

1 Ответ

0 голосов
/ 24 июня 2019

Чтобы расширить то, что написал Егор Скриптунов, вы можете сделать что-то вроде этого:

-- code...
randomKotak = randomKotak or love.math.random(#kotak)
love.graphics.draw(kotak[randomKotak], 200, 200, 0.05, 1, 1, 16, 16)
-- code...

Причина, по которой это работает, заключается в том, что оператор or в Lua вернет первый операнд, если он разрешится в trueили второй операнд, если нет.При первом запуске randomKotak равняется nil, принимая значение false.Это заставляет randomKotak быть установлен на второй операнд (рандомизатор).В следующий раз при запуске randomKotak будет число, которое Lua преобразует в true, в результате чего randomKotak устанавливается на себя.

Одной из проблем этого кода является то, что он создает глобальную переменную, которая может вызвать проблемы позже.Может быть лучше добавить локальный на корневом уровне в ваш код (вне функции / цикла), изменив код на что-то вроде этого:

local randomKotak = nil
function drawKotak() -- or whatever the function's called
    -- code...
    randomKotak = randomKotak or love.math.random(#kotak)
    love.graphics.draw(kotak[randomKotak], 200, 200, 0.05, 1, 1, 16, 16)
    -- code...
end

Это сделает код таким в других файлахне нарушит эту функцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...