home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-385-Vol-1of3.iso / x / xcu16.zip / clients / xhearts / main.c < prev    next >
C/C++ Source or Header  |  1991-10-03  |  3KB  |  110 lines

  1. /*
  2.  * Copyright 1991 Cornell University
  3.  *
  4.  * Permission to use, copy, modify, and distribute this software and its
  5.  * documentation for any purpose and without fee is hereby granted, provided
  6.  * that the above copyright notice appear in all copies and that both that
  7.  * copyright notice and this permission notice appear in supporting
  8.  * documentation, and that the name of Cornell U. not be used in advertising
  9.  * or publicity pertaining to distribution of the software without specific,
  10.  * written prior permission.  Cornell U. makes no representations about the
  11.  * suitability of this software for any purpose.  It is provided "as is"
  12.  * without express or implied warranty.
  13.  *
  14.  * CORNELL UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
  15.  * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
  16.  * EVENT SHALL CORNELL UNIVERSITY BE LIABLE FOR ANY SPECIAL, INDIRECT OR
  17.  * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
  18.  * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
  19.  * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  20.  * PERFORMANCE OF THIS SOFTWARE.
  21.  *
  22.  * Author:  Gene W. Dykes, Program of Computer Graphics
  23.  *          580 Theory Center, Cornell University, Ithaca, NY 14853
  24.  *          (607) 255-6713   gwd@graphics.cornell.edu
  25.  */
  26.  
  27.  
  28. #include <X11/Intrinsic.h>
  29. #include "hearts.h"
  30.  
  31. Game _game, *game = &_game ;
  32. History _history, *history = &_history ;
  33. PvtHistory pvt_history[N_PLAYERS] ;
  34. Snap _snap, *snap = &_snap ;
  35. Info _info, *info = &_info ;
  36.  
  37. main(argc, argv)
  38.     int argc ;
  39.     char **argv ;
  40. {
  41. void initialize() ;
  42. void deal() ;
  43. void exchange() ;
  44. void trick() ;
  45. void cleanup() ;
  46. void score_hand() ;
  47. void determine_lead() ;
  48. void play() ;
  49. Boolean    game_over() ;
  50. Boolean    hand_over() ;
  51.  
  52. initialize (argc, argv) ;
  53.  
  54. while (!game_over())
  55.     {
  56.     deal () ;
  57.     exchange () ;
  58.     while (!hand_over ())
  59.     {
  60.     determine_lead () ;
  61.     if (game->conceded)
  62.         continue ;
  63.     trick () ;
  64.     }
  65.     score_hand () ;
  66.     request_another_hand () ;
  67.     }
  68.  
  69. cleanup() ;
  70. }
  71.  
  72. Boolean 
  73. game_over ()
  74. {
  75. int i ;
  76. /*
  77.  * The game is over whenever one person quits
  78.  */
  79. if (game->hand_decision == NoMore)
  80.     return True ;
  81. /*
  82.  * The game is over whenever one person has reached the goal score
  83.  */
  84. for (i=0;  i <  N_PLAYERS;  i++)
  85.     if (game->player[i].score >= history->goal)
  86.     return True ;
  87.  
  88. return False ;
  89. }
  90.  
  91. void
  92. cleanup ()
  93. {
  94. /* Show the results */
  95. /* Sleep, quit */
  96. /*
  97. while (1) wait_for_player_events () ;
  98. */
  99. }
  100.  
  101. /* TODO : Shooting */
  102. /* TODO : further macroize computer strategy */
  103. /* TODO : ifdef'd Xaw,Xm version */
  104. /* TODO : overridable colors ? */
  105. /* TODO : randomize seat positions each hand (option) */
  106. /* TODO : option to conceal identity of opponents */
  107. /* TODO : history mechanism (record of every game) */
  108. /* TODO : "duplicate" */
  109. /* TODO : bitmaps */
  110.