USES CRT;{WINDOWS ICIN WINCRT}
CONST
CESIT:ARRAY[0..3] OF CHAR=( '', '', '', '');
GORUNUM:ARRAY[1..13]OF STRING[2]=('A','2','3','4','5','6','7','8','9','10','J','Q','K');
VAR
SECILEN:ARRAY[1..52] OF INTEGER;
TOP,CES,DEGER,DEGER2,TOP2,TOP11,PUANO,PUANK,SAYAC,SEKIL,SAYAC2,TOPILK,TOPILK2,I,KART:INTEGER;
CH:CHAR;GIZLI:STRING[2];NAME:STRING; secim,CIKAN,CIKAN2:byte;KO,KK:BOOLEAN;
PROCEDURE GETNAME(VAR NAME:STRING);
BEGIN
CLRSCR;
GOTOXY(18,10);
WRITELN('iSMiNiZi GiRiNiZ');
GOTOXY(19,14);READ(NAME);
END;{KULLANICIDAN ILGILI YERLERDE KULLANMAK ICIN ISIM ALIR}
PROCEDURE RENK;
BEGIN
TEXTBACKGROUND(WHITE);
IF (CES=0)OR(CES=1)THEN TEXTCOLOR(RED)ELSE TEXTCOLOR(BLACK);
END;{KARTLARIN ARKA PLAN VE TEXT RENGINI BELIRLER}
PROCEDURE RENK2;
BEGIN
TEXTBACKGROUND(BLACK);HIGHVIDEO;TEXTCOLOR(WHITE);
END;{ORJINAL TEXT VE ARKA PLAN RENGINI GERI YUKLER}
PROCEDURE SIFIRLA;
BEGIN
FOR I:=1 TO 52 DO
SECILEN[KART]:=0;
TOP:=0;TOP2:=0;SAYAC:=1;SAYAC2:=1;TOP11:=0;KART:=0;CIKAN:=0;CIKAN2:=0;
END;{DEGISKENLERI SIFIRLAR}
PROCEDURE PUAN_YAZ;
BEGIN
GOTOXY(14,20);WRITELN('PUAN:',PUANO);
GOTOXY(46,20);WRITELN('PUAN:',PUANK);
END;{PUANLARI ILGILI YERLERE YAZAR}
PROCEDURE OKU;
BEGIN
REPEAT
CH:=READKEY;
CH:=UPCASE(CH);
UNTIL CH IN['D','P'];
END;{KLAVYEDEN DOGRU VERI ALINMASINI SAGLAR}
PROCEDURE YENDINIZ;
BEGIN
GOTOXY(14,19);WRITELN(NAME,' KAZANDI');
PUANO:=PUANO+1;
SIFIRLA;
END;{OYUNCUNUN KAZANDIGI DURUMLARDA KULLANILIR}
PROCEDURE YENILDINIZ;
BEGIN
GOTOXY(46,19);WRITELN('MEHMET KAZANDI');
PUANK:=PUANK+1;
SIFIRLA;
END;{OYUNCUNUN KAYBETTIGI DURUMLARDA KULLANILIR}
PROCEDURE KARMA(VAR CES,DEGER:INTEGER);
BEGIN KART:=KART+1;
SECILEN[KART]:=RANDOM(52)+1;
FOR I:=1 TO KART-1 DO
BEGIN
IF SECILEN[KART]=SECILEN[I] THEN
BEGIN
REPEAT
SECILEN[KART]:=RANDOM(52)+1;
I:=1;
UNTIL SECILEN[KART]<>SECILEN[I];
END;
END;
IF (SECILEN[KART]<=13)AND(SECILEN[KART]>1) THEN CES:=0 ELSE
IF SECILEN[KART]<=26 THEN CES:=1 ELSE
IF SECILEN[KART]<=39 THEN CES:=2 ELSE CES:=3;
DEGER:=SECILEN[KART] MOD 13+1;
SEKIL:=SECILEN[KART] MOD 13+1;
IF SEKIL IN[11,12,13] THEN DEGER:=10;
END;{KARMA ISLEMINI YAPAR VE KARTIN DAHA ONCE KULLANILIP
KULLANILMADIGINI KONTROL EDER}
PROCEDURE KASA(VAR TOP2,SAYAC2:INTEGER);
BEGIN
RENK;SAYAC2:=SAYAC2+1;
{KASA ICIN AS DURUMU}
IF SEKIL=1 THEN BEGIN DEGER:=11;CIKAN2:=CIKAN2+1;END;
TOP2:=TOP2+DEGER;
IF TOP2>21 THEN BEGIN TOP2:=TOP2-CIKAN2*10;CIKAN2:=0;END;
IF SAYAC2<>3 THEN BEGIN
GOTOXY(48,SAYAC2);WRITELN(CESIT[CES],GORUNUM[SEKIL]:2);
RENK2;
GOTOXY(46,18);WRITELN('TOPLAM: ',TOP2:2);
END;
IF SAYAC2=3 THEN BEGIN
GIZLI:=GORUNUM[SEKIL];
GOTOXY(48,SAYAC2);WRITELN('# ?');
RENK2;
END;
END;{KASANIN OYUNLA ILGILI TUM ISLEMLERINI YAPAR}
PROCEDURE PLAYER(VAR TOP,SAYAC:INTEGER);
BEGIN
RENK;SAYAC:=SAYAC+1;
GOTOXY(16,SAYAC);WRITELN(CESIT[CES],GORUNUM[SEKIL]:2);
{OYUNCU ICIN AS DURUMU}
IF SEKIL=1 THEN BEGIN DEGER:=11;CIKAN:=CIKAN+1;END;
TOP:=TOP+DEGER;
IF TOP>21 THEN BEGIN TOP:=TOP-CIKAN*10;CIKAN:=0;END;
RENK2;
END;{OYUNCUNU OYUNLA ILGILI TUM ISLEMLERINI YAPAR}
PROCEDURE BASLA;
BEGIN
CLRSCR;
GOTOXY(47,1);WRITELN('MEHMET OLGAR');
GOTOXY(14,1);WRITELN(NAME);
KARMA(CES,DEGER);PLAYER(TOP,SAYAC);
KARMA(CES,DEGER); PLAYER(TOP,SAYAC);
KARMA(CES,DEGER); KASA(TOP2,SAYAC2);
KARMA(CES,DEGER);KASA(TOP2,SAYAC2);
BEGIN
KO:=FALSE;KK:=FALSE;
IF TOP=21 THEN
IF TOP2<>21 THEN BEGIN
PUANO:=PUANO+2;
GOTOXY(27,19);WRITELN(NAME,' BLACKJACK YAPTI');
KO:=TRUE;
END;
IF TOP2=21 THEN
IF TOP<>21 THEN BEGIN
PUANK:=PUANK+2;
GOTOXY(27,19);WRITELN('MEHMET BLACKJACK YAPTI');
KK:=TRUE;
END;
END;
IF (KK=FALSE)AND(KO=FALSE) THEN
BEGIN
GOTOXY(46,18);WRITELN('TOPLAM: ??');
END;
IF (KK=TRUE)OR(KO=TRUE)OR((TOP=21)AND(TOP2=21)) THEN
BEGIN
GOTOXY(48,3);WRITELN(' ? ->',GIZLI:2);
GOTOXY(46,18);WRITELN('TOPLAM: ',TOP2:2);
END;
GOTOXY(14,18);WRITELN('TOPLAM: ', TOP:2);
PUAN_YAZ;
END;{OYUN MASASINI HAZIRLAR VE BLACKJACK KONTROLU YAPAR}
PROCEDURE PUANLA;
BEGIN
IF (KO=FALSE)AND(KK=FALSE) THEN
BEGIN
IF (TOP=TOP2)AND(TOP<22) THEN BEGIN
GOTOXY(34,19);WRITELN('BERABER');
END;
IF (TOP=21)AND(TOP2<>21) THEN YENDINIZ;
IF (TOP2=21)AND(TOP<>21) THEN YENILDINIZ;
IF (TOP2<21)AND(TOP<21)THEN
BEGIN
IF TOP>TOP2 THEN YENDINIZ;
IF TOP<TOP2 THEN YENILDINIZ;
END;
IF (TOP2<21)AND(TOP>21)THEN
BEGIN
YENILDINIZ;
GOTOXY(14,19);WRITELN(NAME,' BATTI..');
END;
IF (TOP2>21)AND(TOP<21) THEN BEGIN
YENDINIZ;
GOTOXY(46,19);WRITELN('MEHMET BATTI..');
END;
IF (TOP>21)AND(TOP2>21) THEN BEGIN
GOTOXY(14,19);WRITELN(NAME,' BATTI..');
GOTOXY(46,19);WRITELN('MEHMET BATTI..');
END;
END;
END;{PUANLAMA ISLEMINI YAPAR}
BEGIN
CLRSCR;
SIFIRLA;
GETNAME(NAME);
REPEAT RANDOMIZE;
BASLA;
IF (KK=FALSE)AND(KO=FALSE) THEN
BEGIN
GOTOXY(24,22);WRITELN('(P)AS MI?,,(D)EVAM MI?');
OKU;
IF (CH='D')AND(TOP<>21)THEN
WHILE (TOP<21)AND(CH<>'P') DO
BEGIN
KARMA(CES,DEGER);
PLAYER(TOP,SAYAC);
GOTOXY(14,18);WRITELN('TOPLAM: ',TOP:2);
OKU;
END;{OYUNCUNUN ISLEMLERI}
IF (CH='P')OR(TOP>20) THEN
BEGIN
GOTOXY(46,18);WRITELN('TOPLAM: ',TOP2:2);
GOTOXY(48,3);WRITELN(' ? ->',GIZLI:2);
END;{GIZLENMIS KAGIDI DOGRU ZAMANDA
ILGILI YERE YAZAR}
IF ((CH='P')OR(TOP>21))AND(TOP2<17)THEN
BEGIN
REPEAT
KARMA(CES,DEGER);
KASA(TOP2,SAYAC2);
UNTIL (TOP2>21)OR((16<TOP2)AND(TOP2<22));
END;{KASANIN ISLEMLERI}
PUANLA;
PUAN_YAZ;
END;{OYUNUN TUM ISLEMLERI}
SIFIRLA;
GOTOXY(24,22); WRITELN('DEVAM ETMEK ISTERMISINIZ?#-E-*-H-#');
REPEAT
CH:=READKEY; CH:=UPCASE(CH);
UNTIL CH IN['E','H'];
UNTIL CH='H';
END.{OYUN}