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 / initialize.c < prev    next >
C/C++ Source or Header  |  1991-10-03  |  4KB  |  136 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 <stdio.h>
  29. #include <X11/Intrinsic.h>
  30. #include <X11/StringDefs.h>
  31. #include <X11/Xos.h>
  32. #include "hearts.h"
  33.  
  34. static String seat_names[] = { "south", "west", "north", "east" } ;
  35. static String suit_names[] = { "Spades", "Hearts", "Diamonds", "Clubs" } ;
  36. static String suit_symbols[] =
  37.     { "spade.xbm", "heart.xbm", "diamond.xbm", "club.xbm" } ;
  38. static String suit_characters[] = { "S", "H", "D", "C" } ;
  39. static String suit_ranks[] = { "2", "3", "4", "5", "6", "7", "8",
  40.                    "9", "T", "J", "Q",  "K", "A" } ;
  41.  
  42. void 
  43. initialize (argc, argv)
  44.     int argc ;
  45.     char **argv ;
  46. {
  47. int iseed ;
  48. int i, j, k ;
  49. int card_number ;
  50.  
  51. init_x_phase_1 (argc, argv) ;
  52.  
  53. snap->current_pass = InitialPass ;
  54. info->n_point_cards = HEART_POINT_CARDS + QUEEN_POINT_CARDS ;
  55.  
  56. #ifdef NRAND48
  57. if (game->seed)
  58.     {
  59.     sscanf (game->seed, "%u %u %u",
  60.         &history->xsubi[0], &history->xsubi[1], &history->xsubi[2]) ;
  61.     }
  62. else
  63.     {
  64.     struct timeval tp_, *tp = &tp_ ;
  65.     struct timezone tzp_, *tzp = &tzp_ ;
  66.     gettimeofday (tp, tzp) ;
  67.     history->xsubi[0] = (short) ((int)((tp->tv_sec & 0x0000ffff))) ;
  68.     history->xsubi[1] = (short) ((int)((tp->tv_sec & 0xffff0000)>>16)) ;
  69.     history->xsubi[2] = (short) ((int)(tp->tv_usec & 0x0000ffff)) ;
  70. #ifndef NO_LOGGING
  71. if (logerr) fprintf (logerr, "Seed: %u %u %u\n",
  72. history->xsubi[0], history->xsubi[1], history->xsubi[2]) ;
  73. #endif
  74.     }
  75. #else
  76. if (game->seed)
  77.     {
  78.     iseed = atoi(game->seed) ;
  79.     }
  80. else
  81.     {
  82.     struct timeval tp_, *tp = &tp_ ;
  83.     struct timezone tzp_, *tzp = &tzp_ ;
  84.     gettimeofday (tp, tzp) ;
  85.     iseed = tp->tv_sec ;
  86.     }
  87. srand (iseed) ;
  88. if (logerr) fprintf (logerr, "Seed: %d\n", iseed) ;
  89. fprintf (stderr, "Seed: %d\n", iseed) ;
  90. #endif NRAND48
  91.  
  92. if (history->jack_counts)
  93.     {
  94.     info->n_point_cards += JACK_POINT_CARDS ;
  95.     }
  96.  
  97. for (i=0;  i < N_PLAYERS;  i++)
  98.     {
  99.     int ccw = (N_PLAYERS - i) % N_PLAYERS ; /* 0, 3, 2, 1 */
  100.     int cw =  i ;                /* 0, 1, 2, 3 */
  101.     game->ccw[i] = ccw ;
  102.     game->cw[i] = cw ;
  103.     game->player[i].score = 0 ;
  104.     game->player[i].mode = NullMode ;
  105.     game->player[i].error_mode = NullClear ;
  106.     game->seat[i] = XtNewString (seat_names[i]) ;
  107.     }
  108.  
  109. for (card_number=0, i=0;  i < N_SUITS;  i++)
  110.     {
  111.     game->suit[i].symbol = XtNewString (suit_symbols[i]) ; 
  112.     game->suit[i].name = XtNewString (suit_names[i]) ; 
  113.     game->suit[i].character = XtNewString (suit_characters[i]) ; 
  114.     info->cards_per_suit[i] = CARDS_PER_SUIT ;
  115.     game->suit[i].rank = (Rank *)XtMalloc(info->cards_per_suit[i]*sizeof(Rank));
  116.     for (j=0;  j < N_PLAYERS;  j++)
  117.     {
  118.     for (k=0;  k < N_SUITS;  k++)
  119.         pvt_history[j].suit[k] = (int *) XtMalloc (info->cards_per_suit[i] *
  120.                             sizeof (int)) ;
  121.     }
  122.     for (j=0;  j < info->cards_per_suit[i];  j++, card_number++)
  123.     {
  124.     game->suit[i].rank[j].symbol = XtNewString (suit_ranks[j]) ; 
  125.     info->deck[card_number].suit = i ;
  126.     info->deck[card_number].rank = j ;
  127.     game->suit[i].rank[j].card = card_number ;
  128.     }
  129.     }
  130.  
  131. init_x_phase_2 () ;
  132.  
  133. return ;
  134. }
  135.  
  136.