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