Как адаптировать код для игры в Змею, которую я пытаюсь создать?

arduino-uno arduino-ide neopixel joystick led-matrix

прежде всего, спасибо, что нажали на этот пост :D

Последние пару дней я пытался протестировать игру для классической игры nokia snake, которую я нашел в Интернете, но, похоже, не могу заставить ее работать.

Это и есть код: (Да, я знаю, что это на русском языке, но Google довольно хорошо переводит его на английский)

https://arcadepub.ru/2020/07/23/%d0%b8%d0%b3%d1%80%d0%b0-%d0%b7%d0%bc%d0%b5%d0%b9%d0%ba%d0%b0/#i-2 (Полная игра)

https://arcadepub.ru/2020/07/22/%d0%b7%d0%bc%d0%b5%d0%b9%d0%ba%d0%b0/ (Только сама змея)

Теперь немного о контексте: Я использую светодиодную матрицу CJMCU 8X8 Neopixel и стандартный джойстик. Как вы, вероятно, заметили, рассматриваемый код предназначен для матрицы 16x16. Причина, по которой я выбрал именно этот код, заключается в том, что он единственный, который я смог найти, который не просто сломан для меня, а также имеет объяснение того, как работает код (я вроде как хочу понять код, который я использую, чтобы позже я мог его настроить :D)

Так что, ничего страшного, верно? Если их матрица и моя матрица работают одинаково, я смогу просто менять каждые 256 на 64, каждые 16 на 8, каждые 15 на 7 и каждые 255 на 63 (исключая 255, соответствующие значениям rgb ofc), и это должно сработать.

Дело в том, что моя матрица также отличается тем, что все строки идут слева направо. Итак, в первом ряду у нас есть светодиоды от 0 до 7, во втором ряду от 8 до 15, в третьем от 16 до 23 и так далее. Этот код, однако, предназначен для строк, которые чередуют каждую строку. Итак, они начинают формироваться слева направо (0-7), но затем они меняются справа налево (15-8), а затем возвращаются слева направо (16-23), а затем снова и снова.

Итак, мне понадобится помощь в том, чтобы выяснить, что мне нужно изменить, чтобы код работал с моей матрицей. Конечно, вычисления столбцов и строк должны будут измениться, но я недостаточно умен, чтобы понять, КАК именно :P Я также не знаю, придется ли мне менять что-либо еще, так что, если бы вы могли мне помочь, это было бы здорово!

Заранее спасибо!

, 👍1

Обсуждение

возьмите два листа бумаги ... нарисуйте сетку 8х8 на каждом ... обозначьте один чем-то вроде "оригинальный", другой "измененный" ... добавьте номера строк и столбцов ... пронумеруйте каждый квадрат, чтобы он соответствовал оригиналу и вашему ... посмотрите, как исходный код движется в направлении X... используйте бумажную копию, чтобы узнать, как работает код ... адаптируйте код для вашей светодиодной матрицы ... сделайте то же самое для движения Y, @jsotola


1 ответ


0

храните свое состояние змеи в 2d-массиве и обрабатывайте логику там: https://www.tutorialspoint.com/arduino/arduino_multi_dimensional_arrays.htm

затем напишите функцию, которая принимает 2d-массив для включения светодиодов.

для каждого перемещения вы должны проверять, есть ли граница, поэтому у вас есть ЕСЛИ в каждом направлении

например, справа:

if (pos<width){
pos+=1;
} else {
pos=0;
}
,