|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T m
Length: 5288 (0x14a8)
Types: TextFile
Names: »makeb.c«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
└─⟦this⟧ »EUUGD18/General/Craps/makeb.c«
#include "types.h"
#include "ext.h"
make_bets()
{
int i,fk,bad,y,z;
static int fl=0;
double getbet(),x,t;
char c, *shell = "/bin/csh",*cp="AahLyRUTKrVsc",pp[15];
pr_bets();
cheat=0;
while(1) {
if((z=zippo())==1) {
announce(0);
announce("Sorry, but you are FLAT BROKE! ~");
announce("Now BEAT IT!! ~");
pr_an();
stop();
} else if(z==2 && !fl) {
announce(0);
announce("You have no money in your rack, ~");
announce("but you still have bets working. ~");
fl=1;
pr_an();
continue;
}
addline(0);
addline("Bet:");
c=getchar();
if((i=ind(keys,c))== -1) {
BEEP;
continue;
} else {
switch(i) {
case ROLL:
break;
case HELP:
help();
continue;
case SHELL:
clear(); move(23,1); refresh();
echo(); nocrmode();
fk=fork();
if (fk==0) {
setuid(getuid());
execl(shell,shell,0);
} else wait(0);
noecho(); crmode();
clear();
print_board();
if(point)
mvaddstr(4,pcol[point],"----");
pr_bets();
update(1);
cheat=1;
roll();
cheat=0;
continue;
case QUIT:
stop();
case REFRESH:
wrefresh(curscr);
continue;
case CHEAT:
addline("Enter password:");
gs(pp,15);
if(strcmp(crypt(pp,"Aa"),cp)) {
BEEP;
continue;
}
cheat=1;
addline("first die?");
dice[0]=(int)getbet(1);
if(dice[0]==-1||dice[0]>6) continue;
addline("second die?");
dice[1]=(int)getbet(1);
if(dice[1]==-1||dice[1]>6) continue;
continue;
case FIELD:
if(mbet(i,&field)==ESC) continue;
pr_bets();
update(0);
continue;
case ASEVEN:
if(mbet(i,&aseven)==ESC) continue;
pr_bets();
update(0);
continue;
case EEYO:
if(mbet(i,&eeyo)==ESC) continue;
pr_bets();
update(0);
continue;
case TWELVE:
if(mbet(i,&boxcars)==ESC) continue;
pr_bets();
update(0);
continue;
case TWO:
if(mbet(i,&aces)==ESC) continue;
pr_bets();
update(0);
continue;
case THREE:
if(mbet(i,&aceduece)==ESC) continue;
pr_bets();
update(0);
continue;
case ACRAPS:
if(mbet(i,&acraps)==ESC) continue;
pr_bets();
update(0);
continue;
case HWAY:
do {
addline(0);
addline(Bets[i]);
addline(" number?");
y=(int)getbet(1);
if(y==-1) break;
} while(!chk_hrd(y));
if(y==-1) continue;
t=hways[y];
if(mbet(i,&t)==ESC) continue;
hways[y]=t;
pr_bets();
update(0);
continue;
case DONT:
if(point) msg("The point is already established. Try a dont come bet",23,1);
else if(mbet(i,&dont)==ESC) continue;
pr_bets();
update(0);
continue;
case DCOME:
if(!point)
msg("There is no point yet. Bet on the Dont Pass Line.",23,1);
else if(mbet(i,&dcomeb)==ESC) continue;
pr_bets();
update(0);
continue;
case LODDS:
do {
addline(0);
addline(Bets[i]);
addline(" number?");
y=(int)getbet(1);
if(y==-1) break;
} while((!chk_plc(y)) ||(d_or_p(y)));
if(y==-1) continue;
t=lodds[y];
if(mbet(i,&t)==ESC) continue;
lodds[y]=t;
pr_bets();
update(0);
continue;
case PASS:
if(point) msg("The point is already established. Try a come bet.",23,1);
else if(mbet(i,&pass)==ESC) continue;
pr_bets();
update(0);
continue;
case COME:
if(!point)
msg("There is no point yet. Bet on the Pass Line.",23,1);
else if(mbet(i,&comeb)==ESC) continue;
pr_bets();
update(0);
continue;
case ODDS:
do {
addline(0);
addline(Bets[i]);
addline(" number?");
y=(int)getbet(1);
if(y==-1) break;
} while((!chk_plc(y)) ||(c_or_p(y)));
if(y==-1) continue;
t=odds[y];
if(mbet(i,&t)==ESC) continue;
odds[y]=t;
pr_bets();
update(0);
continue;
case PLACE:
do {
addline(0);
addline(Bets[i]);
addline(" number?");
y=(int)getbet(1);
if(y==-1) break;
} while(!chk_plc(y));
if(y==-1) continue;
t=place[y];
if(mbet(i,&t)==ESC) continue;
place[y]=t;
pr_bets();
update(0);
continue;
}
refresh();
break;
}
}
}
zippo()
{
double s;
int i;
if(total==0.0) {
s=pass+odds[point]+dont+lodds[point];
s=s+aseven+eeyo+boxcars+aces+aceduece+acraps;
s=s+comeb+dcomeb+field;
for(i=0;i<11;i++) {
if(i!=point) {s=s+odds[i];s=s+lodds[i];}
s=s+place[i]+dcome[i]+come[i]+hways[i];
}
if(s!=0.0) return(2);
else return(1);
} else return(0);
}
mbet(i,x)
int i;
double *x;
{
int bad=0;
double t=0.0;
do {
if(bad) BEEP;
bad=0;
do {
if(t>LIMIT) BEEP;
addline(0);
addline(Bets[i]);
addline(" how much ? $");
if((t=getbet(1))== -1.0) return(ESC);
} while(t>LIMIT);
total += *x;
*x = t;
total -= *x;
if(t!=0.0) {numbets=numbets+1; handle=handle+t;}
if(total <0.0) {
bad=1;
total += *x;
*x = 0.0;
if(t!=0.0) {numbets=numbets-1; handle=handle-t;}
}
} while(bad);
return(1);
}
gs(s,n)
char *s;
int n;
{
char c;
while(1) {
c=getchar();
if(c=='\n'||c==EOF) break;
if(n) {
--n;
*s++=c;
}
}
*s=0;
}