Исходник программы, показывающей пример создания расширенной версии Tic-Tac-Toe, в которой победителем становится игрок, получивший 4 шара в линию, по горизонтали, вертикали или диагонали.
Игра обычно ведется на доске шириной 7 столбцов и высотой 6 строк с дополнительным ограничением, согласно которому шар, положенный в любом столбце, должен занимать самое нижнее пустое место в нем. В этой версии реализована игра «Человек против человека».
Доска определяется как двумерный массив целых чисел: 0 представляет собой пустой слот, 1 и 2 указывают, что это пространство занято игроками 1 и 2 соответственно. Image1 - это компонент TImage, который содержит изображение платы. Я выбрал круговой компонент TShape, NewChip, чтобы представить следующий токен, который будет воспроизведен. Для перемещения NewChip перетаскивают горизонтально по верхней части изображения доски и опускают в выбранный столбец. И Image1, и NewChip были перенесены на TPanel, чтобы упростить расчет координат (панель представляет собой элемент управления TWindow, который является родительским для NewChip и Image1. Изображение1 выровнено так, чтобы заполнить панель, поэтому для рисования платы и токена можно ссылаться на (0,0) в верхнем левом углу.
Событие OnMouse для NewChip используются для обнаружения выбора, перемещения и сброса токена. Во время сброса шар постепенно перемещается вниз до самого нижнего открытого положения. Оказавшись там, на изображении рисуется круг, и NewChip возвращается в исходное положение (с цветом другого игрока).