home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Overload
/
ShartewareOverload.cdr
/
games
/
gkit.zip
/
D0MAIN.C
< prev
next >
Wrap
Text File
|
1988-05-05
|
3KB
|
112 lines
/* EXAMPLE GAME FORMAT FOR THE GATEWAYS PROJECT - A SIMPLE GUESSING GAME */
/* Designed and written by David M. Larson, BBS: 916-753-8788 */
/* Dynasoft, P.O. Box 915, Davis, CA 95617 */
#include "GATEWAYS.H"
#include "D0MAIN.H"
/*----------------------------------------------------------*/
void d0read_d0questions()
{
d0quest_struct *ptr;
memset(d0questions,0,MAX_QUEST*sizeof(*d0questions));
gfd0=og_open("D0QUEST",0);
if(gfd0==-1) return; /* file didn't exist */
if(keystat()==1) /* I put this here so carrier loss while the file is open */
{ /* is possible (to detect) to demonstrate d0exit() */
outstr("\nDon't push me. I'm reading!\n");
}
for(ptr=d0questions;ptr<d0questions+MAX_QUEST;ptr++)
{
if(readline(gfd0,ptr->prompt,sizeof(ptr->prompt),0)<0) break;
trim(ptr->prompt);
if(readline(gfd0,ptr->answer,sizeof(ptr->answer),0)<0) break;
trim(ptr->answer); upcfy(ptr->answer);
}
og_close(gfd0);
}
/*----------------------------------------------------------*/
int d0picknum()
{
int num;
num=irandom(MAX_NUM-MIN_NUM+1)+MIN_NUM;
outstr("\nEnter your guess: ");
inpstr(gss,4);
if(atoi(gss)!=num)
{
sprintf(gss,"\nSorry, the number I was thinking of was %d",num);
outstr(gss);
return 0;
}
else
{
outstr("\nThats right!\n");
return 1;
}
}
/*----------------------------------------------------------*/
int d0bonus_quest()
{
int num;
num=irandom(MAX_QUEST);
if(0==d0questions[num].prompt[0]) return 0;
outstr("\n");
outstr(d0questions[num].prompt);
outstr("? ");
inpstr(gss,sizeof(d0questions[0].answer));
upcfy(gss); trim(gss);
if(strcmp(gss,d0questions[num].answer)!=0)
{
outstr("\nSorry, The answer is ");
outstr(d0questions[num].answer);
outstr(".\n");
return -1;
}
outstr("\nThats right!\n");
return 2;
}
/*----------------------------------------------------------*/
void d0exit()
{
if(gfd0!=-1) { og_close(gfd0); gfd0=-1; }
if(gp0!=(void *) 0) { og_free(gp0); gp0=(void *)0; }
}
/*----------------------------------------------------------*/
int d0main(plnum,numplayers,gatenum,numgates)
int plnum,numplayers,gatenum,numgates;
{
int score;
int i;
score=0;
og_onexit(d0exit);
d0questions=gp0=og_malloc(MAX_QUEST*sizeof(*d0questions));
if(gp0==(void *) 0) return -1; /* couldn't get enough memory */
i=og_create("TEST");
writeline(i,"this is a test of writeline");
og_close(i);
d0read_d0questions();
sprintf(gss,"\nHELLO %s!\n",og_plname(plnum));
outstr(gss);
outstr("Welcome to the Number guessing game example for GATEWAYS\n");
sprintf(gss,"Your must pick a number between %d and %d.\n",MIN_NUM,MAX_NUM);
outstr(gss);
for(i=0;i<10;i++)
{
if(++gatenum>=numgates) gatenum=0;
if(1==d0picknum())
{
score+=MAX_NUM-MIN_NUM;
score+=d0bonus_quest()*(MAX_NUM-MIN_NUM);
}
else score--;
if(-3==og_gateways(gatenum)) goto fini;
}
/* add something to show score to player */
fini:
*og_plscore(plnum)=score;
og_free(gp0);
return gatenum;
}
/*----------------------------------------------------------*/