video poker game part 1 of 1
Jay A. Konigsberg
jak at sactoh0.sac.ca.us
Thu May 2 11:22:34 AEST 1991
This is a Video-Poker game, just like the ones in Nevada (well, the graphics
aren't anywhere near as good). It has comiled under Xenix 2.3.1 and System V
(3B2-400).
If possible, use gcc and strip the symbol table off - its a large
exectuable.
Enjoy!
#! /bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #! /bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create:
# Makefile
# cleanup.c
# deal.c
# display_hand.c
# display_val.c
# draw.c
# id_hand.c
# main.c
# payoff_val.c
# rawmode.c
# setup_deck.c
# sort.c
# This archive created: Wed May 1 18:17:18 1991
export PATH; PATH=/bin:/usr/bin:$PATH
if test -f 'Makefile'
then
echo shar: "will not over-write existing file 'Makefile'"
else
cat << \SHAR_EOF > 'Makefile'
#
# Copyright (C) 1991 by Jay Konigsberg. mail: jak at sactoh0
#
# Permission to use, copy, modify, and distribute this software and its
# documentation is hereby granted, provided that the above copyright
# notice appear in all copies and that both the copyright notice and
# this permission notice appear in supporting documentation. This software
# is provided "as is" without express or implied warranty. However, the
# author retains all Copyright priviliges and rights to renumeration if
# this software is sold.
#
# Also, and very important. This game is for recrecation ONLY and is NOT
# to be used for gambling in any way.
#
#
# Makefile for video_poker
#
# Select complier and options
#CC=gcc
#CFLAGS=-O -traditional -Wall
CC=cc
# Xenix - note, these work on xenix 2.2.3 & 2.3.1, but not on 2.3.2 - bizzare
#CFLAGS=-g -M2m
#CFLAGS=-O -M2m
# SysV
CFLAGS=-O
# Select libraries
# Xenix
#LIBS=-ltcap -ltermlib
# SysV
LIBS=-lcurses
# Object files
OBJS=sort.o display_hand.o display_val.o rawmode.o cleanup.o payoff_val.o \
deal.o id_hand.o draw.o setup_deck.o main.o
# Exectuable
EXEC=video
$(EXEC): $(OBJS)
$(CC) $(CFLAGS) $(OBJS) $(LIBS) -o $(EXEC)
main.o: main.c vid_local.h vid_curses.h vid_poker.h
deal.o: deal.c vid_poker.h
id_hand.o: id_hand.c vid_poker.h vid_extern.h hand_value.h
draw.o: draw.c vid_poker.h vid_curses.h vid_local.h
setup_deck.o: setup_deck.c vid_extern.h vid_poker.h
cleanup.o: cleanup.c vid_extern.h
display_hand.o: display_hand.c vid_poker.h vid_extern.h vid_curses.h
display_val.o: display_val.c hand_value.h vid_curses.h vid_poker.h
payoff_val.o: payoff_val.c vid_poker.h vid_curses.h
rawmode.o: rawmode.c vid_extern.h vid_local.h
sort: sort.c vid_poker.h
clean:
rm -f $(OBJS) core make.out lint.out vidpoker.tar*
lint:
lint [a-z][a-z]*.c 2>&1 | tee lint.out
tar:
tar cvf vidpoker.tar *.[ch] Makefile
pack: tar
pack vidpoker.tar
compress: tar
compress vidpoker.tar
SHAR_EOF
fi
if test -f 'cleanup.c'
then
echo shar: "will not over-write existing file 'cleanup.c'"
else
cat << \SHAR_EOF > 'cleanup.c'
/*
* Copyright (C) 1991 by Jay Konigsberg. mail: jak at sactoh0
*
* Permission to use, copy, modify, and distribute this software and its
* documentation is hereby granted, provided that the above copyright
* notice appear in all copies and that both the copyright notice and
* this permission notice appear in supporting documentation. This software
* is provided "as is" without express or implied warranty. However, the
* author retains all Copyright priviliges and rights to renumeration if
* this software is sold.
*
* Also, and very important. This game is for recrecation ONLY and is NOT
* to be used for gambling in any way.
*/
/*
* cleanup - resets port settings to what they were before entering
* raw mode.
*/
#include <stdio.h>
#include <termio.h>
#include "vid_extern.h"
extern int errno;
/* Global for interrupt routine: cleanup() */
extern struct termio ttyset; /* terminal settings */
extern unsigned short c_lflag_hold; /* hold original values for reset */
extern unsigned char VEOF_hold; /* hold original value for reset */
int (*cleanup()) /* Signal trap for SIGINT */
{
/* reset terminal charastics */
ttyset.c_lflag = c_lflag_hold;
ttyset.c_cc[4] = VEOF_hold;
if ( ioctl(0, TCSETAW, &ttyset) == -1) {
fprintf(stderr, "ioctl: error=%d\n", errno);
(void)exit(2);
}
puts("\nExiting Video Poker\t\t\t\t\t\t");
(void)exit(0);
return(0);
}
SHAR_EOF
fi
if test -f 'deal.c'
then
echo shar: "will not over-write existing file 'deal.c'"
else
cat << \SHAR_EOF > 'deal.c'
/*LINTLIBRARY*/
/*
* Copyright (C) 1991 by Jay Konigsberg. mail: jak at sactoh0
*
* Permission to use, copy, modify, and distribute this software and its
* documentation is hereby granted, provided that the above copyright
* notice appear in all copies and that both the copyright notice and
* this permission notice appear in supporting documentation. This software
* is provided "as is" without express or implied warranty. However, the
* author retains all Copyright priviliges and rights to renumeration if
* this software is sold.
*
* Also, and very important. This game is for recrecation ONLY and is NOT
* to be used for gambling in any way.
*/
/*
* deal.c - generate the random numbers that will represent cards.
*/
#include "vid_poker.h"
#include <sys/types.h>
extern double drand48();
extern void srand48();
extern time_t time();
static time_t seed=0;
void deal(deck, numcards)
int *deck, /* 52 card deck */
numcards; /* number of cards requested */
{
int check, /* index for preventing dup cards */
count=0; /* count of cards already delt (0 or 5) */
if ( seed == (time_t)0 )
{
seed=time(&seed);
(void)srand48(seed);
}
if ( deck[0] != 0 )
numcards += (count=5); /* we are on the draw */
for (; count < numcards; ++count)
{
deck[count] = 52 * drand48()+1;
for ( check=0; check < count; ++check )
if ( deck[check] == deck[count] )
--count;
}
}
SHAR_EOF
fi
if test -f 'display_hand.c'
then
echo shar: "will not over-write existing file 'display_hand.c'"
else
cat << \SHAR_EOF > 'display_hand.c'
/*LINTLIBRARY*/
/*
* Copyright (C) 1991 by Jay Konigsberg. mail: jak at sactoh0
*
* Permission to use, copy, modify, and distribute this software and its
* documentation is hereby granted, provided that the above copyright
* notice appear in all copies and that both the copyright notice and
* this permission notice appear in supporting documentation. This software
* is provided "as is" without express or implied warranty. However, the
* author retains all Copyright priviliges and rights to renumeration if
* this software is sold.
*
* Also, and very important. This game is for recrecation ONLY and is NOT
* to be used for gambling in any way.
*/
/*
* display_hand.c - draw the cards onto the screen
*/
#include "vid_extern.h"
#include "vid_curses.h"
#include "vid_poker.h"
void display_hand(value, suite, count)
int *value;
char **suite;
int count;
{
int cardinx;
for ( cardinx=0; cardinx < count; ++cardinx)
{
if ( ! strcmp(suite[cardinx], "Spades") )
{
mvaddstr(10, cardinx * 15, "|-----------|");
mvaddstr(11, cardinx * 15, "| __ |");
mvaddstr(12, cardinx * 15, "| /\\`'/\\ |");
mvaddstr(13, cardinx * 15, "| \\ ~~ / |");
mvaddstr(14, cardinx * 15, "| \\ / |");
mvaddstr(15, cardinx * 15, "| \\/ |");
mvaddstr(16, cardinx * 15, "| Spades |");
mvaddstr(17, cardinx * 15, "| |");
mvaddstr(18, cardinx * 15, "|-----------|");
}
else
if ( ! strcmp(suite[cardinx], "Hearts") )
{
mvaddstr(10, cardinx * 15, "|-----------|");
mvaddstr(11, cardinx * 15, "| |");
mvaddstr(12, cardinx * 15, "| /\\/\\ |");
mvaddstr(13, cardinx * 15, "| ( ) |");
mvaddstr(14, cardinx * 15, "| \\ / |");
mvaddstr(15, cardinx * 15, "| \\/ |");
mvaddstr(16, cardinx * 15, "| Hearts |");
mvaddstr(17, cardinx * 15, "| |");
mvaddstr(18, cardinx * 15, "|-----------|");
}
else
if ( ! strcmp(suite[cardinx], "Clubs") )
{
mvaddstr(10, cardinx * 15, "|-----------|");
mvaddstr(11, cardinx * 15, "| |");
mvaddstr(12, cardinx * 15, "| ^ |");
mvaddstr(13, cardinx * 15, "| _/ \\_ |");
mvaddstr(14, cardinx * 15, "| (__ __) |");
mvaddstr(15, cardinx * 15, "| /_\\ |");
mvaddstr(16, cardinx * 15, "| Clubs |");
mvaddstr(17, cardinx * 15, "| |");
mvaddstr(18, cardinx * 15, "|-----------|");
}
else
if ( ! strcmp(suite[cardinx], "Diamonds") )
{
mvaddstr(10, cardinx * 15, "|-----------|");
mvaddstr(11, cardinx * 15, "| |");
mvaddstr(12, cardinx * 15, "| /\\ |");
mvaddstr(13, cardinx * 15, "| / \\ |");
mvaddstr(14, cardinx * 15, "| \\ / |");
mvaddstr(15, cardinx * 15, "| \\/ |");
mvaddstr(16, cardinx * 15, "| Diamonds |");
mvaddstr(17, cardinx * 15, "| |");
mvaddstr(18, cardinx * 15, "|-----------|");
}
switch (value[cardinx])
{
case 1:
mvaddstr(11, cardinx*15+1, "A");
mvaddstr(14, cardinx*15+6, "AA");
mvaddstr(17, cardinx*15+10, "A");
break;
case 10:
mvaddstr(11, cardinx*15+1, "10");
mvaddstr(14, cardinx*15+6, "10");
mvaddstr(17, cardinx*15+10, "10");
break;
case 11:
mvaddstr(11, cardinx*15+1, "J ");
mvaddstr(14, cardinx*15+6, "JJ");
mvaddstr(17, cardinx*15+10, "J ");
break;
case 12:
mvaddstr(11, cardinx*15+1, "Q ");
mvaddstr(14, cardinx*15+6, "QQ");
mvaddstr(17, cardinx*15+10, "Q ");
break;
case 13:
mvaddstr(11, cardinx*15+1, "K ");
mvaddstr(14, cardinx*15+6, "KK");
mvaddstr(17, cardinx*15+10, "K ");
break;
default:
mvaddch(11, cardinx*15+1, '0' + value[cardinx]);
mvaddch(11, cardinx*15+2, ' ');
mvaddch(14, cardinx*15+6, '0' + value[cardinx]);
mvaddch(14, cardinx*15+7, '0' + value[cardinx]);
mvaddch(17, cardinx*15+10, '0' + value[cardinx]);
mvaddch(17, cardinx*15+11, ' ');
break;
}
}
refresh();
}
SHAR_EOF
fi
if test -f 'display_val.c'
then
echo shar: "will not over-write existing file 'display_val.c'"
else
cat << \SHAR_EOF > 'display_val.c'
/*LINTLIBRARY*/
/*
* Copyright (C) 1991 by Jay Konigsberg. mail: jak at sactoh0
*
* Permission to use, copy, modify, and distribute this software and its
* documentation is hereby granted, provided that the above copyright
* notice appear in all copies and that both the copyright notice and
* this permission notice appear in supporting documentation. This software
* is provided "as is" without express or implied warranty. However, the
* author retains all Copyright priviliges and rights to renumeration if
* this software is sold.
*
* Also, and very important. This game is for recrecation ONLY and is NOT
* to be used for gambling in any way.
*/
/*
* display_val.c - places the value of the hand above the displayed cards.
* Also, this routine will return the number of coins the hand is worth.
*
* Ok, ok, the name isn't the greatest. But hey, its the best I could come
* up with.
*/
#include "hand_value.h"
#include "vid_curses.h"
#include "vid_poker.h"
int display_val(hand_value)
int hand_value;
{
int value; /* payoff value of this hand */
switch ( hand_value )
{
case PAIR:
mvaddstr(9, 29, " ONE PAIR ");
value=0;
break;
case JACKSOR:
mvaddstr(9, 29, "JACKS OR BETTER");
value=1;
break;
case TWOPAIR:
mvaddstr(9, 29, " TWO PAIR ");
value=2;
break;
case TRIPS:
mvaddstr(9, 29, "THREE OF A KIND");
value=3;
break;
case STRAIGHT:
mvaddstr(9, 29, " STRAIGHT ");
value=4;
break;
case FLUSH:
mvaddstr(9, 29, " FLUSH ");
value=5;
break;
case FULLHOUSE:
mvaddstr(9, 29, " FULL HOUSE ");
value=8;
break;
case FOUR:
mvaddstr(9, 29, " FOUR OF A KIND");
value=25;
break;
case STRAIGHTFLUSH:
mvaddstr(9, 29, " STRAIGHT FLUSH");
value=50;
break;
case ROYALFLUSH:
mvaddstr(9, 29, " ROYAL FLUSH ");
value=250;
break;
default:
mvaddstr(9, 29, " NO PAIR ");
value=0;
}
refresh();
return(value);
}
SHAR_EOF
fi
if test -f 'draw.c'
then
echo shar: "will not over-write existing file 'draw.c'"
else
cat << \SHAR_EOF > 'draw.c'
/*LINTLIBRARY*/
/*
* Copyright (C) 1991 by Jay Konigsberg. mail: jak at sactoh0
*
* Permission to use, copy, modify, and distribute this software and its
* documentation is hereby granted, provided that the above copyright
* notice appear in all copies and that both the copyright notice and
* this permission notice appear in supporting documentation. This software
* is provided "as is" without express or implied warranty. However, the
* author retains all Copyright priviliges and rights to renumeration if
* this software is sold.
*
* Also, and very important. This game is for recrecation ONLY and is NOT
* to be used for gambling in any way.
*/
/*
* draw.c - Select which card to hold (You've got to know when to hold-um, ..
*/
#include "vid_local.h"
#include "vid_curses.h"
#include "vid_poker.h"
extern int bet;
extern int credits;
void draw(deck, value, suite)
int *deck,
*value;
char **suite;
{
int count, /* count of cards to be drawn */
index, /* loop index */
win, /* amount won on hand */
key = -1, /* keys pressed during draw */
draw_card=5, /* The first draw card */
hold[5]; /* mark the cards help */
for (index=0; index < 5; ++index)
hold[index] = 0;
mvaddstr(19, 0, "\t\t\t\t\t\t\t\t\t\t");
mvaddstr(21, 0, "Keys 1-5 will hold/cancel cards, space/return to draw:");
refresh();
while ( key != ' ' && key != '\r' )
{
if( (key=mvgetch(21,56)) >= '0' && key <= '5' )
{
addstr("\010 ");
move(19, 4+(15 * ((key - '0')-1)));
if ( hold[(key - '0') - 1] )
{
addstr(" ");
hold[(key - '0' -1) ] = 0;
}
else
{
addstr("HOLD");
hold[ (key - '0' -1) ] = 1;
}
}
else
if ( key != '\r' && key != ' ' )
{
putchar('\007');
fflush(stdout);
}
refresh();
}
/* cards selected, now draw */
count=0;
for(index=0; index < 5; ++index)
if ( hold[index] )
++count;
count = 5 - count;
deal(deck, count);
setup_deck(deck, value, suite, count);
/* Replace the discarded cards */
for( index=0; index < 5 && count; ++index )
{
if ( hold[index] == 0 ) /* card NOT held */
{
value[index] = value[draw_card];
suite[index] = suite[draw_card++];
--count;
}
}
display_hand(value, suite, 5);
sort(value, suite, 5);
win = bet * display_val(id_hand(value, suite));
credits += win;
mvprintw(22, 65, "Credits %-6d ", credits);
mvprintw(23, 65, "Winner %-6d ", win);
refresh();
}
SHAR_EOF
fi
if test -f 'id_hand.c'
then
echo shar: "will not over-write existing file 'id_hand.c'"
else
cat << \SHAR_EOF > 'id_hand.c'
/*LINTLIBRARY*/
/*
* Copyright (C) 1991 by Jay Konigsberg. mail: jak at sactoh0
*
* Permission to use, copy, modify, and distribute this software and its
* documentation is hereby granted, provided that the above copyright
* notice appear in all copies and that both the copyright notice and
* this permission notice appear in supporting documentation. This software
* is provided "as is" without express or implied warranty. However, the
* author retains all Copyright priviliges and rights to renumeration if
* this software is sold.
*
* Also, and very important. This game is for recrecation ONLY and is NOT
* to be used for gambling in any way.
*/
/*
* id_hand.c - Determins what value the hand is. I suppose it could be
* optimized further, but hey - how fast can you play this puppy?
*/
#include "vid_poker.h"
#include "vid_extern.h"
#include "hand_value.h"
int id_hand(value, suite)
int *value;
char **suite;
{
int flush = FALSE,
straight = FALSE,
pair = FALSE,
jacksor = FALSE,
twopair = FALSE,
trips = FALSE,
fullhouse = FALSE,
four = FALSE,
straightflush = FALSE,
royalflush = FALSE;
int card; /* loop variable used while checking hand */
char *check; /* pointer in suite - flush checking */
do
{ /* one pass only. a break may exit before its done */
/* check the first five cards only */
/* Flush ? */
flush=TRUE;
check = suite[0];
for ( card=1; card < 5; ++card )
{
if ( strcmp((char *)suite[card], check) )
{
flush=FALSE;
break;
}
}
/* Straight */
straight=FALSE;
straightflush=FALSE;
royalflush=FALSE;
if ( value[0] == value[1]-1 && value[0] == value[2]-2
&& value[0] == value[3]-3 && value[0] == value[4]-4 )
straight=TRUE;;
/* Ace high straight/ royal flush */
if ( value[0] == 1 && value[1] == 10 && value[2] == 11
&& value[3] == 12 && value[4] == 13 )
{
if ( flush )
{
straight=FALSE;
flush=FALSE;
royalflush=TRUE;
break; /* do */
}
else
{
straight=TRUE;;
}
}
/* Straight flush */
if ( straight && flush )
{
straight=FALSE;
flush=FALSE;
straightflush=TRUE;
/* return; */
}
if ( straight || flush || straightflush )
break; /* do */
/* Pair */
pair=FALSE;
for ( card=0; card < 4; ++card )
{
if (value[card]==value[card+1])
{
pair=TRUE;
break;
}
}
/* Jacks or better */
jacksor=FALSE;
if ( pair && (value[card] == 1 || value[card] >= 11) )
{
pair=FALSE;
jacksor=TRUE;
}
/* Trips */
trips=FALSE;
if ( (pair || jacksor) && card < 3 && value[card] == value[card+2] )
{
pair=FALSE;
jacksor=FALSE;
trips=TRUE;
}
/* Four of a kind */
four=FALSE;
if ( trips && card < 2 && value[card] == value[card+3] )
{
trips=FALSE;
four=TRUE;
break; /* do */
}
/* two pair */
twopair=FALSE;
if ( pair || jacksor )
for (card += 2; card < 4; ++card )
if (value[card]==value[card+1])
{
pair=FALSE;
jacksor=FALSE;
twopair=TRUE;
break;
}
/* full house */
fullhouse=FALSE;
if ( twopair && card == 2 && value[3] == value[4] )
{
twopair=FALSE;
fullhouse=TRUE;
break; /* do */
}
if ( trips && card == 0 && value[3] == value[4] )
{
trips=FALSE;
fullhouse=TRUE;
break; /* do */
}
}
while ( FALSE );
/* return the value of the hand */
if ( flush )
return(FLUSH);
if ( straight )
return(STRAIGHT);
if ( straightflush )
return(STRAIGHTFLUSH);
if ( royalflush )
return(ROYALFLUSH);
if ( pair )
return(PAIR);
if ( jacksor )
return(JACKSOR);
if ( twopair )
return(TWOPAIR);
if ( trips )
return(TRIPS);
if ( four )
return(FOUR);
if ( fullhouse )
return(FULLHOUSE);
else
return(0);
}
SHAR_EOF
fi
if test -f 'main.c'
then
echo shar: "will not over-write existing file 'main.c'"
else
cat << \SHAR_EOF > 'main.c'
/*LINTLIBRARY*/
/*
* Copyright (C) 1991 by Jay Konigsberg. mail: jak at sactoh0
*
* Permission to use, copy, modify, and distribute this software and its
* documentation is hereby granted, provided that the above copyright
* notice appear in all copies and that both the copyright notice and
* this permission notice appear in supporting documentation. This software
* is provided "as is" without express or implied warranty. However, the
* author retains all Copyright priviliges and rights to renumeration if
* this software is sold.
*
* Also, and very important. This game is for recrecation ONLY and is NOT
* to be used for gambling in any way.
*/
/*
* main for "video_poker" - just like the ones in Nevada.
* Jay Konigsberg
* jak at sactoh0 - pacbel!sactoh0!jak
*/
#include "vid_local.h"
#include <signal.h>
#include "vid_curses.h"
#include "vid_poker.h"
int bet,
credits;
void main()
{
int deck[10], /* The random numbers as they were generated */
value[10], /* The card values - A, 2 ... 12=Q, 13=K */
loop; /* loop while bet is selected */
char *suite[10]; /* Corasponding suites (Spades, Hearts, ... */
int cardinx; /* Just a loop variable */
credits=0;
rawmode(); /* set up char-at-a-time processing */
signal(SIGINT, cleanup);/* trap inturrepts (also in rawmode) */
initscr();
payoff_val(0); /* Put the payoff values on the screen */
for (;;)
{
for (cardinx=0; cardinx<10; ++cardinx)
{
deck[cardinx] = 0;
value[cardinx] = 0;
suite[cardinx] = (char *)0;
}
bet = 0;
loop = TRUE;
while (loop)
{
mvaddstr(21,0,"B/b=bet one credit, M/m=bet max credits, Q/q=quit?\t\t");
move(21,51);
refresh();
switch (getch())
{
case '\n':
case '\r':
loop=FALSE;
break;
case 'q':
case 'Q':
case 'n':
case 'N':
loop=FALSE;
cleanup();
break;
case 'M':
case 'm':
case ' ':
loop=FALSE;
credits -= (5 - bet);
bet = 5;
move(21,65);
printw("Bet %-6d", bet);
payoff_val(bet); /* Put the payoff values on the screen */
break;
case 'b':
case 'B':
++bet;
if ( bet == 5 )
loop=FALSE;
else
loop=TRUE;
payoff_val(bet); /* Put the payoff values on the screen */
move(21,65);
printw("Bet %-6d", bet);
--credits;
break;
}
mvprintw(22, 65, "Credits %-5d ", credits);
refresh();;
if (bet == 0)
loop=TRUE;
}
deal(deck, 5);
setup_deck(deck, value, suite, 5);
sort(value, suite, 5);
display_hand(value, suite, 5);
(void)display_val(id_hand(value, suite));
draw(deck, value, suite);
}
/*NOTREACHED*/
}
SHAR_EOF
fi
if test -f 'payoff_val.c'
then
echo shar: "will not over-write existing file 'payoff_val.c'"
else
cat << \SHAR_EOF > 'payoff_val.c'
/*LINTLIBRARY*/
/*
* Copyright (C) 1991 by Jay Konigsberg. mail: jak at sactoh0
*
* Permission to use, copy, modify, and distribute this software and its
* documentation is hereby granted, provided that the above copyright
* notice appear in all copies and that both the copyright notice and
* this permission notice appear in supporting documentation. This software
* is provided "as is" without express or implied warranty. However, the
* author retains all Copyright priviliges and rights to renumeration if
* this software is sold.
*
* Also, and very important. This game is for recrecation ONLY and is NOT
* to be used for gambling in any way.
*/
/*
* payoff_val.c - dumb routine to show the payoffs
*/
#include "vid_curses.h"
#include "vid_poker.h"
void payoff_val(bet)
int bet;
{
if ( bet == 0 )
{
mvaddstr(1, 23, "VIDEO POKER - Standard Nevada odds");
mvaddstr(3, 10, "Jacks or better 1");
mvaddstr(4, 10, "Two Pair 2");
mvaddstr(5, 10, "Three of a kind 3");
mvaddstr(6, 10, "Straight 4");
mvaddstr(7, 10, "Flush 5");
mvaddstr(3, 45, "Full House 8");
mvaddstr(4, 45, "Four of a kind 25");
mvaddstr(5, 45, "Straight flush 50");
mvaddstr(6, 45, "Royal flush 250");
}
else
{
mvprintw(3, 27, "%4d", bet);
mvprintw(4, 27, "%4d", bet * 2);
mvprintw(5, 27, "%4d", bet * 3);
mvprintw(6, 27, "%4d", bet * 4);
mvprintw(7, 27, "%4d", bet * 5);
mvprintw(3, 62, "%4d", bet * 8);
mvprintw(4, 62, "%4d", bet * 25);
mvprintw(5, 62, "%4d", bet * 50);
mvprintw(6, 62, "%4d", bet * 250);
}
}
SHAR_EOF
fi
if test -f 'rawmode.c'
then
echo shar: "will not over-write existing file 'rawmode.c'"
else
cat << \SHAR_EOF > 'rawmode.c'
/*
* Copyright (C) 1991 by Jay Konigsberg. mail: jak at sactoh0
*
* Permission to use, copy, modify, and distribute this software and its
* documentation is hereby granted, provided that the above copyright
* notice appear in all copies and that both the copyright notice and
* this permission notice appear in supporting documentation. This software
* is provided "as is" without express or implied warranty. However, the
* author retains all Copyright priviliges and rights to renumeration if
* this software is sold.
*
* Also, and very important. This game is for recrecation ONLY and is NOT
* to be used for gambling in any way.
*/
/*
* rawmode.c - enter character at a time processing. I ripped this off
* from one of my other programs because the one in curses didn't work
* the way _I_ wanted :-)
*/
#include <stdio.h>
#include <termio.h>
#include <signal.h>
#include "vid_extern.h"
#include "vid_local.h"
extern int errno;
/* Global for interrupt routine: cleanup() */
struct termio ttyset; /* terminal settings */
unsigned short c_lflag_hold; /* hold original values for reset */
unsigned char VEOF_hold; /* hold original value for reset */
/*
*enter raw mode
*/
void rawmode()
{
if ( ioctl(0, TCGETA, &ttyset) == -1 )
{
fprintf(stderr, "ioctl: error=%d\n", errno);
(void)exit(2);
}
c_lflag_hold=ttyset.c_lflag;
VEOF_hold = ttyset.c_cc[4];
ttyset.c_cc[4] = (unsigned char)1;
ttyset.c_lflag &= ~(ICANON | ECHO);
if ( ioctl(0, TCSETAW, &ttyset) == -1 )
{
fprintf(stderr, "ioctl: error=%d\n",errno);
}
signal(SIGINT, cleanup);
}
SHAR_EOF
fi
if test -f 'setup_deck.c'
then
echo shar: "will not over-write existing file 'setup_deck.c'"
else
cat << \SHAR_EOF > 'setup_deck.c'
/*
* Copyright (C) 1991 by Jay Konigsberg. mail: jak at sactoh0
*
* Permission to use, copy, modify, and distribute this software and its
* documentation is hereby granted, provided that the above copyright
* notice appear in all copies and that both the copyright notice and
* this permission notice appear in supporting documentation. This software
* is provided "as is" without express or implied warranty. However, the
* author retains all Copyright priviliges and rights to renumeration if
* this software is sold.
*
* Also, and very important. This game is for recrecation ONLY and is NOT
* to be used for gambling in any way.
*/
/*
* setup_deck.c - converts the random numbers into 1-13 + suite. Yes, I know
* I don't really need to use a char string for the suite. But it worked well
* in the first version and I didn't ever get around to changing it. If it
* bugs you - fix it and enjoy.
*/
#include "vid_poker.h"
#include "vid_extern.h"
void setup_deck(deck, value, suite, count)
int *deck,
*value;
char **suite;
int count;
{
int cardinx=0;
if ( deck[5] == 0 )
{
cardinx=0;
}
else
{
cardinx=5;
count += 5;
}
for(; cardinx < count; ++cardinx)
{
/* Set the suite and card value */
if ( deck[cardinx] > 39 )
{
suite[cardinx]="Spades";
value[cardinx] = deck[cardinx] - 39;
}
else
if ( deck[cardinx] > 26 )
{
suite[cardinx]="Diamonds";
value[cardinx] = deck[cardinx] - 26;
}
else
if ( deck[cardinx] > 13 )
{
suite[cardinx]="Hearts";
value[cardinx] = deck[cardinx] - 13;
}
else
{
suite[cardinx]="Clubs";
value[cardinx] = deck[cardinx];
}
}
}
SHAR_EOF
fi
if test -f 'sort.c'
then
echo shar: "will not over-write existing file 'sort.c'"
else
cat << \SHAR_EOF > 'sort.c'
/*
* Copyright (C) 1991 by Jay Konigsberg. mail: jak at sactoh0
*
* Permission to use, copy, modify, and distribute this software and its
* documentation is hereby granted, provided that the above copyright
* notice appear in all copies and that both the copyright notice and
* this permission notice appear in supporting documentation. This software
* is provided "as is" without express or implied warranty. However, the
* author retains all Copyright priviliges and rights to renumeration if
* this software is sold.
*
* Also, and very important. This game is for recrecation ONLY and is NOT
* to be used for gambling in any way.
*/
/*
* sort.c - sorts the hand into acending order. This is required for the
* id_hand routine.
*
* Hmm, considering that this is a bubble sort, I really wonder how
* approporiate that Copyright up there is? Oh well, I guess I'll leave
* it there. Say, does this mean I own the bubble sort and everyone out
* there gets to pay me royalties :-)
*/
#include "vid_poker.h"
void sort(value, suite, count)
int *value;
char **suite;
int count;
{
int cardinx1,
cardinx2,
temp1;
char *temp2;
for ( cardinx1=0; cardinx1<count; ++cardinx1)
for (cardinx2=cardinx1+1; cardinx2<count; ++cardinx2)
if ( value[cardinx1] > value[cardinx2] )
{
temp1=value[cardinx2];
value[cardinx2] = value[cardinx1];
value[cardinx1] = temp1;
temp2=suite[cardinx2];
suite[cardinx2] = suite[cardinx1];
suite[cardinx1] = temp2;
}
}
SHAR_EOF
fi
exit 0
# End of shell archive
--
-------------------------------------------------------------
Jay @ SAC-UNIX, Sacramento, Ca. UUCP=...pacbell!sactoh0!jak
If something is worth doing, it's worth doing correctly.
More information about the Alt.sources
mailing list