Вывод в окне программы изображений в соответствии с содержимым двумерного массива - Java
Формулировка задачи:
Есть курсовой проект: игра "Инь-Ян" (что-то на подобии "Жизни" Конвея).
Краткая постановка задачи.
Игра «Инь-Ян» представляет собой клеточный автомат, состояния ячеек и правила переключения которого приближённо отражают закон единства и борьбы противоположностей. Ячейки автомата имеют три состояния: пустая ячейка (мёртвая), живая ячейка Инь и живая ячейка Ян. Соседние по-Муру ячейки (у каждой ячейки их 8), если они живые, называются соседями.
На данный момент реализована часть функционала программы, основная логика. В частности реализован метод, подсчитывающий соседей, проверяющий условия рождения\смерти в ячейке и в итоге создающий двумерный массив, отражающий шаг игры. На выходе получается что-то на подобии:
int[][] aRandomArray =
{{0, 0, 0, 1, 0, 1, 0, 2, 0, 0},
{2, 0, 2, 0, 0, 0, 0, 1, 0, 0},
{0, 0, 2, 2, 0, 0, 1, 0, 0, 0},
{0, 0, 1, 0, 2, 0, 0, 1, 2, 0},
{0, 2, 0, 0, 0, 0, 1, 1, 2, 0},
{0, 0, 1, 0, 2, 0, 0, 2, 2, 0},
{0, 0, 1, 0, 2, 2, 0, 0, 1, 0},
{0, 0, 2, 0, 0, 0, 2, 0, 0, 0},
{0, 0, 1, 1, 1, 0, 0, 0, 0, 2},
{0, 0, 2, 2, 0, 0, 0, 0, 1, 0}};
представляющее игровое поле 10х10, где 0 - мёртвая клетка, 1 - Инь, 2 - Ян. Далее берётся этот массив, передаётся
этому же методу на вход и так до бесконечности. Но эта реализация подходит только для консоли, а задача стоит сделать в GUI.
Прошу поделиться идеями, как лучше всего представить данный массив в программе средствами Java Swing, AWT. При этом за место 0 - выводиться картинка с чёрным фоном, 1 - соответственно символ Инь, 2 - Ян. Задача усложняется тем, что состояния клеток меняются на каждом шаге, в зависимости от того, сколько и какие соседи у каждой конкретной клетки. И эти шаги так же должны отображаться в реальном времени с определённой задаваемой задержкой.
Как-то так. Заранее спасибо! Любой готовый код могу выложить по необходимости.
Решение задачи: «Вывод в окне программы изображений в соответствии с содержимым двумерного массива»
textual
Листинг программы
package arraytotable; import javax.swing.table.AbstractTableModel; /** * * @author Nicholas White */ public class CustomTableModel extends AbstractTableModel { int[][] aRandomArray = {{0, 0, 0, 1, 0, 1, 0, 2, 0, 0}, {2, 0, 2, 0, 0, 0, 0, 1, 0, 0}, {0, 0, 2, 2, 0, 0, 1, 0, 0, 0}, {0, 0, 1, 0, 2, 0, 0, 1, 2, 0}, {0, 2, 0, 0, 0, 0, 1, 1, 2, 0}, {0, 0, 1, 0, 2, 0, 0, 2, 2, 0}, {0, 0, 1, 0, 2, 2, 0, 0, 1, 0}, {0, 0, 2, 0, 0, 0, 2, 0, 0, 0}, {0, 0, 1, 1, 1, 0, 0, 0, 0, 2}, {0, 0, 2, 2, 0, 0, 0, 0, 1, 0}}; @Override public int getRowCount() { return 10; } @Override public int getColumnCount() { return 10; } @Override public Object getValueAt(int rowIndex, int columnIndex) { return aRandomArray[rowIndex][columnIndex]; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д