home *** CD-ROM | disk | FTP | other *** search
/ C Programming Starter Kit 2.0 / SamsPublishing-CProgrammingStarterKit-v2.0-Win31.iso / tybc4 / inputdlg.cpp < prev    next >
C/C++ Source or Header  |  1997-07-29  |  3KB  |  125 lines

  1. /*
  2.   Program illustrates using the input dialog box in a 
  3.   number-guessing game
  4. */
  5. #include <owl\applicat.h>
  6. #include <owl\framewin.h>
  7. #include <owl\inputdia.h>
  8. #include "inputdlg.h"
  9. #include <stdlib.h>
  10. #include <stdio.h>
  11. #include <string.h> 
  12.  
  13. const MaxBuffer = 81;
  14.  
  15. // declare the custom application class as
  16. // a subclass of TApplication
  17. class TWinApp : public TApplication
  18. {
  19. public:
  20.   TWinApp() : TApplication() {}
  21.  
  22. protected:
  23.   virtual void InitMainWindow();
  24. };
  25.  
  26. // expand the functionality of TWindow by deriving class TMainWindow
  27. class TMainWindow : public TWindow
  28. {
  29. public:
  30.  
  31.   TMainWindow() : TWindow(0, 0, 0) {}
  32.  
  33. protected:
  34.   
  35.   // handle the Game menu item
  36.   void CMGame();
  37.  
  38.   // handle closing the window
  39.   virtual BOOL CanClose();
  40.  
  41.   DECLARE_RESPONSE_TABLE(TMainWindow);
  42. };
  43.  
  44. DEFINE_RESPONSE_TABLE1(TMainWindow, TWindow)
  45.   EV_COMMAND(CM_GAME, CMGame),
  46. END_RESPONSE_TABLE;
  47.  
  48. void TMainWindow::CMGame()
  49. {
  50.   char s[MaxBuffer];
  51.   int n, m;
  52.   int MaxIter = 10;
  53.   int iter = 0;
  54.   BOOL ok = TRUE;
  55.   TInputDialog* pDlg;
  56.  
  57.   randomize();
  58.   n = random(1001);
  59.  
  60.   strcpy(s, "500");
  61.   // execute the opening dialog box
  62.   pDlg = new TInputDialog(this, "Hi-Lo Guessing Game",
  63.                         "Enter a number between 0 and 1000",
  64.                         s, sizeof(s));
  65.   if (pDlg->Execute() == IDOK) {
  66.        m = atoi(s);
  67.        iter++;
  68.        // loop to obtain the other guesses
  69.        while (m != n && iter < MaxIter && ok == TRUE) {
  70.          // is the user's guess higher?
  71.          if (m > n) {
  72.            pDlg = new TInputDialog(this,
  73.                            "Hi-Lo Guessing Game",
  74.                            "Enter a lower guess",
  75.                             s, sizeof(s));
  76.            ok = (pDlg->Execute() == IDOK) ? TRUE : FALSE;
  77.  
  78.         }
  79.          else {
  80.            pDlg = new TInputDialog(this,
  81.                            "Hi-Lo Guessing Game",
  82.                            "Enter a higher guess",
  83.                             s, sizeof(s));
  84.            ok = (pDlg->Execute() == IDOK) ? TRUE : FALSE;
  85.         }
  86.          m = atoi(s);
  87.          iter++;
  88.        }
  89.  
  90.        // did the user guess the secret number
  91.        if (iter < MaxIter && ok == TRUE) {
  92.      MessageBeep(MB_ICONEXCLAMATION);
  93.      MessageBeep(MB_ICONEXCLAMATION);
  94.      sprintf(s, "You guess it! It's %d", n);
  95.      MessageBox(s, "Congratulations!", MB_OK);
  96.        }
  97.        else {
  98.      MessageBeep(-1);
  99.          sprintf(s, "The secret number is %d", n);
  100.          MessageBox(s, "Sorry!", MB_OK);
  101.        }
  102.   }
  103. }
  104.  
  105. BOOL TMainWindow::CanClose()
  106. {
  107.   return MessageBox("Want to close this application",
  108.                     "Query", MB_YESNO | MB_ICONQUESTION) == IDYES;
  109. }
  110.  
  111. void TWinApp::InitMainWindow()
  112. {
  113.   MainWindow = new TFrameWindow(0, "Hi-Lo Number-Guessing Game",
  114.                                 new TMainWindow);
  115.   // load the menu resource
  116.   MainWindow->AssignMenu(TResId(IDM_MAINMENU));
  117. }
  118.  
  119. int OwlMain(int /* argc */, char** /*argv[] */)
  120. {
  121.   TWinApp app;
  122.   return app.Run();
  123. }
  124.  
  125.