home *** CD-ROM | disk | FTP | other *** search
/ The Best of Select: Games 3 / cd.iso / os2 / pmgnuchs / test.c < prev    next >
Text File  |  1994-04-20  |  4KB  |  147 lines

  1. //
  2. //  Copyright (C) 1986, 1987, 1988, 1989, 1990 Free Software Foundation, Inc.
  3. //  Copyright (c) 1988, 1989, 1990  John Stanback
  4. //
  5. //  Project:    OS/2 PM Port of GNU CHESS 4.0 (PmChess)
  6. //
  7. //  Version:    1994-4-17
  8. //
  9. //   Module:    Playing Board Display (Board.c)
  10. //
  11. //   Porter:    Ported to Windows 3.0 by Darly Baker
  12. //
  13. //   Porter:    Ported to OS/2 1.2+ by Kent Cedola
  14. //
  15. //   Porter:    Revised and ported to OS/2 2.1 by Yibing Fan
  16. //
  17. //   System:    OS2 2.1 using emx0.8g 
  18. //
  19. //  Remarks:    This code modified very little from KC's code (YF)
  20. //
  21. //  Remarks:    This code converted from Windows to PM using a straight port
  22. //              method with some editing improvements. (KC)
  23. //
  24. //  License:
  25. //
  26. //    CHESS is distributed in the hope that it will be useful, but WITHOUT ANY
  27. //    WARRANTY.  No author or distributor accepts responsibility to anyone for
  28. //    the consequences of using it or for whether it serves any particular
  29. //    purpose or works at all, unless he says so in writing.  Refer to the
  30. //    CHESS General Public License for full details.
  31. //
  32. //    Everyone is granted permission to copy, modify and redistribute CHESS,
  33. //    but only under the conditions described in the CHESS General Public
  34. //    License.  A copy of this license is supposed to have been given to you
  35. //    along with CHESS so you can know your rights and responsibilities.  It
  36. //    should be in a file named COPYING.  Among other things, the copyright
  37. //    notice and this notice must be preserved on all copies.
  38. //
  39.  
  40. #define INCL_DOS
  41. #define INCL_PM
  42. #include <os2.h>
  43. #include <time.h>
  44. #include "PmChess.h"
  45. #include "GnuChess.h"
  46. #include "Defs.h"
  47. #include "Resource.h"
  48.  
  49.  
  50. //
  51. //  Define dialog procedure's prototypes.
  52. //
  53. MRESULT EXPENTRY TestProc(HWND hWnd, ULONG msg, MPARAM mp1, MPARAM mp2);
  54.  
  55.  
  56. //***************************************************************************
  57. //
  58. //  Routine: TestDialog(In)
  59. //
  60. //  Remarks: This routine displays a dialog that test the speed of the GNU
  61. //           logic.
  62. //
  63. //  Returns: None.
  64. //
  65. void TestDialog(HWND hWnd)
  66.   {
  67.   WinDlgBox(HWND_DESKTOP, hWnd, TestProc, 0, IDD_TEST, NULL);
  68.   }
  69.  
  70.  
  71. void
  72. TestSpeed(HWND hWnd, int iditem, void (*f) (short int side, short int ply))
  73. {
  74.    unsigned jj;
  75.   unsigned i;
  76.   long cnt, rate, t1, t2;
  77.   char tmp[40];
  78.  
  79.     t1 = time (0);
  80.   for (i = 0; i < 10000; i++)
  81.     {
  82.       f (opponent, 2);
  83.     for(jj=TrPnt[2];i<TrPnt[3];jj++)if(!pick(jj,TrPnt[3]-1))break;
  84.     }
  85.   t2 = time (0);
  86.   cnt = 10000 * (TrPnt[3] - TrPnt[2]);
  87.   if (t2 - t1)
  88.     et = (t2 - t1);
  89.   else
  90.     et = 1;
  91.   rate = (((et) ? ((cnt*100) / et) : 0));
  92.  
  93.   sprintf ( tmp, "Nodes= %8ld, Nodes/Sec= %5ld", cnt, rate);
  94.   WinSetDlgItemText (hWnd, iditem, tmp);
  95. }
  96.  
  97.  
  98. //***************************************************************************
  99. //
  100. //  Routine: TestProc(In, In, In, In)
  101. //
  102. //  Remarks: This routine displays a dialog that queries the user of which
  103. //           type of piece to promote a pawn.
  104. //
  105. //  Returns: The piece selected.
  106. //
  107. MRESULT EXPENTRY TestProc(HWND hDlg, ULONG msg, MPARAM mp1, MPARAM mp2)
  108.   {
  109.   HPOINTER hCurrent, hWait;
  110.  
  111.  
  112.   switch (msg)
  113.     {
  114.     case WM_INITDLG:
  115.       WinPostMsg(hDlg, WM_USER+1, NULL, NULL);
  116.       return (FALSE);
  117.  
  118.     case WM_COMMAND:
  119.       switch (SHORT1FROMMP(mp1))
  120.         {
  121.         case IDC_OK:
  122.           WinDismissDlg(hDlg, TRUE);
  123.           break;
  124.  
  125.         default:
  126.          return(WinDefDlgProc(hDlg, msg, mp1, mp2));
  127.          break;
  128.         }
  129.  
  130.     case WM_USER+1:
  131.       hCurrent = WinQueryPointer(HWND_DESKTOP);
  132.       hWait    = WinQuerySysPointer(HWND_DESKTOP, SPTR_WAIT, FALSE);
  133.       WinSetPointer(HWND_DESKTOP, hWait);
  134.  
  135.       TestSpeed(hDlg, IDC_TEST_MOVELIST,    MoveList);
  136.       TestSpeed(hDlg, IDC_TEST_CAPTURELIST, CaptureList);
  137.  
  138.       WinSetPointer(HWND_DESKTOP, hCurrent);
  139.       break;
  140.  
  141.         default:
  142.          return(WinDefDlgProc(hDlg, msg, mp1, mp2));
  143.          break;
  144.     }
  145.       return (MRESULT)0;
  146.   }
  147.