My Profile
Active Members
TodayLast 7 Days
more...
Awards & Gifts
Online Exams
Fresher Jobs
Our fresher job section is exclusively for fresh graduates! Find jobs for freshers in major Indian
cities including Bangalore, Chennai, Hyderabad, Pune or Kochi
Resources
Find educational articles, blogs, discussion threads and other resources.
Colleges
Find details about any college in India or search for courses.
|
Blackjack Game done in PASCAL
Posted Date:
Total Responses: 0
Posted By: Vikram Narayan C Member Level: Silver Points/Cash: 3
|
PROGRAM BLACKJACK; USES CRT; TYPE CARDTYPE = RECORD INDECK : BOOLEAN; SUIT : CHAR; FACE : INTEGER; END; PLAYERTYPE = RECORD TOTAL : INTEGER; NUMCARDS : INTEGER; CARDS : ARRAY[1..5] OF INTEGER; END;
VAR DECK : ARRAY [1..52] OF CARDTYPE;
PROCEDURE SHUFFLE; VAR COUNT : INTEGER; BEGIN FOR COUNT:=1 TO 52 DO BEGIN WITH DECK[COUNT] DO BEGIN INDECK:=TRUE; SUIT:=(CHR(((COUNT-1) DIV 13)+3)); IF (COUNT MOD 13)<> 0 THEN FACE:=(COUNT MOD 13) ELSE FACE:=13; END; END; END;
PROCEDURE MAKEPLAYER(VAR PLAYER : PLAYERTYPE); VAR COUNT : INTEGER; BEGIN WITH PLAYER DO BEGIN TOTAL:=0; NUMCARDS:=0; FOR COUNT:=1 TO 5 DO CARDS[COUNT]:=0; END; END;
PROCEDURE VALUE (VAR PLAYER : PLAYERTYPE; PLAYERNUM : INTEGER); VAR VALUE, TOTAL : INTEGER; BEGIN TOTAL:=0; CASE DECK[PLAYER.CARDS[PLAYER.NUMCARDS]].FACE OF 2..10 : TOTAL:=DECK[PLAYER.CARDS[PLAYER.NUMCARDS]].FACE; 11..13 : TOTAL:=10; 1 : BEGIN IF PLAYERNUM=1 THEN IF TOTAL>10 THEN TOTAL:=TOTAL+1 ELSE TOTAL:=TOTAL+11 ELSE BEGIN REPEAT GOTOXY(1,23); WRITELN('DO YOU WANT YOUR ACE TO COUNT AS A 1 OR 11?'); READLN(VALUE); WRITELN(VALUE); UNTIL (VALUE IN [1,11]) AND (IORESULT=0); TOTAL:=VALUE; END; END; END; PLAYER.TOTAL:=PLAYER.TOTAL+TOTAL; END;
PROCEDURE HITME(VAR PLAYER : PLAYERTYPE; PLAYERNUM : INTEGER); VAR CARD : INTEGER; BEGIN REPEAT CARD:=RANDOM(52); UNTIL ((CARD<>0) AND (DECK[CARD].INDECK<>FALSE)); IF PLAYER.NUMCARDS<>5 THEN BEGIN DECK[CARD].INDECK:=FALSE; PLAYER.CARDS[PLAYER.NUMCARDS+1]:=CARD; PLAYER.NUMCARDS:=PLAYER.NUMCARDS+1; END; VALUE(PLAYER,PLAYERNUM); END;
PROCEDURE DISPLAYCARDS (PLAYERNUM, NUMCARDS : INTEGER; PLAYER : PLAYERTYPE); VAR COUNT : INTEGER; BEGIN GOTOXY(20,1); WRITE('COMPUTER''S CARDS'); GOTOXY(40,1); WRITE('HUMAN''S CARDS'); FOR COUNT:=1 TO NUMCARDS DO BEGIN GOTOXY(PLAYERNUM*20,COUNT+1); CASE DECK[PLAYER.CARDS[COUNT]].FACE OF 1 : WRITE('A'); 2..10 : WRITE(DECK[PLAYER.CARDS[COUNT]].FACE); 11 : WRITE('J'); 12 : WRITE('Q'); 13 : WRITE('K'); END; WRITE(DECK[PLAYER.CARDS[COUNT]].SUIT); GOTOXY(PLAYERNUM*20,10); IF PLAYERNUM=2 THEN WRITE('TOTAL OF CARDS: ',PLAYER.TOTAL); END; END;
PROCEDURE PLAY(VAR HUMAN,COMPUTER : PLAYERTYPE); VAR DONE : BOOLEAN; YESNO : CHAR; BEGIN DONE:=FALSE; REPEAT REPEAT GOTOXY(1,23); WRITELN('DO YOU WANT ANOTHER CARD?'); READLN(YESNO); YESNO:=UPCASE(YESNO); UNTIL (IORESULT=0) AND (YESNO IN ['Y','N']); IF YESNO='Y' THEN HITME(HUMAN,2) ELSE DONE:=TRUE; CLRSCR; DISPLAYCARDS(1,1,COMPUTER); DISPLAYCARDS(2,HUMAN.NUMCARDS,HUMAN); UNTIL (DONE=TRUE) OR (HUMAN.TOTAL>20); END;
PROCEDURE COMPUTERPLAY(VAR HUMAN,COMPUTER : PLAYERTYPE); VAR DONE : BOOLEAN; BEGIN DISPLAYCARDS(1,COMPUTER.NUMCARDS,COMPUTER); DISPLAYCARDS(2,HUMAN.NUMCARDS,HUMAN); DONE:=FALSE; REPEAT IF COMPUTER.TOTAL>17 THEN DONE:=TRUE ELSE HITME(COMPUTER,1); DISPLAYCARDS(1,COMPUTER.NUMCARDS,COMPUTER); DISPLAYCARDS(2,HUMAN.NUMCARDS,HUMAN); GOTOXY(20,10); WRITE('TOTAL OF CARDS: ',COMPUTER.TOTAL); UNTIL (DONE=TRUE) OR (COMPUTER.TOTAL>20); END;
PROCEDURE WINNER(HUMAN, COMPUTER : PLAYERTYPE); VAR COMPWON : BOOLEAN; BEGIN COMPWON:=TRUE; IF (HUMAN.TOTAL>=22) THEN COMPWON:=TRUE ELSE IF (COMPUTER.TOTAL>=22) THEN COMPWON:=FALSE; IF (COMPUTER.TOTAL>=HUMAN.TOTAL) AND (COMPUTER.TOTAL<=21) THEN COMPWON:=TRUE ELSE IF(HUMAN.TOTAL<=21) THEN COMPWON:=FALSE; IF COMPWON THEN BEGIN GOTOXY(37,23); WRITELN('I WIN!'); END ELSE BEGIN GOTOXY(36,23); WRITELN('YOU WIN!'); END; READLN; END;
PROCEDURE DEAL; VAR COMPUTER, HUMAN : PLAYERTYPE; COUNT : INTEGER; BEGIN SHUFFLE; MAKEPLAYER(COMPUTER); MAKEPLAYER(HUMAN); FOR COUNT:=1 TO 2 DO BEGIN HITME(COMPUTER,1); HITME(HUMAN,2); CLRSCR; DISPLAYCARDS(1,1,COMPUTER); DISPLAYCARDS(2,HUMAN.NUMCARDS,HUMAN); END; PLAY(HUMAN,COMPUTER); COMPUTERPLAY(HUMAN,COMPUTER); WINNER(HUMAN,COMPUTER); END;
PROCEDURE MENU; VAR CHOICE : INTEGER; BEGIN REPEAT REPEAT CLRSCR; GOTOXY(30,12); WRITELN('***BLACKJACK***'); GOTOXY(30,15); WRITELN('1 TO PLAY HAND'); GOTOXY(30,16); WRITELN('2 TO EXIT'); WRITELN('ENTER YOUR CHOICE : '); READLN(CHOICE); UNTIL CHOICE IN [1,2]; CASE CHOICE OF 1 : DEAL; 2 : HALT; END; UNTIL CHOICE=2; END;
BEGIN RANDOMIZE; CLRSCR; MENU; READKEY; END.
|
Project Feedbacks
|
No feedbacks found. Be the first to respond and make money from revenue sharing program.
|
|
|
| Post Feedback |
|
|
You must Sign In to post a feedback.
|
|
|
|
|
Advertise Here
|