Как адаптировать код для игры в Змею, которую я пытаюсь создать?
прежде всего, спасибо, что нажали на этот пост :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 Я также не знаю, придется ли мне менять что-либо еще, так что, если бы вы могли мне помочь, это было бы здорово!
Заранее спасибо!
@Tuchi, 👍1
Обсуждение1 ответ
храните свое состояние змеи в 2d-массиве и обрабатывайте логику там: https://www.tutorialspoint.com/arduino/arduino_multi_dimensional_arrays.htm
затем напишите функцию, которая принимает 2d-массив для включения светодиодов.
для каждого перемещения вы должны проверять, есть ли граница, поэтому у вас есть ЕСЛИ в каждом направлении
например, справа:
if (pos<width){
pos+=1;
} else {
pos=0;
}
- avrdude ser_open() can't set com-state
- Float печатается только 2 десятичных знака после запятой
- ошибка: espcomm_upload_mem failed при загрузке скетча
- Печать массива байтов на экране последовательного монитора Arduino IDE
- Разные и самые быстрые способы вычисления синусов и косинусов в Arduino
- Arduino IDE Отказано В Разрешении На Загрузку, Ubuntu
- Нет заголовочных файлов (.h) в Documents\Arduino\libraries\arduino_144469 с демонстрационным кодом
- Связь Arduino master/slave с использованием RS485
возьмите два листа бумаги ... нарисуйте сетку 8х8 на каждом ... обозначьте один чем-то вроде "оригинальный", другой "измененный" ... добавьте номера строк и столбцов ... пронумеруйте каждый квадрат, чтобы он соответствовал оригиналу и вашему ... посмотрите, как исходный код движется в направлении X... используйте бумажную копию, чтобы узнать, как работает код ... адаптируйте код для вашей светодиодной матрицы ... сделайте то же самое для движения Y, @jsotola