home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Usenet 1994 October
/
usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso
/
games
/
volume4
/
nobs
/
human.c
< prev
next >
Wrap
C/C++ Source or Header
|
1988-03-24
|
2KB
|
111 lines
#include "defs.h"
#include "globs.h"
#include "window.h"
#ifdef BSD
#include <ctype.h>
#define beep() putchar('\007')
#endif
humandiscard(hand, mydeal)
CARD hand[];
int mydeal;
{
char selected[6];
int nselected;
int j, j1, j2;
char k;
for (j=0; j<6; j++) mvwaddch(Select, 0, 5*j+2, 'a'+j);
wrefresh(Select);
mvwprintw(
Prompt, 0, 0, mydeal? "It is your crib.\n": "It is my crib.\n");
mvwprintw(Prompt, 1, 0, "Select 2 cards. Type RETURN to discard.\n");
for (j=0; j<6; j++) selected[j]=0;
nselected = 0;
for (;;) {
mvwaddch(Prompt, 1, 41, '\n');
wmove(Prompt, 1, 41);
wrefresh(Prompt);
k = wgetch(Prompt);
k = (isupper(k) ? tolower(k) : k);
if ('\n'==k) {
if (nselected == 2) break;
beep();
continue;
}
if (k > 'f' || k < 'a') {
beep();
continue;
}
nselected -= selected[k-'a'];
nselected += (selected[k-'a'] ^= 1);
mvwaddch(Humanhand, 2, 5*(k-'a')+3,
selected[k-'a']? '*': ' ');
wrefresh(Humanhand);
}
wclear(Select);
wclear(Prompt);
wrefresh(Select);
wrefresh(Prompt);
for (j=0; j<6; j++) if (selected[j]) {
j1 = j2; /* and you know Lint won't like this! */
j2 = j;
}
makediscard(hand, j1, j2);
}
humanplay()
{
char k;
int sco;
if (whosego == whoseturn) {
/*
* It is my go. Can I play?
*/
if (goodgo(whoseturn)) {
SCOREUP(whoseturn, 1);
resetgo();
handover = !nleft[0] && !nleft[1];
return;
}
else mvwprintw(Prompt, 1, 0, "Select a card.\n");
}
else if (!nleft[whoseturn]) {
handover = !nleft[0] && !nleft[1];
if (handover) SCOREUP(whoseturn, 1);
return;
}
else if (whosego == !whoseturn) return;
else mvwprintw(Prompt, 1, 0, "Select a card, or type \"g\" for go.");
for (;;) {
mvwaddch(Prompt, 1, 41, '\n');
wrefresh(Prompt);
k = wgetch(Prompt);
k = (isupper(k) ? tolower(k) : k);
if (k == 'g') {
if (goodgo(whoseturn)) {
whosego = !whoseturn;
return;
}
else beep();
}
else if (k < 'a' || k > 'd') beep();
else if (goodplay(whoseturn, k-'a')) break;
else beep();
}
werase(Prompt);
played[whoseturn][k-'a'] = 1;
count += rankvalue[RANK(hand[whoseturn][k-'a'])];
go[gocount++] = hand[whoseturn][k-'a'];
nleft[whoseturn] -= 1;
sco = playscore();
showhplay(k-'a', sco);
if (sco) SCOREUP(whoseturn, sco);
handover = !nleft[0] && !nleft[1];
if (count==31) resetgo();
else if (handover) {
mvwprintw(Prompt, 0, 0, "That's a Go\n");
SCOREUP(whoseturn, 1);
}
sleep(1);
}