Почему мой OpenProcessing Sketch считывает несовместимые значения пикселей из графического буфера? - PullRequest
0 голосов
/ 21 января 2020

Моя игра OpenProcessing включает в себя управление игроком (прямоугольником) для рисования цветного следа при его движении. Trail рисуется на отдельно созданном графическом буфере, используя createGraphics (). Цель игры - раскрасить как можно большую часть буфера цветом игрока.

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

Всякий раз, когда я перезагружаю / запускаю мою Игру, я получаю противоречивые значения для счета. Даже если я не перемещаю игрока, я получаю случайные значения очков. Я ожидаю, что счет будет равен 0, но иногда он отображает 961 или другое число.

Я не уверен, неправильно ли я использую loadPixels (), или мой алгоритм вычисления счета выключен.

Вот ссылка на мой эскиз OpenProcessing.

https://www.openprocessing.org/sketch/825667

1 Ответ

0 голосов
/ 21 января 2020

В вашем эскизе вы звоните trail.drawPixels(), прежде чем вы действительно захотите загрузить пиксели.

Вы хотите что-то вроде этого:

if (timeElapsed >= 5) {
    trail.loadPixels() // draw the pixels at the point you want to calculate the score
    for (let i = 0; i < 4 * (width * height / 2); i += 4) {
        //Condition to check if matching Player Colors (color(0, 255, 255))
        if (trail.pixels[i] == 0 && trail.pixels[i + 1] == 255 && trail.pixels[i + 2] == 255)
            player1Score += 1;
    }
    displayScore();
    noLoop();
}
...