Я пытаюсь создать эмулятор Game of Life. Раньше я работал с StrGrid, однако это было медленнее, и мне сказали использовать DrawGrid.
Моя программа работает с двумя массивами: strArray, который содержит все значения для следующего поколения ячеек, и currentArray, который содержит все значения для текущего поколения ячеек (оба имеют тип array [1 .. 127] массива [1 . . 127] строки; я знаю, что было бы лучше использовать логический массив, но это более старая программа). По таймеру алгоритм подсчитывает количество живых ячеек вокруг каждой ячейки и присваивает ему значение в strArray, T (обозначение живой ячейки) или F (обозначение мертвой ячейки). Затем этот шаблон записывается в currentArray для использования в следующий раз, когда необходимо вычислить живые ячейки. Затем я хотел бы изменить цвет каждой ячейки на белый, если соответствующая ячейка соответствует «F» в currentArray, и изменить ее на черный, если она соответствует «T». Я также хотел бы иметь возможность покрасить ячейку, которую я нажимаю черным, и меняю ее значение в таблице данных на «T».
Однако я не знаком с вытяжными сетками и не могу найти никакой важной информации, которая имела бы для меня какой-либо смысл. Когда я использовал строковую сетку, вы могли получить доступ к содержимому каждой ячейки, используя stringgrid.cells[stringgrid.col, stringgrid.row] := 'whatever'; однако я не могу найти аналогичный метод для DrawGrid.
Подводя итог, мне нужна помощь:
- Измените цвет ячейки в сетке внутри процедуры timer.onTick.
- Изменение цвета ячейки в сетке, когда я нажимаю на нее.
Я надеюсь, что вы можете мне помочь. Спасибо!
like this
? [Мне интересно, почему методInvalidateCell
защищен; дляTDrawGrid
это могло быть полезно как общедоступное] - person TLama   schedule 06.02.2014