Я бы хотел предложить совершенно другое решение.Обычно приходится обрабатывать сгенерированную графику только для вывода, то есть вы не хотите читать состояние из графики, потому что это будет слишком медленно.Вы должны будете сохранить состояние ячеек в другом месте, как в двумерном массиве.логическое [] [] или int [] [] например.Тогда вам понадобится метод «рендеринга», который берет значения ваших ячеек и выводит их.
Но я бы хотел предложить еще более холодный способ сделать это.Вместо хранения двумерного массива используйте (одномерный) массив, из которого состоит BufferedImage.Обычно каждый «пиксель» является элементом в этом массиве.Затем вы используете drawImage, чтобы нарисовать это изображение и увеличить его.Это может работать очень хорошо.Возможно, вам удастся в реальном времени нарисовать весь экран в реальном времени.
Существуют различные методы BufferedImage, поначалу это немного сбивает с толку.В конце концов вы найдете DataBuffer где-нибудь.Вам понадобится доступ к int [].
Затем, чтобы установить ячейку: data [y * width + x] = -1;(белая ячейка), чтобы очистить ячейку: data [y * width + x] = 0;(черная клетка) (например - или наоборот - или любой другой цвет).
Вы можете по-настоящему полюбить это.Вы можете использовать различные переменные смещения вместо того, чтобы постоянно вычислять y * width + x, и действительно оптимизировать его.На самом деле, я зашел настолько далеко, что смог сделать его настолько эффективным, что вы могли бы превзойти другого парня, создавшего точно такую же программу на C ++.