Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
45
Добавлен:
10.02.2015
Размер:
320.51 Кб
Скачать

Type

//Масть карты и ее достоинство определены

//типом перечисление

TMast

= (pic, trf, bub, che);

TGrade = (_6, _7, _8, _9, _10, Valet,

 

Dame, King, Tuz);

TSetGrade = set of TGrade;

TCards

= array[TMast] of TSetGrade;

//Массивы соответствия для вывода

Const SMast : array[TMast] of string[3] =

('pic','trf','bub','che'); BGrade : array[TGrade] of byte =

(6, 7, 8, 9, 10, 3, 4, 5, 11);

// Функция формирования исходной колоды Function CardPack(Out Cards : TCards) : Boolean;

Var Mast : TMast; Grade : TGrade;

Begin

for Mast:=pic to che do begin

Cards[Mast]:=[];

for Grade:=_6 to Tuz do

Cards[Mast]:=Cards[Mast] + [Grade];

end;

Result:=true;

End;

//Вывод содержимого произвольной колоды

//по мастям

Function OutPack(Cards : TCards) : Boolean;

Var Mast : TMast; Grade : TGrade;

Begin

for Mast:=pic to che do begin

write(SMast[Mast]:7,' : '); for Grade:=_6 to Tuz do

if Grade in Cards[Mast] then write(BGrade[Grade]:5);

writeln;

end;

writeln;

Result:=True;

End;

//Сдать карту в колоду игрока CardsG

//из колоды сдающего CardsD

//true – карта сдана; false – колода

//сдающего пуста

Function GetCard(Var CardsG, CardsD : TCards) :

Boolean;

Var Mast : TMast; Grade : TGrade;

Begin

//Если колода сдающего пуста - выход

if (CardsD[pic]=[]) and (CardsD[trf]=[]) and (CardsD[bub]=[]) and (CardsD[che]=[]) then

begin Result:=false; exit;

end;

//Бесконечный цикл поиска случайной

//карты или выход, если нашли Randomize;

repeat

Mast:=TMast(Random(4));

Grade:=TGrade(Random(9));

if Grade in CardsD[Mast] then begin

CardsD[Mast]:=CardsD[Mast] - [Grade];

CardsG[Mast]:=CardsG[Mast] + [Grade];

Result:=True;

exit;

end;

until false; End;

Var Pack, PackG1, PackG2 : TCards;

BEGIN

CardPack(Pack);

OutPack(Pack);

//Сдать 2 игрокам по 2 карты и

//вывести содержимое колод

//игроков и дилера

GetCard(PackG1, Pack); GetCard(PackG2, Pack);

GetCard(PackG1, Pack); GetCard(PackG2, Pack); OutPack(PackG1);

OutPack(PackG2);

OutPack(Pack);

readln;

END.