SLEEP 1

card% = 0: row% = 25: column% = 35

GOSUB drawcard

END

Перейдем к подпрограмме drawcard (с текстом этой подпрограммы можно ознакомиться по приведенному в "Приложениях" файлу SOLIT . ВАЗ). Первоначально она была разработана только для показа лицевой стороны карт, но вскоре выяснилась необходимость вывода на дисплей изображения обратной стороны, а также стирания изображений карт. Этот факт иллюстрирует процесс доработок при восходящей разработке программ. Подпрограмма начинается с анализа номера карты. Если номер карты меньше нуля, то задается пурпурный цвет символов на голубом фоне и в массив записываются символы для показа оборотной стороны. При нулевом номере задается зеленый цвет символов для стирания изображения карты, а при номере большем 52 — ярко-зеленый для показа того места на карточном столе, которое предназначено для складывания стопки карт.

При положительном номере не превышающем 52 сначала производится запись "пустышек" во 2, 3 и 4 элементы массива. Затем определяются ранг карты в пределах масти и символ масти. На всякий случай строятся строки, содержащие 1, 2 и 3 символа масти. В зависимости от масти задается красный или черный цвет символов (всегда на светло-сером фоне). По рангу карты и ее масти формируются и записываются 1 и 7 элементы массива, изображающие рамку карты. Затем в зависимости от ранга карты производятся изменения содержимого со 2 по 4 элементов массива. После этого содержимое 2 элемента копируется в 6, а 3 — в 5.

Когда массив из 7 строк сформирован, производится вывод изображения на заданное место экрана.

Разобравшись с построением изображения карт перейдем к известной компьютеризованной игре "Солитер" (не животное класса ленточных червей и не одиночный крупный бриллиант, вправленный в ювелирное изделие, а развлечение для единственного игрока). В эту игру можно сыграть и без компьютера, используя колоду из 52 карт. Перед началом игры колода должна быть перетасована и вдоль дальнего края стола должны быть разложены 7 стопок с количеством карт от 1 до 7 соответственно, притом в каждой стопке открывается только верхняя карта. Оставшиеся в колоде 24 карты помещаются слева от разложенных стопок. Целью игры является перемещение карт по определенным правилам, в результате которого они будут разложены на 4 стопки по их мастям и в соответствии с их рангом (ранг туза при этом считается наименьшим). Для этих стопок на столе отводятся 4 позиции и еще одна позиция нужна для открытия карт колоды.

Таким образом в ходе игры карты могут раскладываться по 13 стопкам, а количество карт в стопках может изменяться от 0 (ни одной карты в стопке) до некоторого числа, не превышающего 52. Поэтому при построении математической модели этой игры в первую очередь встает вопрос о моделировании стопки карт. Использование массива для этой цели явно недостаточно, потому что количество карт в стопке может изменяться. Для