Первый игрок делает ход в "дурака" - определить, сможет ли второй игрок побить эту карту - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Заданы достоинства и масти шести шести карт первого игрока, достоинства и масти шести карт второго игрока, кроме того, известна козырная масть. Вводится номер карты, с которой делает ход первый игрок, требуется составить программу определяющую сможет ли второй игрок побить эту карту.

Решение задачи: «Первый игрок делает ход в "дурака" - определить, сможет ли второй игрок побить эту карту»

textual
Листинг программы
uses crt;
const kl:array[1..36] of string[3]=
('6_П','7_П','8_П','9_П','10П','В_П','Д_П','К_П','Т_П',
 '6_Т','7_Т','8_Т','9_Т','10Т','В_Т','Д_Т','К_Т','Т_Т',
 '6_Б','7_Б','8_Б','9_Б','10Б','В_Б','Д_Б','К_Б','Т_Б',
 '6_Ч','7_Ч','8_Ч','9_Ч','10Ч','В_Ч','Д_Ч','К_Ч','Т_Ч');
type mast=(pk,tr,bb,ch);
     dost=(k6,k7,k8,k9,k10,vl,dm,kr,tz);
     karta=record
           m:mast;
           d:dost;
           s:string[3];
           end;
     mas=array[1..6] of karta;
     mnz=set of byte;
procedure razdacha(var k:mas;var m:mnz;n:byte);
var i,x:byte;
begin
for i:=1 to 6 do
 begin
  repeat
  x:=1+random(36);
  until not(x in m);
  m:=m+[x];
  k[i].s:=kl[x];
  case k[i].s[1] of
  '6':k[i].d:=k6;
  '7':k[i].d:=k7;
  '8':k[i].d:=k8;
  '9':k[i].d:=k9;
  '1':k[i].d:=k10;
  'В': k[i].d:=vl;
  'Д': k[i].d:=dm;
  'К': k[i].d:=kr;
  'Т': k[i].d:=tz;
  end;
  case k[i].s[3] of
  'П':k[i].m:=pk;
  'Т':k[i].m:=tr;
  'Б':k[i].m:=bb;
  'Ч':k[i].m:=ch;
  end;
 end;
writeln('Карты ',n,' игрока');
for i:=1 to 6 do
write(k[i].s,'   ');
writeln;
end;
function Bjet(k2,k1:karta;km:mast):boolean;
begin
Bjet:=((k2.m=km)and(k1.m<>km)){первая козырная, вторая не козырная}
or((k2.m=k1.m)and(k2.d>k1.d));{или одной масти и первая старше}
end;
var k1,k2:mas;
    m:mnz;
    km:mast;
    x,y:byte;
begin
clrscr;
randomize;
m:=[];
razdacha(k1,m,1);
razdacha(k2,m,2);
x:=1+random(4);
km:=mast(x-1);
write('Козыри ');
case x of
1:writeln('пики');
2:writeln('трефы');
3:writeln('буби');
4:writeln('червы');
end;
write('Ход первого игрока  ');
x:=1+random(6);
writeln(k1[x].s);
y:=1;
while y<=6 do
if Bjet(k2[y],k1[x],km)then
 begin
  writeln('Второй игрок бьет эту карту, например картой  ',k2[y].s);
  break
 end
else y:=y+1;
if y>6 then writeln('Второй игрок не бьет эту карту');
readln
end.

Оцени полезность:

5   голосов , оценка 4.2 из 5
Похожие ответы