PROGRAM Hi_Lo; {Author : Darren Hodges} USES CRT,GRAPH; CONST Card : ARRAY[0..12] OF INTEGER= (14,13,12,11,10,9 ,8,7,6,5,4,3,2); VAR correct : BOOLEAN; card1,card2 : INTEGER; BetInt,BankInt,cardNo,x1,x2,x3,gd,gm,y,count : INTEGER; key : CHAR; BetStr,BankStr : STRING; PROCEDURE Intro; BEGIN INITGRAPH(gd,gm,'c:\pascal\bgi'); SETBKCOLOR (BLUE); SETCOLOR (WHITE); RECTANGLE(10,10,90,130); SETFILLSTYLE(SOLIDFILL,WHITE); FLOODFILL(12,12,WHITE); SETCOLOR(RED); SETTEXTSTYLE(SANSSERIFFONT,HORIZDIR,1); OUTTEXTXY(15,15,'K'); OUTTEXTXY(75,105,'K'); SETCOLOR(LIGHTRED); OUTTEXTXY(35,60,'KING'); SETCOLOR (WHITE); RECTANGLE(550,10,630,130); SETFILLSTYLE(SOLIDFILL,WHITE); FLOODFILL(552,12,WHITE); SETCOLOR(RED); OUTTEXTXY(557,15,'K'); OUTTEXTXY(617,105,'K'); SETCOLOR(LIGHTRED); OUTTEXTXY(575,60,'KING'); SETCOLOR (WHITE); RECTANGLE(10,350,90,470); FLOODFILL(12,352,WHITE); SETCOLOR(RED); OUTTEXTXY(15,355,'Q'); OUTTEXTXY(75,440,'Q'); SETCOLOR(LIGHTRED); OUTTEXTXY(25,400,'QUEEN'); SETCOLOR (WHITE); RECTANGLE(550,350,630,470); FLOODFILL(552,352,WHITE); SETCOLOR(RED); OUTTEXTXY(557,355,'Q'); OUTTEXTXY(617,440,'Q'); SETCOLOR(LIGHTRED); OUTTEXTXY(565,400,'QUEEN'); SETTEXTSTYLE(TRIPLEXFONT,HORIZDIR,5); SETCOLOR (3); SETTEXTJUSTIFY(CENTERTEXT,CENTERTEXT); OUTTEXTXY(320,190,'HIGHER'); OUTTEXTXY(320,230,'OR'); OUTTEXTXY(320,270,'LOWER'); SETCOLOR (RED); OUTTEXTXY(318,188,'HIGHER'); OUTTEXTXY(318,228,'OR'); OUTTEXTXY(318,268,'LOWER'); SETCOLOR(YELLOW); SETTEXTSTYLE(TRIPLEXFONT,HORIZDIR,3); OUTTEXTXY(320,460,'By Darren Hodges'); READLN; END; PROCEDURE PlaceBets; BEGIN SETCOLOR (CYAN); SETTEXTSTYLE(TRIPLEXFONT,HORIZDIR,3); STR(bankint,bankstr); STR(betint,betstr); OUTTEXTXY(50,460,'Bank : '); OUTTEXTXY(120,460,bankstr); OUTTEXTXY(500,460,'Bet : '); OUTTEXTXY(550,460,betstr); REPEAT Key:=READKEY; case key OF #72 : IF betint+10 <= bankint THEN BEGIN SETCOLOR (BLUE); OUTTEXTXY(550,460,betstr); betint:=betint+10; END; #80 : IF betint-10 >= 10 THEN BEGIN SETCOLOR (BLUE); OUTTEXTXY(550,460,betstr); betint:=betint-10 END; END; SETCOLOR (CYAN); STR(betint,betstr); OUTTEXTXY(550,460,betstr); UNTIL key=#13; SETCOLOR (BLACK); END; PROCEDURE CheckCardNo; BEGIN CASE CardNo OF 2 : BEGIN x1:=x1+110; x2:=x2+110; x3:=x3+110; END; 3 : BEGIN x1:=x1+220; x2:=x2+220; x3:=x3+220; END; 4 : BEGIN x1:=x1+330; x2:=x2+330; x3:=x3+330; END; 5 : BEGIN x1:=x1+440; x2:=x2+440; x3:=x3+440; END; END; END; PROCEDURE ShowAce; BEGIN x1:=80; x2:=140; x3:=109; CheckCardNo; SETTEXTSTYLE(SANSSERIFFONT,HORIZDIR,1); OUTTEXTXY(x1,130,'A'); OUTTEXTXY(x2,220,'A'); SETCOLOR(LIGHTRED); OUTTEXTXY(x3,175,'ACE'); SETCOLOR(BLACK); END; PROCEDURE ShowKing; BEGIN x1:=80; x2:=140; x3:=110; CheckCardNo; SETTEXTSTYLE(SANSSERIFFONT,HORIZDIR,1); OUTTEXTXY(x1,130,'K'); OUTTEXTXY(x2,220,'K'); SETCOLOR(LIGHTRED); OUTTEXTXY(x3,175,'KING'); SETCOLOR(BLACK); END; PROCEDURE ShowQueen; BEGIN x1:=80; x2:=140; x3:=110; CheckCardNo; SETTEXTSTYLE(SANSSERIFFONT,HORIZDIR,1); OUTTEXTXY(x1,130,'Q'); OUTTEXTXY(x2,220,'Q'); SETCOLOR(LIGHTRED); OUTTEXTXY(x3,175,'QUEEN'); SETCOLOR(BLACK); END; PROCEDURE ShowJack; BEGIN x1:=80; x2:=140; x3:=110; CheckCardNo; SETTEXTSTYLE(SANSSERIFFONT,HORIZDIR,1); OUTTEXTXY(x1,130,'J'); OUTTEXTXY(x2,220,'J'); SETCOLOR(LIGHTRED); OUTTEXTXY(x3,175,'JACK'); SETCOLOR(BLACK); END; PROCEDURE ShowTen; BEGIN x1:=85; x2:=135; CheckCardNo; SETTEXTSTYLE(SANSSERIFFONT,HORIZDIR,1); OUTTEXTXY(x1,130,'10'); OUTTEXTXY(x2,220,'10'); SETCOLOR(BLACK); END; PROCEDURE ShowNine; BEGIN x1:=85; x2:=135; CheckCardNo; SETTEXTSTYLE(SANSSERIFFONT,HORIZDIR,1); OUTTEXTXY(x1,130,'9'); OUTTEXTXY(x2,220,'9'); SETCOLOR(BLACK); END; PROCEDURE ShowEight; BEGIN x1:=85; x2:=135; CheckCardNo; SETTEXTSTYLE(SANSSERIFFONT,HORIZDIR,1); OUTTEXTXY(x1,130,'8'); OUTTEXTXY(x2,220,'8'); SETCOLOR(BLACK); END; PROCEDURE ShowSeven; BEGIN x1:=85; x2:=135; CheckCardNo; SETTEXTSTYLE(SANSSERIFFONT,HORIZDIR,1); OUTTEXTXY(x1,130,'7'); OUTTEXTXY(x2,220,'7'); SETCOLOR(BLACK); END; PROCEDURE ShowSix; BEGIN x1:=85; x2:=135; CheckCardNo; SETTEXTSTYLE(SANSSERIFFONT,HORIZDIR,1); OUTTEXTXY(x1,130,'6'); OUTTEXTXY(x2,220,'6'); SETCOLOR(BLACK); END; PROCEDURE ShowFive; BEGIN x1:=85; x2:=135; CheckCardNo; SETTEXTSTYLE(SANSSERIFFONT,HORIZDIR,1); OUTTEXTXY(x1,130,'5'); OUTTEXTXY(x2,220,'5'); SETCOLOR(BLACK); END; PROCEDURE ShowFour; BEGIN x1:=85; x2:=135; CheckCardNo; SETTEXTSTYLE(SANSSERIFFONT,HORIZDIR,1); OUTTEXTXY(x1,130,'4'); OUTTEXTXY(x2,220,'4'); SETCOLOR(BLACK); END; PROCEDURE ShowThree; BEGIN x1:=85; x2:=135; CheckCardNo; SETTEXTSTYLE(SANSSERIFFONT,HORIZDIR,1); OUTTEXTXY(x1,130,'3'); OUTTEXTXY(x2,220,'3'); SETCOLOR(BLACK); END; PROCEDURE ShowTwo; BEGIN x1:=85; x2:=135; CheckCardNo; SETTEXTSTYLE(SANSSERIFFONT,HORIZDIR,1); OUTTEXTXY(x1,130,'2'); OUTTEXTXY(x2,220,'2'); SETCOLOR(BLACK); END; PROCEDURE Setup; BEGIN CLEARDEVICE; cardno:=1; SETTEXTSTYLE(TRIPLEXFONT,HORIZDIR,4); SETTEXTJUSTIFY(CENTERTEXT,CENTERTEXT); SETFILLSTYLE(SOLIDFILL,BLUE); FLOODFILL(1,1,WHITE); SETCOLOR (DARKGRAY); OUTTEXTXY(317,16,'HIGHER OR LOWER'); SETCOLOR (LIGHTRED); OUTTEXTXY(320,13,'HIGHER OR LOWER'); SETCOLOR (WHITE); RECTANGLE(1,40,639,449); SETFILLSTYLE(SOLIDFILL,GREEN); FLOODFILL(2,41,WHITE); SETCOLOR (BLACK); RECTANGLE(70,120,150,240); SETFILLSTYLE(SOLIDFILL,RED); FLOODFILL(72,122,BLACK); x1:=70; x2:=150; REPEAT x1:=x1+110; x2:=x2+110; RECTANGLE(x1,120,x2,240); SETFILLSTYLE(SOLIDFILL,RED); FLOODFILL(x1+2,122,BLACK); UNTIL x1=510; END; PROCEDURE Show_Card; BEGIN Case CardNo OF 1 : BEGIN RECTANGLE(70,120,150,240); SETFILLSTYLE(SOLIDFILL,WHITE); FLOODFILL(72,122,BLACK); END; 2 : BEGIN RECTANGLE(180,120,260,240); SETFILLSTYLE(SOLIDFILL,WHITE); FLOODFILL(182,122,BLACK); END; 3 : BEGIN RECTANGLE(290,120,370,240); SETFILLSTYLE(SOLIDFILL,WHITE); FLOODFILL(292,122,BLACK); END; 4 : BEGIN RECTANGLE(400,120,480,240); SETFILLSTYLE(SOLIDFILL,WHITE); FLOODFILL(402,122,BLACK); END; 5 : BEGIN RECTANGLE(510,120,590,240); SETFILLSTYLE(SOLIDFILL,WHITE); FLOODFILL(512,122,BLACK); END; END; count:=RANDOM(13); CASE count OF 0 : ShowAce; 1 : ShowKing; 2 : ShowQueen; 3 : ShowJack; 4 : ShowTen; 5 : ShowNine; 6 : ShowEight; 7 : ShowSeven; 8 : ShowSix; 9 : ShowFive; 10 : ShowFour; 11 : ShowThree; 12 : ShowTwo; END; IF cardno= 1 THEN card1 :=Card[count] ELSE card2:=Card[count]; END; PROCEDURE Hi_Or_Lo; BEGIN REPEAT key:=UPCASE(READKEY); UNTIL (key='H') OR (key='L'); CardNo:=CardNo+1; Show_Card; END; PROCEDURE Correct_Or_Wrong; BEGIN IF key = 'H' THEN BEGIN IF (card1=14) AND (card2<>14) THEN correct:=TRUE; IF (card2=14) AND (card1<>14) THEN correct:=TRUE; IF (card1=14) AND (card2=14) THEN correct:=FALSE; IF (card1<>14) AND (card2<>14) THEN BEGIN IF card1 < card2 THEN correct:=TRUE ELSE correct:=FALSE; END; END; IF key = 'L' THEN BEGIN IF (card1=14) AND (card2<>14) THEN correct:=TRUE; IF (card2=14) AND (card1<>14) THEN correct:=TRUE; IF (card1=14) AND (card2=14) THEN correct:=FALSE; IF (card1<>14) AND (card2<>14) THEN BEGIN IF card1 > card2 THEN correct:=TRUE ELSE correct:=FALSE; END; END; card1:=card2; END; BEGIN RANDOMIZE; Intro; INITGRAPH(gd,gm,'c:\pascal\bgi'); REPEAT bankint:=100; REPEAT betint:=10; Setup; PlaceBets; Show_Card; REPEAT Hi_Or_Lo; IF key <> #27 THEN Correct_Or_Wrong; UNTIL (correct=FALSE) OR (cardno=5); IF correct=FALSE THEN BEGIN SETTEXTSTYLE(TRIPLEXFONT,HORIZDIR,4); SETCOLOR (BLACK); OUTTEXTXY(318,342,'Incorrect, Try again'); SETCOLOR(BLUE); OUTTEXTXY(320,340,'Incorrect, Try again'); SETTEXTSTYLE(TRIPLEXFONT,HORIZDIR,3); OUTTEXTXY(120,460,bankstr); bankint:=bankint-betint; SETCOLOR (CYAN); STR(bankint,bankstr); OUTTEXTXY(50,460,'Bank : '); OUTTEXTXY(120,460,bankstr); READKEY; END; IF (cardno=5) AND (correct<>FALSE) THEN BEGIN SETTEXTSTYLE(TRIPLEXFONT,HORIZDIR,4); SETCOLOR (BLACK); OUTTEXTXY(318,342,'Well Done'); SETCOLOR(BLUE); OUTTEXTXY(320,340,'Well Done'); SETTEXTSTYLE(TRIPLEXFONT,HORIZDIR,3); OUTTEXTXY(120,460,bankstr); bankint:=bankint+betint; SETCOLOR (CYAN); STR(bankint,bankstr); OUTTEXTXY(50,460,'Bank : '); OUTTEXTXY(120,460,bankstr); READKEY; END; UNTIL bankint=0; SETBKCOLOR (GREEN); SETCOLOR (BLUE); CLEARDEVICE; SETTEXTSTYLE(TRIPLEXFONT,HORIZDIR,4); OUTTEXTXY(310,230,'Play Again (Y/N)'); REPEAT key:=UPCASE(READKEY); UNTIL (key='Y') OR (key='N'); SETBKCOLOR (BLACK); UNTIL key ='N'; CLOSEGRAPH; END.