Первый игрок делает ход в "дурака" - определить, сможет ли второй игрок побить эту карту - 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.