home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / games / gkit.zip / D0MAIN.C < prev    next >
Text File  |  1988-05-05  |  3KB  |  112 lines

  1. /* EXAMPLE GAME FORMAT FOR THE GATEWAYS PROJECT - A SIMPLE GUESSING GAME */
  2. /* Designed and written by David M. Larson, BBS: 916-753-8788 */
  3. /* Dynasoft, P.O. Box 915, Davis, CA 95617 */
  4. #include "GATEWAYS.H"
  5. #include "D0MAIN.H"
  6.  
  7. /*----------------------------------------------------------*/
  8. void d0read_d0questions()
  9. {
  10. d0quest_struct *ptr;
  11. memset(d0questions,0,MAX_QUEST*sizeof(*d0questions));
  12. gfd0=og_open("D0QUEST",0);
  13. if(gfd0==-1) return; /* file didn't exist */
  14. if(keystat()==1) /* I put this here so carrier loss while the file is open */
  15.      {             /* is possible (to detect) to demonstrate d0exit() */
  16.    outstr("\nDon't push me. I'm reading!\n");
  17.    }
  18. for(ptr=d0questions;ptr<d0questions+MAX_QUEST;ptr++)
  19.    {
  20.    if(readline(gfd0,ptr->prompt,sizeof(ptr->prompt),0)<0) break;
  21.    trim(ptr->prompt);
  22.    if(readline(gfd0,ptr->answer,sizeof(ptr->answer),0)<0) break;
  23.    trim(ptr->answer); upcfy(ptr->answer);
  24.    }
  25. og_close(gfd0);
  26. }
  27. /*----------------------------------------------------------*/
  28. int d0picknum()
  29. {
  30. int num;
  31. num=irandom(MAX_NUM-MIN_NUM+1)+MIN_NUM;
  32. outstr("\nEnter your guess: ");
  33. inpstr(gss,4);
  34. if(atoi(gss)!=num)
  35.      {
  36.  
  37.      sprintf(gss,"\nSorry, the number I was thinking of was %d",num);
  38.      outstr(gss);
  39.      return 0;
  40.      }
  41. else
  42.   {
  43.   outstr("\nThats right!\n");
  44.   return 1;
  45.   }
  46. }
  47. /*----------------------------------------------------------*/
  48. int d0bonus_quest()
  49. {
  50. int num;
  51. num=irandom(MAX_QUEST);
  52. if(0==d0questions[num].prompt[0]) return 0;
  53. outstr("\n");
  54. outstr(d0questions[num].prompt);
  55. outstr("? ");
  56. inpstr(gss,sizeof(d0questions[0].answer));
  57. upcfy(gss); trim(gss);
  58. if(strcmp(gss,d0questions[num].answer)!=0)
  59.      {
  60.      outstr("\nSorry, The answer is ");
  61.      outstr(d0questions[num].answer);
  62.      outstr(".\n");
  63.      return -1;
  64.      }
  65. outstr("\nThats right!\n");
  66. return 2;
  67. }
  68. /*----------------------------------------------------------*/
  69. void d0exit()
  70. {
  71. if(gfd0!=-1) { og_close(gfd0); gfd0=-1; }
  72. if(gp0!=(void *) 0) { og_free(gp0); gp0=(void *)0; }
  73. }
  74. /*----------------------------------------------------------*/
  75. int d0main(plnum,numplayers,gatenum,numgates)
  76. int plnum,numplayers,gatenum,numgates;
  77. {
  78. int score;
  79. int i;
  80. score=0;
  81. og_onexit(d0exit);
  82. d0questions=gp0=og_malloc(MAX_QUEST*sizeof(*d0questions));
  83. if(gp0==(void *) 0) return -1; /* couldn't get enough memory */
  84. i=og_create("TEST");
  85. writeline(i,"this is a test of writeline");
  86. og_close(i);
  87. d0read_d0questions();
  88. sprintf(gss,"\nHELLO %s!\n",og_plname(plnum));
  89. outstr(gss);
  90. outstr("Welcome to the Number guessing game example for GATEWAYS\n");
  91. sprintf(gss,"Your must pick a number between %d and %d.\n",MIN_NUM,MAX_NUM);
  92. outstr(gss);
  93. for(i=0;i<10;i++)
  94.      {
  95.      if(++gatenum>=numgates) gatenum=0;
  96.      if(1==d0picknum())
  97.           {
  98.           score+=MAX_NUM-MIN_NUM;
  99.           score+=d0bonus_quest()*(MAX_NUM-MIN_NUM);
  100.           }
  101.      else score--;
  102.      if(-3==og_gateways(gatenum)) goto fini;
  103.      }
  104. /* add something to show score to player */
  105. fini:
  106. *og_plscore(plnum)=score;
  107. og_free(gp0);
  108. return gatenum;
  109. }
  110. /*----------------------------------------------------------*/
  111.  
  112.