New Member FAQ | Forums | Earn Revenue


Resources Entrance Ask Experts Exam Papers Jobs English Projects Universities Colleges Courses Schools Training My India



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.

website counter



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.
Next Project: Base conversion program in C
Previous Project: PAINT Program in Assembly Language

Return to Project Index

Post New Project


Related Projects



Advertise Here





Contact Us   Advertise   Editors    Privacy Policy    Terms Of Use   

ISC Technologies.
2006 - 2009 All Rights Reserved.