PROGRAM BLACKJACK; USES CRT,GRAPH; VAR NAME1,NAME2:STRING; C:CHAR; CARDS:ARRAY[1..13] OF INTEGER; GD,GM,PTS1,PTS2,ACE1,ACE2,N,N1,N2:INTEGER; PROCEDURE POINTS(VAR X,Y,Z:INTEGER); BEGIN IF Z=1 THEN BEGIN Y:=Y+1; X:=X+11; END; IF Z>10 THEN X:=X+10; IF (Z>1) AND (Z<11) THEN X:=X+Z; IF (X>21) AND (Y>0) THEN BEGIN X:=X-10; Y:=Y-1; END; END; PROCEDURE DEAL; VAR P:INTEGER; BEGIN WRITELN('DEALING CARDS:'); FOR P:=1 TO 2 DO BEGIN WRITE(NAME1,':'); N1:=1+RANDOM(12); CARDS[N1]:=CARDS[N1]+1; WRITELN(N1); POINTS(PTS1,ACE1,N1); IF PTS1=21 THEN WRITE(NAME1,' HAS WON!') ELSE BEGIN WRITE(NAME2,':'); N2:=1+RANDOM(12); CARDS[N2]:=CARDS[N2]+1; WRITELN(N2); POINTS(PTS2,ACE2,N2); IF PTS2=21 THEN WRITE(NAME2,' HAS WON!'); END; END; END; PROCEDURE HIT(VAR A,B,D:INTEGER); BEGIN D:=1+RANDOM(12); WHILE CARDS[D]=4 DO D:=1+RANDOM(12); CARDS[D]:=CARDS[D]+1; WRITELN('YOUR CARD:',D); POINTS(A,B,D); END; BEGIN RANDOMIZE; FOR N:=1 TO 13 DO CARDS[N]:=0; ACE1:=0; ACE2:=0; PTS1:=0; PTS2:=0; GD:=DETECT; INITGRAPH(GD,GM,'C:\TURBO\BGI'); SETCOLOR(BLACK); CLRSCR; OUTTEXTXY(270,1,'BLACKJACK'); LINE(5,70,5,270); LINE(155,70,155,270); LINE(5,70,155,70); LINE(5,270,155,270); OUTTEXTXY(10,80,CHR(3)); OUTTEXTXY(145,255,CHR(3)); LINE(165,70,165,270); LINE(315,70,315,270); LINE(165,70,315,70); LINE(165,270,315,270); OUTTEXTXY(170,80,CHR(4)); OUTTEXTXY(305,255,CHR(4)); LINE(325,70,325,270); LINE(475,70,475,270); LINE(325,70,475,70); LINE(325,270,475,270); OUTTEXTXY(330,80,CHR(5)); OUTTEXTXY(465,255,CHR(5)); LINE(485,70,485,270); LINE(635,70,635,270); LINE(485,70,635,70); LINE(485,270,635,270); OUTTEXTXY(490,80,CHR(6)); OUTTEXTXY(625,255,CHR(6)); DELAY(24000); CLOSEGRAPH; CLRSCR; WRITE('INPUT YOUR NAME,PLAYER1:'); READLN(NAME1); WRITE('INPUT YOUR NAME,PLAYER2:'); READ(NAME2); CLRSCR; DEAL; WHILE (PTS1<21) AND (PTS2<21) DO BEGIN WRITELN('WANT A ''HIT'' ',NAME1,' ?(Y/N):PTS=',PTS1); READLN(C); IF C='Y' THEN HIT(PTS1,ACE1,N1); IF PTS1>21 THEN WRITE(NAME1,' IS DISQUALIFIED-',NAME2,' WINS!') ELSE IF PTS1=21 THEN WRITE(NAME1,' WINS!') ELSE BEGIN WRITELN('WANT A ''HIT'' ',NAME2,' ?(Y/N):PTS=',PTS2); READLN(C); IF C='Y' THEN HIT(PTS2,ACE2,N2); IF PTS2>21 THEN WRITE(NAME2,' IS DISQUALIFIED-',NAME1,' WINS!'); IF PTS2=21 THEN WRITE(NAME2,' WINS!'); END; END; READLN; END.