10.^рбобц][ение—мать учения
В каждой стопке может быть некоторое число карт — очевидно, что не более 104 (РАСК_ТОТА1_). Поэтому величину третьего измерения массива примем равной PACK_TOTAL:
TCard We 11 [ 5.] [ 5][PACK_TOTAL] ;
I В данном случае это совершенно явное излишество — ведь реально на игровом столе никогда не будет более 104 карт, а мы резервируем место для 5*5*104 карт, то есть в 25 раз больше. Однако простота создания программы с такой высокой информационной избыточностью с лихвой окупает все затраты на память.
Да и так ли велики издержки? Попробуем их оценить. Всего имеем 5*5*104 = 2600 элементов. В каждом элементе класса TCard две переменные типа int — по 4 байта, и одна переменная типа bool (1 байт). В итоге получается 2б00*(2*4 + 1) = 23400 байтов, то есть примерно 23 Кбайт. Это капля в море для современных 32 Мбайт ОЗУ обычного быт,ового компьютера! То есть экономить в данном случае нет смысла, а выигрыш от удобства программирования превзойдет все ожидания.
Переменную Well надо разместить в описании класса TFromI главной формы Form1, в файле MainUnit.h, в последнем public-разделе.
Помимо переменной Well понадобится еще, очевидно, колода — добавьте переменную pack:
TPack Pack;
Чтобы в классе TFormI были понятны и доступны описания классов TCard и TPack, в начало файла MainUnit.cpp перед включением заголовочного файла MainUnit.h надо добавить командную строку включения файла CardUnit.h:
^include "CardUnit.h" #include "MainUnit.h"
Наверняка потребуется переменная, учитывающая, сколько карт в данный момент может выкладываться во вспомогательном ряду (правила 14-17) — от пяти до одной. Назовем такую переменную Cycle:
int Cycle;
Какие методы будут требоваться при раскладывании пасьянса? Сразу определить их трудно, но можно точно сказать, что возникнет необходимость в методе начала новой игры, добавления/снятия карты с конкретной стопки определенной группы, перемещения карты между стопками, проверки допустимости перемещения карты и проверки конца игры. Кроме того, раскладку игрового поля надо как-то показывать.
198