Guess.c 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. // Guess the number, an example how to use dialogs in TIGCC
  2. #define USE_TI89
  3. #define USE_TI92PLUS
  4. #define USE_V200
  5. #define MIN_AMS 100
  6. #include <alloc.h>
  7. #include <ctype.h>
  8. #include <dialogs.h>
  9. #include <peekpoke.h>
  10. static unsigned int rand_seed=0; // seed for random numbers
  11. int randomnum(int x) // returns a random number between 0 and x-1
  12. {
  13. return (rand_seed=(75*rand_seed+1))%x;
  14. }
  15. void _main(void)
  16. {
  17. const char *text;
  18. const char *ptr;
  19. char buffer[10];
  20. int number,guessed,dialogkey;
  21. HANDLE dialog;
  22. rand_seed=137*peek(0x600017); // pick the seed from the timer
  23. while(TRUE)
  24. {
  25. text="Guess the number between 1 and 1000";
  26. number=0; guessed=1+randomnum(1000);
  27. while(TRUE)
  28. {
  29. *buffer=0;
  30. if(!(dialog=DialogNewSimple(140,50))) return;
  31. DialogAddTitle(dialog,"~GUESS THE NUMBER~ GAME",BT_OK,BT_CANCEL);
  32. if(number!=guessed)
  33. DialogAddRequest(dialog,4,24,"Enter the number",0,5,5);
  34. else
  35. {
  36. text="YOU GUESSED THE NUMBER!!!";
  37. DialogAddText(dialog,4,24,"Press ENTER for a new game...");
  38. }
  39. DialogAddText(dialog,4,15,text);
  40. dialogkey=DialogDo(dialog,CENTER,CENTER,buffer,NULL);
  41. HeapFree(dialog);
  42. if(dialogkey!=13) return;
  43. if(number==guessed) break;
  44. number=0; ptr=buffer;
  45. while(isdigit(*ptr)) number=10*number+(*ptr++)-'0';
  46. if(*ptr) text="Non-digit character entered!";
  47. else if(guessed>number) text="Sorry, my number is greater!";
  48. else if(guessed<number) text="Sorry, my number is smaller!";
  49. }
  50. }
  51. }