home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Fred Fish Collection 1.5
/
ffcollection-1-5-1992-11.iso
/
ff_disks
/
001-099
/
ff019.lzh
/
BlackJack
/
debug-outcom.c
< prev
next >
Wrap
C/C++ Source or Header
|
1986-04-08
|
3KB
|
122 lines
/* outcom.c print outcome of hand(s)
*/
#include "local.h"
#include "bj.h"
#include "hndmgr.h"
static CASH value = 0;
/* outcom - print outcome of hand and compute results
*/
CASH outcom(bet, tophand, isinsur, isdbl)
CASH bet; /* amount of player's bet */
short tophand; /* how many player hands */
bool isinsur; /* player took insurance? */
bool isdbl; /* is player DBLDN? */
{
void prmsg();
short h; /* which hand */
value = 0;
if (isinsur && isbj(DEALER))
prmsg(1, 1, "Insurance wins\n", bet / (isdbl ? 4 : 2));
else if (isinsur)
prmsg(1, 1, "Insurance loses\n", -bet / (isdbl ? 4 : 2));
if (isbj(DEALER) && !isbj(1))
prmsg(1, 1, "Dealer BJ beats all but BJ", -bet / (isdbl ? 2 : 1));
else if (isbj(DEALER) && isbj(1))
prmsg(1, 1, "Both BJ: push", (CASH)0);
else if (isbj(1))
prmsg(1, 1, "Your BJ wins 3 for 2", (3 * bet) / 2);
else {
for (h = 1; h <= tophand; ++h) {
if (21 < score(h))
value -= bet; /* "Bust" message already printed */
else if (score(DEALER) == score(h))
prmsg(h, tophand, "Push", (CASH)0);
else if (score(DEALER) < score(h) || 21 < score(DEALER))
prmsg(h, tophand, "Win", bet);
else
prmsg(h, tophand, "Lose", -bet);
}
}
return (value);
}
/* prmsg - prints appropriate message
*/
void prmsg(h, tophand, s, delta)
short h; /* which hand */
short tophand; /* how many hands */
char s[]; /* message */
CASH delta; /* change of value ( + | - ) */
{
if (tophand == 2)
printf("On hand %d, ", h);
printf("%s\n", s);
value += delta;
}
#ifdef TRYMAIN
static short bj[2] = 0; /* isbj, for each hand */
static short sc[3] = 0; /* hand scores, for testing */
main()
{
char line[BUFSIZ]; /* line of test input */
short len; /* returned value from input fn */
short ibet; /* player's bet, as short int */
short ins; /* isinsur? */
short toph; /* tophand? */
short dbl; /* isdbl? */
CASH value; /* return from outcom */
FOREVER {
printf("%-8s %-8s %-8s %-8s %-8s %-8s %-8s %-8s %-8s\n",
"bet", "toph", "ins", "dbl",
"bj[0]", "bj[1]", "sc[0]", "sc[1]", "sc[2]");
len = echoln(line, BUFSIZ);
if (len == EOF)
break;
if (9 != sscanf(line, "%hd %hd %hd %hd %hd %hd %hd %hd %hd",
&ibet, &toph, &ins, &dbl,
&bj[0], &bj[1], &sc[0], &sc[1], &sc[2]))
error("outcom input error", "");
value = outcom((CASH)ibet, toph, ins, dbl);
printf("outcom) = ");
printf(CASHOUT, value);
printf("\n");
}
}
/* score - dummy version for testing
*/
short score(h)
short h; /* which hand */
{
return(sc[h]);
}
/* isbj - dummy version for testing
*/
bool isbj(h)
short h; /* which hand */
{
return (bj[h]);
}
/* echoln - get and echo an input line
*/
short echoln(line, size)
char line[];
short size;
{
short len;
if ((len = getln(line, size)) != EOF)
printf("%s", line);
return(len);
}
#endif