10.^рбобц][ение—мать учения

В каждой стопке может быть некоторое число карт — очевидно, что не более 104 (РАСК_ТОТА1_). Поэтому величину третьего измерения массива примем равной PACK_TOTAL:

h01981.jpg

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