uses crt;
procedure kartver(tplm,kart1,kart2,kart3,kart4,ktplm,isarettk,yazil:integer);
var
oyuncukart1,yaz,yazk,kasakart1:integer;
cvp:char;
isarett,isaretk:integer;
begin
randomize;
{------------oyuncu istemeyene kadar yeni kar verme-----------}
repeat
writeln('(K)a§t m (P)as m');
readln(cvp);
if cvp='k' then
begin
repeat
oyuncukart1:=(random(52)+1);
isarett:=oyuncukart1 div 13;
oyuncukart1:=oyuncukart1 mod 13;
yaz:=oyuncukart1;
if (oyuncukart1=11) or (oyuncukart1=12) or (oyuncukart1=0) then yaz:=10;
if oyuncukart1=1 then yaz:=11;
until (oyuncukart1<>kart1) and (oyuncukart1<>kart2) and (oyuncukart1<>kart3) and (oyuncukart1<>kart4);
case isarett of
0:write('verilen kart:kupa ');
1:write('verilen kart:sinek ');
2:write('verilen kart:karo ');
3:write('verilen kart:maca ');
else write('verilen kart:maca ');
end;
if oyuncukart1=11 then writeln('vale');
if oyuncukart1=12 then writeln('kz');
if oyuncukart1=0 then writeln('papaz');
if oyuncukart1=1 then writeln('as');
if (oyuncukart1<>11) and (oyuncukart1<>12) and (oyuncukart1<>0)
and (oyuncukart1<>1) then writeln(yaz);
tplm:=tplm+yaz;
if (tplm>21) and (kart1<>1) and (kart2<>1) and (oyuncukart1<>1) then writeln('yandnz');
if ((kart1=1) or(kart2=1) or (oyuncukart1=1)) and (tplm>21) then
tplm:=tplm-10;
writeln('toplam:',tplm);
end;
until (cvp='p') or (tplm>21);
{--------kasaya 16'y gecene kadar kart verme--------------}
repeat
repeat
kasakart1:=(random(52)+1);
isaretk:=kasakart1 div 13;
kasakart1:=kasakart1 mod 13;
yazk:=kasakart1;
if (kasakart1=11) or (kasakart1=12) or (kasakart1=0) then yazk:=10;
if kasakart1=1 then yazk:=11;
until (kasakart1<>kart1) and (kasakart1<>kart2) and (kasakart1<>kart3) and (kasakart1<>kart4)
and (kasakart1<>oyuncukart1);
ktplm:=ktplm+yazk;
until ktplm>16;
{----------bilgi verme--------------------------------------------}
{---------kasann ilk iki kartndan gizli olan--------------------------}
if (ktplm>tplm) and (ktplm<22) then
begin
case isarettk of
0:write('kasann di§er kartlar: kupa ');
1:write('kasann di§er kartlar: sinek ');
2:write('kasann di§er kartlar: karo ');
3:write('kasann di§er kartlar: ma‡a ');
else write('kasann di§er kartlar: ma‡a ');
end;
if kart4=11 then write('vale');
if kart4=12 then write('kz');
if kart4=0 then write('papaz');
if kart4=1 then write('as');
if (kart4<>11) and (kart4<>12) and (kart4<>0)
and (kart4<>1) then write(yazil);
{---------kasann di§er kartlar------------------------------------}
if ((ktplm>tplm) and (ktplm<22)) then begin
case isaretk of
0:write(' - kupa ');
1:write(' - sinek ');
2:write(' - karo ');
3:write(' - ma‡a ');
else write('- ma‡a ');
end;
if kasakart1=11 then writeln('vale');
if kasakart1=12 then writeln('kz');
if kasakart1=0 then writeln('papaz');
if kasakart1=1 then writeln('as');
if (kasakart1<>11) and (kasakart1<>12) and (kasakart1<>0)
and (kasakart1<>1) then writeln(yazk);
end;
end;
{--------puan alma durumlar-----------------------------------------}
if (ktplm>21) and (tplm<22) then writeln('kasa batt oyuncu 1 puan');
if (tplm>21) and (ktplm<22) then writeln('oyuncu batt kasa 1 puan');
if (ktplm>tplm) and (ktplm<22)
then writeln('kasa kazand kasann eli:',ktplm, ' ### 1 puan kasann')
else if (tplm>ktplm) and (tplm<22) then writeln('oyuncu kazand ### 1 puan oyuncunun');
if (tplm>21) and (ktplm>21) then writeln('kasa da oyuncu da yand puan verilmedi');
if tplm=ktplm then writeln('eller eŸit puan verilmedi');
end;
{---------------------------------------------------------------------------}
var
kart:array[1..20] of integer;
isaret:array[1..20] of integer;
yaz1:array[1..20] of integer;
toplam,ktoplam:integer;
cvp,cevap:char;
begin
clrscr;
randomize;
repeat
clrscr;
{-------------------oyuncunun birinci kart belirlenir-------------------}
kart[1]:=(random(52)+1);
isaret[1]:=kart[1] div 13;
kart[1]:=kart[1] mod 13;
yaz1[1]:=kart[1];
if (kart[1]=11) or (kart[1]=12) or (kart[1]=0) then yaz1[1]:=10;
if kart[1]=1 then yaz1[1]:=11;
case isaret[1] of
0:write('birinci kart:kupa ');
1:write('birinci kart:sinek ');
2:write('birinci kart:karo ');
3:write('birinci kart:maca ');
else write('birinci kart:maca');
end;
if kart[1]=11 then write(' vale');
if kart[1]=12 then write(' kz');
if kart[1]=0 then write(' papaz');
if kart[1]=1 then write(' as');
if (kart[1]<>11) and (kart[1]<>12) and (kart[1]<>0)
and (kart[1]<>1) then write(yaz1[1]);
{-----------------oyuncunun ikinci kart---------------------------------}
kart[2]:=(random(52)+1);
isaret[2]:=kart[2] div 13;
kart[2]:=kart[2] mod 13;
yaz1[2]:=kart[2];
if (kart[2]=11) or (kart[2]=12) or (kart[2]=0) then yaz1[2]:=10;
if kart[2]=1 then yaz1[2]:=11;
case isaret[2] of
0:write(' ,ikinci kart:kupa ');
1:write(' ,ikinci kart:sinek ');
2:write(' ,ikinci kart:karo ');
3:write(' ,ikinci kart:maca ');
else write(' ,ikinci kart:maca ');
end;
if kart[2]=11 then write('vale');
if kart[2]=12 then write('kz');
if kart[2]=0 then write('papaz');
if kart[2]=1 then write('as');
if (kart[2]<>11) and (kart[2]<>12) and (kart[2]<>0)
and (kart[2]<>1) then write(yaz1[2]);
{-------------oyuncunun kartlarnn de§erleri toplam--------------}
toplam:=yaz1[2]+yaz1[1];
if (yaz1[1]=11) or (yaz1[2]=11) then
writeln(' (toplam:',toplam,' ya da ',toplam-10,')')
else
writeln(' (toplam:',toplam,')');
{-------------kasann ilk kart------------------------------}
repeat
kart[3]:=(random(52)+1);
until (kart[3]<>kart[1]) or (kart[3]<>kart[2]);
isaret[3]:=kart[3] div 13;
kart[3]:=kart[3] mod 13;
yaz1[3]:=kart[3];
if (kart[3]=11) or (kart[3]=12) or (kart[3]=0) then yaz1[3]:=10;
if kart[3]=1 then yaz1[3]:=11;
case isaret[3] of
0:write('kasann ack kart:kupa ');
1:write('kasann ack kart:sinek ');
2:write('kasann ack kart:karo ');
3:write('kasann ack kart:maca ');
else write('kasann ack kart:maca ');
end;
if kart[3]=11 then writeln('vale');
if kart[3]=12 then writeln('kz');
if kart[3]=0 then writeln('papaz');
if kart[3]=1 then writeln('as');
if (kart[3]<>11) and (kart[3]<>12) and (kart[3]<>0)
and (kart[3]<>1) then writeln(yaz1[3]);
{---------------kasann ikinci kart---------------------------}
repeat
kart[4]:=(random(52)+1);
until (kart[4]<>kart[1]) or (kart[4]<>kart[2]) or(kart[4]<>kart[3]);
isaret[4]:=kart[4] div 13;
kart[4]:=kart[4] mod 13;
yaz1[4]:=kart[4];
if (kart[4]=11) or (kart[4]=12) or (kart[4]=0) then yaz1[4]:=10;
if kart[4]=1 then yaz1[4]:=11;
{-----------kasann kartlar de§erleri toplam-----------------}
ktoplam:=yaz1[4]+yaz1[3];
{------------blackjack olmas durumlar-------------------------}
if (toplam=21) and (ktoplam<>21) then begin
writeln('#BLACKJACK#');
writeln('2 puan kazandnz');
writeln('oyuncu:2 kasa:0');
end;
if (ktoplam=21) and (toplam<>21) then begin
writeln('kasa #BLACKJACK#');
writeln;
case isaret[4] of
0:write('kasann di§er kartlar: kupa ');
1:write('kasann di§er kartlar: sinek ');
2:write('kasann di§er kartlar: karo ');
3:write('kasann di§er kartlar: ma‡a ');
else write('kasann di§er kartlar: ma‡a ');
if kart[4]=11 then writeln('vale');
if kart[4]=12 then writeln('kz');
if kart[4]=0 then writeln('papaz');
if kart[4]=1 then writeln('as');
if (kart[4]<>11) and (kart[4]<>12) and (kart[4]<>0)
and (kart[4]<>1) then writeln(yaz1[4]);
end;
writeln;
writeln('2 puan kasann');
writeln('oyuncu:0 kasa:2');
end;
{---------------blackjack olmaz ise kartverme prosedr devreye girer----}
if (toplam<21) and (ktoplam<21) then
kartver(toplam,kart[1],kart[2],kart[3],kart[4],ktoplam,isaret[4],yaz1[4]);
write('devam etmek istiyormusunuz(E/H):');
readln(cevap);
until (cevap='h') or (cevap='H');
end.