Как реализовать игровую логику на примере данного приложения?
Не совсем понимаю, а что тут особо сложного? Что-то типа простенькой задачи на графах. У каждой ячейки поля есть свойства: bool - есть ли в ней провод (или string/int, если может быть не только провод, но и еще что-то, например лампа), и еще 4 bool соответствующие сторонам (вверх, вниз, влево, вправо), по которым становится понятно, куда выходит провод. при каждом обновлении игры (обновлении в плане поворота провода или что-то типа того) в лоб идти по всем источникам питания по очереди и смотреть, выходят ли на лампу провода от нее. Если выходят - зажигать ее. С ходу мне чем то напомнило алгоритм Прима. Хотя тут совсем другое, но что-то общее в них определенно есть, а именно мне так кажется рекурсивная функция для прохода всех вариантов тут будет функцию для проверки на наличие зацикливаний в том алгоритме
Всё просто. У вас есть 2d массив - карта поля. В каждой ячейке хранится объект - лампа, батарея, провод. У проводов есть свойство - четыре переменные проводимости: left, right, up, down. Какая из них true - значит в ту сторону есть соединение.
Далее создаёте второй 2d массив - карта электричества, размер такой же, но в каждой ячейке значение true/false - есть электричество или нет электричества.
Теперь ваша задача в том, чтобы, начиная от батарей, заполнить карту электричества согласно проводам.
Как только это сделано, смотрите на ваши лампы, смотрите куда у них идёт контакт, есть ли у той ячейки электричество и есть ли соединение с этой ячейкой.
Для этого в цикле обрабатываете каждую батарею: начинаете с позиции батареи присваивать true в карту электричества, идёте по карте по направлению проводов, там где разветвление - применяете рекурсию. Как только ходов не останется - переходите к следующей батареи. Если в ячейке уже есть электричество - игнорируете.
Когда все батареи будут обработаны переходите к лампам и зажигаете их, если всё в порядке.
Как только происходит изменение поля (поворот провода/перемещение), то очищаете карту электричества, выключаете все лампы и прогоняете алгоритм снова. Происходит это за доли секунды.