[comp.sources.games] v11i098: reve - an othello game, Patch2b

billr@saab.CNA.TEK.COM (Bill Randle) (12/20/90)

Submitted-by: Rich Burridge <rburridge@sun.COM>
Posting-number: Volume 11, Issue 98
Archive-name: reve/Patch2b
Patch-To: reve: Volume 11, Issue 52-58
Environment: SunView, XView, X11R4, termcap



#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 2 (of 3)."
# Contents:  patches02b
# Wrapped by billr@saab on Wed Dec 19 16:32:29 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'patches02b' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'patches02b'\"
else
echo shar: Extracting \"'patches02b'\" \(46204 characters\)
sed "s/^X//" >'patches02b' <<'END_OF_FILE'
X------- main.c -------
X*** /tmp/da02127	Wed Nov 28 11:00:27 1990
X--- main.c	Wed Nov 28 10:40:26 1990
X***************
X*** 27,40 ****
X  #include "patchlevel.h"
X  #ifdef SYSV
X  #include <string.h>
X  #else
X  #include <strings.h>
X- #endif /*SYSV*/
X  #include <sys/time.h>
X  #ifdef X11
X  #include <X11/Xos.h>
X  #endif /*X11*/
X  
X  /* Text values for the cyclic buttons. */
X  char *diff_values[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9", NULL } ;
X  char *notes_values[] = { "off", "on", NULL } ;
X--- 27,49 ----
X  #include "patchlevel.h"
X  #ifdef SYSV
X  #include <string.h>
X+ #include <sys/times.h>
X  #else
X  #include <strings.h>
X  #include <sys/time.h>
X+ #endif /*SYSV*/
X+ 
X  #ifdef X11
X  #include <X11/Xos.h>
X  #endif /*X11*/
X  
X+ #ifdef NO_TIMEVAL
X+ struct timeval {
X+   long tv_sec ;         /* Seconds */
X+   long tv_usec ;        /* Microseconds */
X+ } ;
X+ #endif /*NO_TIMEVAL*/
X+ 
X  /* Text values for the cyclic buttons. */
X  char *diff_values[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9", NULL } ;
X  char *notes_values[] = { "off", "on", NULL } ;
X***************
X*** 50,55 ****
X--- 59,66 ----
X  int piece_x ;           /* Current X position of moving piece. */
X  int piece_y ;           /* Current Y position of moving piece */
X  
X+ int animation ;         /* If set, show computer move glide and piece drag. */
X+ int best_cmove ;        /* Best computer move so far. */
X  int bfont_height ;      /* Height in pixels for bold font. */
X  int but_inverted ;      /* Value of panel item inverted. */
X  int color ;             /* Current color value. */
X***************
X*** 56,61 ****
X--- 67,75 ----
X  int cur_ch ;            /* Current character pressed. */
X  int curx ;              /* Current mouse X position. */
X  int cury ;              /* Current mouse Y position. */
X+ int do_bestmove ;       /* If set, continuously update computers best move. */
X+ int do_last ;           /* If set, don't show last move. */
X+ int do_number ;         /* If set, the last stone placed is numbered. */
X  int down ;              /* Indicates is a mouse button is down. */
X  int first_move = 0 ;    /* Set if computer plays first move. */
X  int iconic ;            /* Set if window is currently iconic. */
X***************
X*** 68,73 ****
X--- 82,88 ----
X  int ix ;                /* Initial X position of the icon. */
X  int iy ;                /* Initial Y position of the icon. */
X  int last_move ;         /* Last valid computer move. */
X+ int last_outline ;      /* Position of last piece outline whilst dragging. */
X  int level ;             /* Current level of difficulty for computer moves. */
X  int loadgame = 0 ;      /* Set if there is a game file to load. */
X  int lsval = 0 ;         /* Set to 'l' or 's', if loading or saving. */
X***************
X*** 79,86 ****
X  int nfont_height ;      /* Height in pixels for normal font. */
X  int play_computer ;     /* Set if playing against the computer. */
X  int posspec ;           /* Set if -Wp or -g option is present (for X11) */
X  int saveres = 0 ;       /* If set, save computer results to log file. */
X! int show_moves = 0 ;    /* If set, all possible moves are being shown. */
X  int show_notes ;        /* If set, display notes value from play_reve. */
X  int suggestion = -1 ;   /* Positive if a suggested move. */
X  int suggest_x ;         /* X position of suggested move. */
X--- 94,102 ----
X  int nfont_height ;      /* Height in pixels for normal font. */
X  int play_computer ;     /* Set if playing against the computer. */
X  int posspec ;           /* Set if -Wp or -g option is present (for X11) */
X+ int quickgame ;         /* If set, don't flash turning stones. */
X  int saveres = 0 ;       /* If set, save computer results to log file. */
X! int show_moves ;        /* If set, all possible moves are being shown. */
X  int show_notes ;        /* If set, display notes value from play_reve. */
X  int suggestion = -1 ;   /* Positive if a suggested move. */
X  int suggest_x ;         /* X position of suggested move. */
X***************
X*** 134,140 ****
X               BWIDTH, BHEIGHT, "undo",     0, undo },
X  
X  { P_BUTTON,  BBORDER + (0*(BWIDTH+BGAP)), BBORDER + (1*(BHEIGHT+BGAP)),
X!              BWIDTH, BHEIGHT, "done",     0, done },
X  
X  { P_BUTTON,  -1,                          -1,   /* Not normally active. */
X               BWIDTH, BHEIGHT, "cancel",  0, remove_textfield },
X--- 150,156 ----
X               BWIDTH, BHEIGHT, "undo",     0, undo },
X  
X  { P_BUTTON,  BBORDER + (0*(BWIDTH+BGAP)), BBORDER + (1*(BHEIGHT+BGAP)),
X!              BWIDTH, BHEIGHT, "iconify",  0, done },
X  
X  { P_BUTTON,  -1,                          -1,   /* Not normally active. */
X               BWIDTH, BHEIGHT, "cancel",  0, remove_textfield },
X***************
X*** 157,169 ****
X  { P_MESSAGE, BBORDER + (0*(BWIDTH+BGAP)), BBORDER + (4*(BHEIGHT+BGAP)),
X               0, 0, "Use left mouse button to move", 0, NULL },
X  
X! { P_MESSAGE, BBORDER + (3*(BWIDTH+BGAP)), BBORDER + (4*(BHEIGHT+BGAP)),
X               0, 0, "",                                   0, NULL },
X  
X! { P_MESSAGE, BBORDER + (0*(BWIDTH+BGAP)), BBORDER + (5*(BHEIGHT+BGAP)),
X               0, 0, "White:  2, Black:  2",               0, NULL },
X  
X! { P_MESSAGE, BBORDER + (3*(BWIDTH+BGAP)), BBORDER + (5*(BHEIGHT+BGAP)),
X               0, 0, "",                                   0, NULL },
X  } ;
X  
X--- 173,185 ----
X  { P_MESSAGE, BBORDER + (0*(BWIDTH+BGAP)), BBORDER + (4*(BHEIGHT+BGAP)),
X               0, 0, "Use left mouse button to move", 0, NULL },
X  
X! { P_MESSAGE, BBORDER + (0*(BWIDTH+BGAP)), BBORDER + (5*(BHEIGHT+BGAP)),
X               0, 0, "",                                   0, NULL },
X  
X! { P_MESSAGE, BBORDER + (0*(BWIDTH+BGAP)), BBORDER + (6*(BHEIGHT+BGAP)),
X               0, 0, "White:  2, Black:  2",               0, NULL },
X  
X! { P_MESSAGE, BBORDER + (3*(BWIDTH+BGAP)), BBORDER + (6*(BHEIGHT+BGAP)),
X               0, 0, "",                                   0, NULL },
X  } ;
X  
X***************
X*** 248,258 ****
X        if (argv[0][0] == '-')
X          switch (argv[0][1])
X            {
X!             case 'b' : isblack = 1 ;
X!                        if (*(argv+1) != NULL && argv[1][0] != '-')
X                           {
X!                            INC ;
X!                            black_dpy = *argv ;
X                           }
X                         break ;
X              case 'c' : play_computer = 1 ;    /* Play against the computer. */
X--- 264,281 ----
X        if (argv[0][0] == '-')
X          switch (argv[0][1])
X            {
X!             case 'a' : /* Allow computer glide and piece dragging. */
X!                        if (EQUAL(argv[0], "-animate")) animation = TRUE ;
X!                        break ;
X!             case 'b' : if (EQUAL(argv[0], "-bestmove")) do_bestmove = TRUE ;
X!                        else if (EQUAL(argv[0], "-black"))
X                           {
X!                            isblack = 1 ;
X!                            if (*(argv+1) != NULL && argv[1][0] != '-')
X!                              {
X!                                INC ;
X!                                black_dpy = *argv ;
X!                              }
X                           }
X                         break ;
X              case 'c' : play_computer = 1 ;    /* Play against the computer. */
X***************
X*** 272,297 ****
X                         break ;
X              case 'i' : inv_video = 1 ;       /* Display in inverse video. */
X                         break ;
X!             case 'l' : INC ;                 /* Reve game file to load. */
X!                        getparam(gamefile, argv, "-l needs a game file") ;
X!                        loadgame = 1 ;        /* Game file to load. */
X                         break ;
X              case 'm' : monochrome = 1 ;      /* Force display to mono. */
X                         for (i = 0; i < MAXDPY; i++) iscolor[i] = 0 ;
X                         break ;
X!             case 'n' : show_notes = 1 ;      /* Display computer notes. */
X!                        items[(int) NOTES].value = 1 ;
X                         break ;
X              case 'r' : saveres = 1 ;       /* Save computer results to file. */
X                         break ;
X              case '?' :
X              case 'v' : usage() ;
X  
X!             case 'w' : iswhite = 1 ;
X!                        if (*(argv+1) != NULL && argv[1][0] != '-')
X                           {
X!                            INC ;
X!                            white_dpy = *argv ;
X                           }
X                         break ;
X  
X--- 295,333 ----
X                         break ;
X              case 'i' : inv_video = 1 ;       /* Display in inverse video. */
X                         break ;
X!             case 'l' :      if (EQUAL(argv[0], "-last")) do_last = TRUE ;
X!                        else if (EQUAL(argv[0], "-load"))
X!                          {
X!                            INC ;             /* Reve game file to load. */
X!                            getparam(gamefile, argv, "-l needs a game file") ;
X!                            loadgame = 1 ;        /* Game file to load. */
X!                          }
X                         break ;
X              case 'm' : monochrome = 1 ;      /* Force display to mono. */
X                         for (i = 0; i < MAXDPY; i++) iscolor[i] = 0 ;
X                         break ;
X!             case 'n' : if (EQUAL(argv[0], "-notes"))
X!                          {
X!                            show_notes = TRUE ;
X!                            items[(int) NOTES].value = 1 ;
X!                          }
X!                        else if (EQUAL(argv[0], "-number")) do_number = TRUE ;
X                         break ;
X+             case 'q' : if (EQUAL(argv[0], "-quick")) quickgame = TRUE ;
X+                        break ;
X              case 'r' : saveres = 1 ;       /* Save computer results to file. */
X                         break ;
X              case '?' :
X              case 'v' : usage() ;
X  
X!             case 'w' : if (EQUAL(argv[0], "-white"))
X                           {
X!                            iswhite = 1 ;
X!                            if (*(argv+1) != NULL && argv[1][0] != '-')
X!                              {
X!                                INC ;
X!                                white_dpy = *argv ;
X!                              }
X                           }
X                         break ;
X  
X***************
X*** 417,422 ****
X--- 453,459 ----
X      }
X    batch(IS_OFF) ;
X    show_last(last_move, IS_ON) ;
X+   show_number(last_move, IS_ON) ;
X    show_suggestion() ;
X    batch(IS_ON) ;
X    FOR_BOARD(i)
X***************
X*** 451,460 ****
X--- 488,505 ----
X    play_computer = 1 ;                 /* Default is human vs computer. */
X    iconic        = 0 ;                 /* Initially an open window. */
X    last_move     = -1 ;
X+   last_outline  = -1 ;
X    next_player   = BLACK ;
X+   animation     = FALSE ;
X+   best_cmove    = -1 ;
X    but_inverted  = -1 ;
X+   do_bestmove   = FALSE ;
X+   do_last       = FALSE ;
X+   do_number     = FALSE ;
X+   quickgame     = FALSE ;
X    validkey      = 0 ;
X    cmode         = BLACK_START ;
X+   show_moves    = FALSE ;
X    show_notes    = FALSE ;
X    isblack       = 0 ;
X    iswhite       = 0 ;
X***************
X*** 463,469 ****
X  
X    black_dpy = NULL ;              /* X11 black piece display information. */
X    white_dpy = NULL ;              /* X11 white piece display information. */
X!   STRCPY(geometry,  "") ;         /* X11 geometry information. */
X    STRCPY(edgefile, EDGENAME) ;
X  }
X  
X--- 508,515 ----
X  
X    black_dpy = NULL ;              /* X11 black piece display information. */
X    white_dpy = NULL ;              /* X11 white piece display information. */
X!   STRCPY(geometry[(int) DPY1], "") ;    /* X11 geometry information. */
X!   STRCPY(geometry[(int) DPY2], "") ;
X    STRCPY(edgefile, EDGENAME) ;
X  }
X  
X***************
X*** 590,598 ****
X  {
X    set_cursor(HOURGLASS) ;
X    move = TRUE ;            /* Make sure the computer clock is decremented. */
X    play_reve(board.square, player, level, &move, &note) ;
X    set_cursor(CANVASCUR) ;
X!   animate_move(move) ;
X    do_move(player) ;
X    last_move = move ;
X    cmode = (enum cantype) (OPPONENT(player) + 1) ;
X--- 636,648 ----
X  {
X    set_cursor(HOURGLASS) ;
X    move = TRUE ;            /* Make sure the computer clock is decremented. */
X+   best_cmove = -1 ;
X+   message(EVAL_MES, "") ;
X    play_reve(board.square, player, level, &move, &note) ;
X    set_cursor(CANVASCUR) ;
X!   if (animation == TRUE) animate_move(move) ;
X!   if (best_cmove != -1 && do_bestmove == TRUE)
X!     draw_square(best_cmove, IS_OFF, 2) ;
X    do_move(player) ;
X    last_move = move ;
X    cmode = (enum cantype) (OPPONENT(player) + 1) ;
X***************
X*** 603,612 ****
X  usage()
X  {
X    FPRINTF(stderr, "%s version 1.1.%1d\n\n", progname, PATCHLEVEL) ;
X!   FPRINTF(stderr, "Usage: %s: [-b [display] ] [-c]\n", progname) ;
X!   FPRINTF(stderr, "\t[-d difficulty] [-e edgefile] [-g geometry]\n") ;
X!   FPRINTF(stderr, "\t[-l gamefile] [-v] [-w [display] ] [-?] [-Wi]\n") ;
X!   FPRINTF(stderr, "\t[-Wp x y] [-WP x y]\n") ;
X  }
X  
X  
X--- 653,663 ----
X  usage()
X  {
X    FPRINTF(stderr, "%s version 1.1.%1d\n\n", progname, PATCHLEVEL) ;
X!   FPRINTF(stderr, "Usage: %s: [-animate] [-bestmove]\n", progname) ;
X!   FPRINTF(stderr, "\t[-black [display] ] [-c] [-d difficulty]\n") ;
X!   FPRINTF(stderr, "\t[-e edgefile] [-g geometry] [-last]\n") ;
X!   FPRINTF(stderr, "\t[-load gamefile] [-number] [-notes] [-v]\n") ;
X!   FPRINTF(stderr, "\t[-w [display] ] [-?] [-Wi] [-Wp x y] [-WP x y]\n") ;
X  }
X  
X  
X***************
X*** 614,624 ****
X--- 665,682 ----
X  usleep(x)        /* Suspend execution for interval in microseconds. */
X  unsigned x ;
X  {
X+ #ifdef NOSELECT
X+   unsigned seconds = x / 1000 ;
X+ 
X+   if (x > 0) sleep(x) ;
X+ #else
X+ 
X    struct timeval st_delay ;
X  
X    st_delay.tv_usec = x ;
X    st_delay.tv_sec = 0 ;
X    (void) select(32, NULL, NULL, NULL, &st_delay) ;
X+ #endif /*NOSELECT*/
X  }	
X  #endif /*NO_USLEEP*/
X  
X
X------- procs.c -------
X*** /tmp/da02133	Wed Nov 28 11:00:29 1990
X--- procs.c	Fri Nov 23 07:12:47 1990
X***************
X*** 41,57 ****
X  {
X    int cx, cy ;
X  
X    set_cursor(CANVASCUR) ;
X    if (state == LEFT_DOWN)
X      {
X!       draw_piece(next_player, piece_x, piece_y, RINV) ;
X        cmode = (enum cantype) ((int) cmode - 1) ;
X      }
X    else
X      {
X!       draw_piece(next_player, piece_x, piece_y, RINV) ;
X!       cx = (piece_x + PIECE_RAD - BBORDER) / CELL_SIZE ;
X!       cy = (piece_y + PIECE_RAD - CY - BBORDER) / CELL_SIZE ;
X        move = cy * BOARD_SIZE + cx ;
X        make_move() ;
X      }
X--- 41,62 ----
X  {
X    int cx, cy ;
X  
X+   cx = (piece_x + PIECE_RAD - BBORDER) / CELL_SIZE ;
X+   cy = (piece_y + PIECE_RAD - CY - BBORDER) / CELL_SIZE ;
X+ 
X    set_cursor(CANVASCUR) ;
X    if (state == LEFT_DOWN)
X      {
X!       draw_outline(cy * BOARD_SIZE + cx, IS_ON) ;
X!       if (animation == TRUE)
X!         draw_piece(next_player, piece_x, piece_y, RINV) ;
X        cmode = (enum cantype) ((int) cmode - 1) ;
X      }
X    else
X      {
X!       if (animation == TRUE)
X!         draw_piece(next_player, piece_x, piece_y, RINV) ;
X!       draw_outline(last_outline, IS_OFF) ;
X        move = cy * BOARD_SIZE + cx ;
X        make_move() ;
X      }
X***************
X*** 171,177 ****
X                         break ;
X        case DECREMENT : if (--item_value == -1)
X                           {
X!                            while (choices[++item_value] != NULL) ;
X                             item_value-- ;
X                             items[(int) item].value = item_value ;
X                           }
X--- 176,182 ----
X                         break ;
X        case DECREMENT : if (--item_value == -1)
X                           {
X!                            while (choices[++item_value] != NULL) continue ;
X                             item_value-- ;
X                             items[(int) item].value = item_value ;
X                           }
X***************
X*** 218,223 ****
X--- 223,229 ----
X              suggest_x+5, CY+suggest_y+5, RSRC, C_BLACK) ;
X    draw_line(suggest_x-5, CY+suggest_y+5,
X              suggest_x+5, CY+suggest_y-5, RSRC, C_BLACK) ;
X+   if (show_notes) set_eval(player, suggestion, note) ;
X  }
X  
X  
X***************
X*** 254,260 ****
X    if (n >= 3)
X      {
X        show_last(last_move, IS_OFF) ;
X!       FOR_BOARD(i) board.square[i] = moves[n].square[i] ;
X        board.moves_left = moves[n].moves_left ;
X        board.player     = moves[n].player ;
X        board.move       = moves[n].move ;
X--- 260,278 ----
X    if (n >= 3)
X      {
X        show_last(last_move, IS_OFF) ;
X!       show_number(last_move, IS_OFF) ;
X!       FOR_BOARD(i)
X!         {
X!           if (moves[n].square[i] != board.square[i])
X!             {
X!               get_xy(i, &x, &y) ;
X!               if (moves[n].square[i] == FREE)
X!                 color_area(x, CY+y, PSIZE, PSIZE,
X!                            (iscolor[(int) cur_dpyno]) ? C_LBROWN : C_WHITE) ;
X!               else draw_piece(moves[n].square[i], x, CY+y, RSRC) ;
X!             }
X!           board.square[i] = moves[n].square[i] ;
X!         }
X        board.moves_left = moves[n].moves_left ;
X        board.player     = moves[n].player ;
X        board.move       = moves[n].move ;
X***************
X*** 276,290 ****
X        else                           cmode = WHITE_START ;
X        message(PANEL_MES, "") ;
X  
X!       FOR_BOARD(i)
X          {
X!           get_xy(i, &x, &y) ;
X!           if (board.square[i] == FREE)
X!             color_area(x, CY+y, PSIZE, PSIZE,
X!                        (iscolor[(int) cur_dpyno]) ? C_LBROWN : C_WHITE) ;
X!           else draw_piece(board.square[i], x, CY+y, RSRC) ;
X          }
X!       if (n > 3) show_last(last_move, IS_ON) ;
X        next_player = OPPONENT(board.player) ;
X      }
X    else message(PANEL_MES, "No moves to undo.") ;
X--- 294,306 ----
X        else                           cmode = WHITE_START ;
X        message(PANEL_MES, "") ;
X  
X!       if (n > 3)
X          {
X!           show_last(last_move, IS_ON) ;
X!           show_number(last_move, IS_ON) ;
X!           if (show_notes) set_eval(board.player, board.move, board.note) ;
X          }
X!       else message(EVAL_MES, "") ;
X        next_player = OPPONENT(board.player) ;
X      }
X    else message(PANEL_MES, "No moves to undo.") ;
X
X------- rev_eval.c -------
X*** /tmp/da02136	Wed Nov 28 11:00:29 1990
X--- rev_eval.c	Tue Nov 20 10:31:35 1990
X***************
X*** 36,42 ****
X   *     - Potential Mobility, looking at squares contacts
X   *  And then Eval = c1 * ES + c2 * ( CM + cx * XV ) + c3 * PM
X   *  Eval is replaced by - Eval if Black is replaced by White. Eval is positive
X!  *  if macouleur ( my color ) has a good position and negatif if tacouleur
X   *  position is good.
X   *  If we are "near" the end of the game, then Eval is equal to final disc
X   *  differential.
X--- 36,42 ----
X   *     - Potential Mobility, looking at squares contacts
X   *  And then Eval = c1 * ES + c2 * ( CM + cx * XV ) + c3 * PM
X   *  Eval is replaced by - Eval if Black is replaced by White. Eval is positive
X!  *  if macouleur ( my color ) has a good position and negative if tacouleur
X   *  position is good.
X   *  If we are "near" the end of the game, then Eval is equal to final disc
X   *  differential.
X***************
X*** 83,88 ****
X--- 83,94 ----
X          }
X        note = edges[i] ;
X  
X+       if (((i == 2191) && (d[13] == macouleur)) ||
X+           ((i == 2917) && (d[10] == macouleur)) ||
X+           ((i == 3643) && (d[10] == tacouleur)) ||
X+           ((i == 4369) && (d[13] == tacouleur)))
X+         note -= edges[i] ;
X+ 
X        i = 0 ;
X        for (p = &d[56]; p < &d[64]; p++)
X          {
X***************
X*** 92,97 ****
X--- 98,109 ----
X          }
X        note += edges[i] ;
X  
X+       if (((i == 2191) && (d[53] == macouleur)) ||
X+           ((i == 2917) && (d[50] == macouleur)) ||
X+           ((i == 3643) && (d[50] == tacouleur)) ||
X+           ((i == 4369) && (d[53] == tacouleur)))
X+         note -= edges[i] ;
X+ 
X        i = 0 ;
X        for (p = &d[0]; p < &d[64]; p += 8)
X          {
X***************
X*** 101,106 ****
X--- 113,124 ----
X          }
X        note += edges[i] ;
X  
X+       if (((i == 2191) && (d[41] == macouleur)) ||
X+           ((i == 2917) && (d[17] == macouleur)) ||
X+           ((i == 3643) && (d[17] == tacouleur)) ||
X+           ((i == 4369) && (d[41] == tacouleur)))
X+         note -= edges[i] ;
X+ 
X        i = 0 ;
X        for (p = &d[7]; p < &d[64]; p += 8)
X          {
X***************
X*** 109,114 ****
X--- 127,138 ----
X            else if (*p == macouleur) i += 2 ;
X          }
X        note += edges[i] ;
X+ 
X+       if (((i == 2191) && (d[46] == macouleur)) ||
X+           ((i == 2917) && (d[22] == macouleur)) ||
X+           ((i == 3643) && (d[22] == tacouleur)) ||
X+           ((i == 4369) && (d[46] == tacouleur)))
X+         note -= edges[i] ;
X  
X        cx = 8 * (50 - mnb - profmax) ;
X  
X
X------- rev_ip.c -------
X*** /tmp/da02139	Wed Nov 28 11:00:30 1990
X--- rev_ip.c	Fri Nov 23 23:17:29 1990
X***************
X*** 23,29 ****
X--- 23,34 ----
X  #include <signal.h>
X  #include <setjmp.h>
X  #include <sys/types.h>
X+ #ifdef SYSV
X+ #include <sys/times.h>
X+ #else
X  #include <sys/time.h>
X+ #endif /*SYSV*/
X+ 
X  #include "reve.h"
X  
X  extern int saveres ;
X***************
X*** 166,172 ****
X  
X    if (((k == 1) && (mnb < 52)) || (mnb == 1))
X      {
X!       for (cp = 0; d0[cpk[cp]] != JPJ; cp++) ;
X        cpi[0] = cpi[cp] ;
X        cpj[0] = cpj[cp] ;
X        cpk[0] = cpk[cp] ;
X--- 171,177 ----
X  
X    if (((k == 1) && (mnb < 52)) || (mnb == 1))
X      {
X!       for (cp = 0; d0[cpk[cp]] != JPJ; cp++) continue ;
X        cpi[0] = cpi[cp] ;
X        cpj[0] = cpj[cp] ;
X        cpk[0] = cpk[cp] ;
X***************
X*** 219,229 ****
X        allotime = timeleft * 3 / (61 - mnb) ;
X        firsttime = time((time_t *) NULL) ;
X  
X!       signal(SIGALRM, catcher) ;
X  
X        if (setjmp(jumper) != 0)
X          {
X!           if (cpmax == 0) note = oldnote ;
X            profmax = -profmax ;
X            goto trap ;
X          }
X--- 224,236 ----
X        allotime = timeleft * 3 / (61 - mnb) ;
X        firsttime = time((time_t *) NULL) ;
X  
X!       cpmaxi[0] = cpmaxi[1] = cpmaxi[2] = cpmaxi[3] = 0 ;
X  
X+       SIGNAL(SIGALRM, catcher) ;
X+ 
X        if (setjmp(jumper) != 0)
X          {
X!           if (note == -1000000000) note = oldnote ;
X            profmax = -profmax ;
X            goto trap ;
X          }
X***************
X*** 233,239 ****
X            oldnote = note ;
X            note = -1000000000 ;
X  
X!           if ((int) (allotime - timeused) > 2) alarm(allotime - timeused) ;
X  
X            c1 = 312 + 6 * (mnb + profmax) ;
X            if (mnb + profmax < 25)
X--- 240,247 ----
X            oldnote = note ;
X            note = -1000000000 ;
X  
X!           if ((int) (allotime - timeused) > 2)
X!             ALARM((unsigned) (allotime - timeused)) ;
X  
X            c1 = 312 + 6 * (mnb + profmax) ;
X            if (mnb + profmax < 25)
X***************
X*** 247,254 ****
X            if (profmax > 53 - mnb)
X              {
X                profmax = 61 - mnb ;
X!               allotime = timeleft * 3 / 5 ;
X!               if ((int) (allotime - timeused) > 2) alarm(allotime - timeused) ;
X              }
X  
X            for (cp = 0; cp <= 60 - mnb; cp++)
X--- 255,263 ----
X            if (profmax > 53 - mnb)
X              {
X                profmax = 61 - mnb ;
X!               allotime = timeleft * 2 / 3 ;
X!               if ((int) (allotime - timeused) > 2)
X!                 ALARM((unsigned) (allotime - timeused)) ;
X              }
X  
X            for (cp = 0; cp <= 60 - mnb; cp++)
X***************
X*** 267,283 ****
X                      {
X                        note = lnote ;
X                        cpmax = cp ;
X                      }
X                  }
X              }
X  
X!           alarm(0) ;
X            cpmaxi[0] = cpmax ;
X  
X            if ((mnb < 57) && (cpmaxi[0] != cpmaxi[1])
X                && (cpmaxi[1] != cpmaxi[2]) && (cpmaxi[0] != cpmaxi[2]))
X              {
X-               if (cpmax == 0) count++ ; else count = 1 ;
X                for (cp = 0; cp <= 60 - mnb; cp++) cpf[cp] = TRUE ;
X                for (k = 0; k < 3; k++)
X                  {
X--- 276,294 ----
X                      {
X                        note = lnote ;
X                        cpmax = cp ;
X+                       show_best(cpk[cpmax], lnote) ;
X                      }
X                  }
X              }
X  
X!           ALARM(0) ;
X            cpmaxi[0] = cpmax ;
X+           if (cpmax == 0) count += 2 ;
X+           else            count = 1 ;
X  
X            if ((mnb < 57) && (cpmaxi[0] != cpmaxi[1])
X                && (cpmaxi[1] != cpmaxi[2]) && (cpmaxi[0] != cpmaxi[2]))
X              {
X                for (cp = 0; cp <= 60 - mnb; cp++) cpf[cp] = TRUE ;
X                for (k = 0; k < 3; k++)
X                  {
X***************
X*** 318,324 ****
X            timeused = time((time_t *) NULL) - firsttime ;
X            if ((mnb == 4) && (profmax == 3)) break ;
X          }
X!       while ((timeused * count < allotime * 5 / 4) && (profmax != 61 - mnb)) ;
X  trap:
X        timeused = time((time_t *) NULL) - firsttime ;
X        if (timeused == 0) timeused = 1 ;
X--- 329,335 ----
X            timeused = time((time_t *) NULL) - firsttime ;
X            if ((mnb == 4) && (profmax == 3)) break ;
X          }
X!       while ((timeused * count < allotime * 4 / 5) && (profmax != 61 - mnb)) ;
X  trap:
X        timeused = time((time_t *) NULL) - firsttime ;
X        if (timeused == 0) timeused = 1 ;
X***************
X*** 354,361 ****
X  long alpha, beta ;
X  {
X    register int *d0, *d1 ;
X!   register int k, cp, cpmax ;
X    register long lnote, note ;
X  
X    d0 = damier[niv] ;
X    d1 = damier[niv + 1] ;
X--- 365,373 ----
X  long alpha, beta ;
X  {
X    register int *d0, *d1 ;
X!   register int k, cp ;
X    register long lnote, note ;
X+   register int cpmax = 0 ;
X  
X    d0 = damier[niv] ;
X    d1 = damier[niv + 1] ;
X***************
X*** 402,409 ****
X  long alpha, beta ;
X  {
X    register int *d0, *d1 ;
X!   register int k, cp, cpmax ;
X    register long lnote, note ;
X  
X    d0 = damier[niv] ;
X    d1 = damier[niv + 1] ;
X--- 414,422 ----
X  long alpha, beta ;
X  {
X    register int *d0, *d1 ;
X!   register int k, cp ;
X    register long lnote, note ;
X+   register int cpmax = 0 ;
X  
X    d0 = damier[niv] ;
X    d1 = damier[niv + 1] ;
X
X------- rev_iycp.c -------
X*** /tmp/da02142	Wed Nov 28 11:00:31 1990
X--- rev_iycp.c	Tue Nov 20 10:53:09 1990
X***************
X*** 60,66 ****
X  
X                for (x = posx + 1;
X                     (x < 7) && (d[(x << 3) + posy] == tacouleur);
X!                    x++) ;
X                if ((x != posx + 1) && (d[(x << 3) + posy] == macouleur))
X                  {
X                    flag = TRUE ;
X--- 60,66 ----
X  
X                for (x = posx + 1;
X                     (x < 7) && (d[(x << 3) + posy] == tacouleur);
X!                    x++) continue ;
X                if ((x != posx + 1) && (d[(x << 3) + posy] == macouleur))
X                  {
X                    flag = TRUE ;
X***************
X*** 71,77 ****
X  
X                for (x = posx - 1;
X                     (x > 0) && (d[(x << 3) + posy] == tacouleur);
X!                    x--) ;
X                if ((x != posx - 1) && (d[(x << 3) + posy] == macouleur))
X                  {
X                    flag = TRUE ;
X--- 71,77 ----
X  
X                for (x = posx - 1;
X                     (x > 0) && (d[(x << 3) + posy] == tacouleur);
X!                    x--) continue ;
X                if ((x != posx - 1) && (d[(x << 3) + posy] == macouleur))
X                  {
X                    flag = TRUE ;
X***************
X*** 82,88 ****
X  
X                for (y = posy + 1;
X                     (y < 7) && (d[pos8x + y] == tacouleur);
X!                    y++) ;
X                if ((y != posy + 1) && (d[pos8x + y] == macouleur))
X                  {
X                    flag = TRUE ;
X--- 82,88 ----
X  
X                for (y = posy + 1;
X                     (y < 7) && (d[pos8x + y] == tacouleur);
X!                    y++) continue ;
X                if ((y != posy + 1) && (d[pos8x + y] == macouleur))
X                  {
X                    flag = TRUE ;
X***************
X*** 93,99 ****
X  
X                for (y = posy - 1;
X                     (y > 0) && (d[pos8x + y] == tacouleur);
X!                    y--) ;
X                if ((y != posy - 1) && (d[pos8x + y] == macouleur))
X                  {
X                    flag = TRUE ;
X--- 93,99 ----
X  
X                for (y = posy - 1;
X                     (y > 0) && (d[pos8x + y] == tacouleur);
X!                    y--) continue ;
X                if ((y != posy - 1) && (d[pos8x + y] == macouleur))
X                  {
X                    flag = TRUE ;
X***************
X*** 104,110 ****
X  
X                for (x = posx + 1,  y = posy + 1; 
X                     (x < 7) && (y < 7) && (d[(x << 3) + y] == tacouleur);
X!                    x++, y++) ;
X                if ((x != posx + 1) && (d[(x << 3) + y] == macouleur))
X                  {
X                    flag = TRUE ;
X--- 104,110 ----
X  
X                for (x = posx + 1,  y = posy + 1; 
X                     (x < 7) && (y < 7) && (d[(x << 3) + y] == tacouleur);
X!                    x++, y++) continue ;
X                if ((x != posx + 1) && (d[(x << 3) + y] == macouleur))
X                  {
X                    flag = TRUE ;
X***************
X*** 115,121 ****
X  
X                for (x = posx - 1,  y = posy + 1; 
X                     (x > 0) && (y < 7) && (d[(x << 3) + y] == tacouleur);
X!                    x--, y++) ;
X                if ((x != posx - 1) && (d[(x << 3) + y] == macouleur))
X                  {
X                    flag = TRUE ;
X--- 115,121 ----
X  
X                for (x = posx - 1,  y = posy + 1; 
X                     (x > 0) && (y < 7) && (d[(x << 3) + y] == tacouleur);
X!                    x--, y++) continue ;
X                if ((x != posx - 1) && (d[(x << 3) + y] == macouleur))
X                  {
X                    flag = TRUE ;
X***************
X*** 126,132 ****
X  
X                for (x = posx + 1,  y = posy - 1; 
X                     (x < 7) && (y > 0) && (d[(x << 3) + y] == tacouleur);
X!                    x++, y--) ;
X                if ((x != posx + 1) && (d[(x << 3) + y] == macouleur))
X                  {
X                    flag = TRUE ;
X--- 126,132 ----
X  
X                for (x = posx + 1,  y = posy - 1; 
X                     (x < 7) && (y > 0) && (d[(x << 3) + y] == tacouleur);
X!                    x++, y--) continue ;
X                if ((x != posx + 1) && (d[(x << 3) + y] == macouleur))
X                  {
X                    flag = TRUE ;
X***************
X*** 137,143 ****
X  
X                for (x = posx - 1,  y = posy - 1; 
X                     (x > 0) && (y > 0) && (d[(x << 3) + y] == tacouleur);
X!                    x--, y--) ;
X                if ((x != posx - 1) && (d[(x << 3) + y] == macouleur))
X                  {
X                    flag = TRUE ;
X--- 137,143 ----
X  
X                for (x = posx - 1,  y = posy - 1; 
X                     (x > 0) && (y > 0) && (d[(x << 3) + y] == tacouleur);
X!                    x--, y--) continue ;
X                if ((x != posx - 1) && (d[(x << 3) + y] == macouleur))
X                  {
X                    flag = TRUE ;
X***************
X*** 152,165 ****
X  }
X  
X  
X! jejoueen(px, py, niv)
X! int px, py, niv ;
X  {
X    register int *d ;
X!   register int x, y, posx, posy, pos8x ;
X  
X-   posx = px ;
X-   posy = py ;
X    pos8x = posx << 3 ;
X  
X    d = damier[niv] ;
X--- 152,163 ----
X  }
X  
X  
X! jejoueen(posx, posy, niv)
X! int posx, posy, niv ;
X  {
X    register int *d ;
X!   register int x, y, pos8x ;
X  
X    pos8x = posx << 3 ;
X  
X    d = damier[niv] ;
X***************
X*** 166,172 ****
X  
X    d[pos8x + posy] = macouleur ;
X  
X!   for (x = posx + 1; (x < 7) && (d[(x << 3) + posy] == tacouleur); x++) ;
X    if ((x != posx + 1) && (d[(x << 3) + posy] == macouleur))
X      {
X        for (x = posx + 1; d[(x << 3) + posy] == tacouleur; x++)
X--- 164,171 ----
X  
X    d[pos8x + posy] = macouleur ;
X  
X!   for (x = posx + 1;
X!        (x < 7) && (d[(x << 3) + posy] == tacouleur); x++) continue ;
X    if ((x != posx + 1) && (d[(x << 3) + posy] == macouleur))
X      {
X        for (x = posx + 1; d[(x << 3) + posy] == tacouleur; x++)
X***************
X*** 173,179 ****
X          d[(x << 3) + posy] = macouleur ;
X      }
X  
X!   for (x = posx - 1; (x > 0) && (d[(x << 3) + posy] == tacouleur); x--) ;
X    if ((x != posx - 1) && (d[(x << 3) + posy] == macouleur))
X      {
X        for (x = posx - 1; d[(x << 3) + posy] == tacouleur; x--)
X--- 172,179 ----
X          d[(x << 3) + posy] = macouleur ;
X      }
X  
X!   for (x = posx - 1;
X!        (x > 0) && (d[(x << 3) + posy] == tacouleur); x--) continue ;
X    if ((x != posx - 1) && (d[(x << 3) + posy] == macouleur))
X      {
X        for (x = posx - 1; d[(x << 3) + posy] == tacouleur; x--)
X***************
X*** 180,186 ****
X          d[(x << 3) + posy] = macouleur ;
X      }
X  
X!   for (y = posy + 1; (y < 7) && (d[pos8x + y] == tacouleur); y++) ;
X    if ((y != posy + 1) && (d[pos8x + y] == macouleur))
X      {
X        for (y = posy + 1; d[pos8x + y] == tacouleur; y++)
X--- 180,187 ----
X          d[(x << 3) + posy] = macouleur ;
X      }
X  
X!   for (y = posy + 1;
X!        (y < 7) && (d[pos8x + y] == tacouleur); y++) continue ;
X    if ((y != posy + 1) && (d[pos8x + y] == macouleur))
X      {
X        for (y = posy + 1; d[pos8x + y] == tacouleur; y++)
X***************
X*** 187,193 ****
X          d[pos8x + y] = macouleur ;
X      }
X  
X!   for (y = posy - 1; (y > 0) && (d[pos8x + y] == tacouleur); y--) ;
X    if ((y != posy - 1) && (d[pos8x + y] == macouleur))
X      {
X        for (y = posy - 1; d[pos8x + y] == tacouleur; y--)
X--- 188,195 ----
X          d[pos8x + y] = macouleur ;
X      }
X  
X!   for (y = posy - 1;
X!        (y > 0) && (d[pos8x + y] == tacouleur); y--) continue ;
X    if ((y != posy - 1) && (d[pos8x + y] == macouleur))
X      {
X        for (y = posy - 1; d[pos8x + y] == tacouleur; y--)
X***************
X*** 195,201 ****
X      }
X  
X    for (x = posx + 1, y = posy + 1;
X!        (x < 7) && (y < 7) && (d[(x << 3) + y] == tacouleur); x++, y++) ;
X    if ((x != posx + 1) && (d[(x << 3) + y] == macouleur))
X      {
X        for (x = posx + 1, y = posy + 1; d[(x << 3) + y] == tacouleur; x++, y++)
X--- 197,204 ----
X      }
X  
X    for (x = posx + 1, y = posy + 1;
X!        (x < 7) && (y < 7) && (d[(x << 3) + y] == tacouleur);
X!        x++, y++) continue ;
X    if ((x != posx + 1) && (d[(x << 3) + y] == macouleur))
X      {
X        for (x = posx + 1, y = posy + 1; d[(x << 3) + y] == tacouleur; x++, y++)
X***************
X*** 203,209 ****
X      }
X  
X    for (x = posx - 1, y = posy + 1;
X!        (x > 0) && (y < 7) && (d[(x << 3) + y] == tacouleur); x--, y++) ;
X    if ((x != posx - 1) && (d[(x << 3) + y] == macouleur))
X      {
X        for (x = posx - 1, y = posy + 1; d[(x << 3) + y] == tacouleur; x--, y++)
X--- 206,213 ----
X      }
X  
X    for (x = posx - 1, y = posy + 1;
X!        (x > 0) && (y < 7) && (d[(x << 3) + y] == tacouleur);
X!        x--, y++) continue ;
X    if ((x != posx - 1) && (d[(x << 3) + y] == macouleur))
X      {
X        for (x = posx - 1, y = posy + 1; d[(x << 3) + y] == tacouleur; x--, y++)
X***************
X*** 211,217 ****
X      }
X  
X    for (x = posx + 1, y = posy - 1;
X!        (x < 7) && (y > 0) && (d[(x << 3) + y] == tacouleur); x++, y--) ;
X    if ((x != posx + 1) && (d[(x << 3) + y] == macouleur))
X      {
X        for (x = posx + 1, y = posy - 1; d[(x << 3) + y] == tacouleur; x++, y--)
X--- 215,222 ----
X      }
X  
X    for (x = posx + 1, y = posy - 1;
X!        (x < 7) && (y > 0) && (d[(x << 3) + y] == tacouleur);
X!        x++, y--) continue ;
X    if ((x != posx + 1) && (d[(x << 3) + y] == macouleur))
X      {
X        for (x = posx + 1, y = posy - 1; d[(x << 3) + y] == tacouleur; x++, y--)
X***************
X*** 219,225 ****
X      }
X  
X    for (x = posx - 1, y = posy - 1;
X!        (x > 0) && (y > 0) && (d[(x << 3) + y] == tacouleur); x--, y--) ;
X    if ((x != posx - 1) && (d[(x << 3) + y] == macouleur))
X      {
X        for (x = posx - 1, y = posy - 1; d[(x << 3) + y] == tacouleur; x--, y--)
X--- 224,231 ----
X      }
X  
X    for (x = posx - 1, y = posy - 1;
X!        (x > 0) && (y > 0) && (d[(x << 3) + y] == tacouleur);
X!        x--, y--) continue ;
X    if ((x != posx - 1) && (d[(x << 3) + y] == macouleur))
X      {
X        for (x = posx - 1, y = posy - 1; d[(x << 3) + y] == tacouleur; x--, y--)
X***************
X*** 249,255 ****
X              {
X                for (x = posx + 1;
X                     (x < 7) && (d[(x << 3) + posy] == macouleur);
X!                    x++) ;
X                if ((x != posx + 1) && (d[(x << 3) + posy] == tacouleur))
X                  {
X                    flag = TRUE ;
X--- 255,261 ----
X              {
X                for (x = posx + 1;
X                     (x < 7) && (d[(x << 3) + posy] == macouleur);
X!                    x++) continue ;
X                if ((x != posx + 1) && (d[(x << 3) + posy] == tacouleur))
X                  {
X                    flag = TRUE ;
X***************
X*** 260,266 ****
X  
X                for (x = posx - 1;
X                     (x > 0) && (d[(x << 3) + posy] == macouleur) ;
X!                    x--) ;
X                if ((x != posx - 1) && (d[(x << 3) + posy] == tacouleur))
X                  {
X                    flag = TRUE ;
X--- 266,272 ----
X  
X                for (x = posx - 1;
X                     (x > 0) && (d[(x << 3) + posy] == macouleur) ;
X!                    x--) continue ;
X                if ((x != posx - 1) && (d[(x << 3) + posy] == tacouleur))
X                  {
X                    flag = TRUE ;
X***************
X*** 271,277 ****
X  
X                for (y = posy + 1;
X                     (y < 7) && (d[pos8x + y] == macouleur);
X!                    y++) ;
X                if ((y != posy + 1) && (d[pos8x + y] == tacouleur))
X                  {
X                    flag = TRUE ;
X--- 277,283 ----
X  
X                for (y = posy + 1;
X                     (y < 7) && (d[pos8x + y] == macouleur);
X!                    y++) continue ;
X                if ((y != posy + 1) && (d[pos8x + y] == tacouleur))
X                  {
X                    flag = TRUE ;
X***************
X*** 282,288 ****
X  
X                for (y = posy - 1;
X                     (y > 0) && (d[pos8x + y] == macouleur);
X!                    y--) ;
X                if ((y != posy - 1) && (d[pos8x + y] == tacouleur))
X                  {
X                    flag = TRUE ;
X--- 288,294 ----
X  
X                for (y = posy - 1;
X                     (y > 0) && (d[pos8x + y] == macouleur);
X!                    y--) continue ;
X                if ((y != posy - 1) && (d[pos8x + y] == tacouleur))
X                  {
X                    flag = TRUE ;
X***************
X*** 293,299 ****
X  
X                for (x = posx + 1,  y = posy + 1; 
X                     (x < 7) && (y < 7) && (d[(x << 3) + y] == macouleur);
X!                    x++, y++);
X                if ((x != posx + 1) && (d[(x << 3) + y] == tacouleur))
X                  {
X                    flag = TRUE ;
X--- 299,305 ----
X  
X                for (x = posx + 1,  y = posy + 1; 
X                     (x < 7) && (y < 7) && (d[(x << 3) + y] == macouleur);
X!                    x++, y++) continue ;
X                if ((x != posx + 1) && (d[(x << 3) + y] == tacouleur))
X                  {
X                    flag = TRUE ;
X***************
X*** 304,310 ****
X  
X                for (x = posx - 1,  y = posy + 1; 
X                     (x > 0) && (y < 7) && (d[(x << 3) + y] == macouleur);
X!                    x--, y++) ;
X                if ((x != posx - 1) && (d[(x << 3) + y] == tacouleur))
X                  {
X                    flag = TRUE ;
X--- 310,316 ----
X  
X                for (x = posx - 1,  y = posy + 1; 
X                     (x > 0) && (y < 7) && (d[(x << 3) + y] == macouleur);
X!                    x--, y++) continue ;
X                if ((x != posx - 1) && (d[(x << 3) + y] == tacouleur))
X                  {
X                    flag = TRUE ;
X***************
X*** 315,321 ****
X  
X                for (x = posx + 1,  y = posy - 1; 
X                     (x < 7) && (y > 0) && (d[(x << 3) + y] == macouleur);
X!                    x++, y--) ;
X                if ((x != posx + 1) && (d[(x << 3) + y] == tacouleur))
X                  {
X                    flag = TRUE ;
X--- 321,327 ----
X  
X                for (x = posx + 1,  y = posy - 1; 
X                     (x < 7) && (y > 0) && (d[(x << 3) + y] == macouleur);
X!                    x++, y--) continue ;
X                if ((x != posx + 1) && (d[(x << 3) + y] == tacouleur))
X                  {
X                    flag = TRUE ;
X***************
X*** 326,332 ****
X  
X                for (x = posx - 1,  y = posy - 1; 
X                     (x > 0) && (y > 0) && (d[(x << 3) + y] == macouleur) ;
X!                    x--, y-- ) ;
X                if ((x != posx - 1) && (d[(x << 3) + y] == tacouleur))
X                  {
X                    flag = TRUE ;
X--- 332,338 ----
X  
X                for (x = posx - 1,  y = posy - 1; 
X                     (x > 0) && (y > 0) && (d[(x << 3) + y] == macouleur) ;
X!                    x--, y-- ) continue ;
X                if ((x != posx - 1) && (d[(x << 3) + y] == tacouleur))
X                  {
X                    flag = TRUE ;
X***************
X*** 341,360 ****
X  }
X  
X  
X! tujouesen(px, py, niv)
X! int px, py, niv ;
X  {
X    register int *d ;
X!   register int x, y, posx, posy, pos8x ;
X  
X-   posx = px ;
X-   posy = py ;
X- 
X    pos8x = posx << 3 ;
X    d = damier[niv] ;
X    d[pos8x + posy] = tacouleur ;
X  
X!   for (x = posx + 1; (x < 7) && (d[(x << 3) + posy] == macouleur); x++) ;
X    if ((x != posx + 1) && (d[(x << 3) + posy] == tacouleur))
X      {
X        for (x = posx + 1; d[(x << 3) + posy] == macouleur; x++)
X--- 347,364 ----
X  }
X  
X  
X! tujouesen(posx, posy, niv)
X! int posx, posy, niv ;
X  {
X    register int *d ;
X!   register int x, y, pos8x ;
X  
X    pos8x = posx << 3 ;
X    d = damier[niv] ;
X    d[pos8x + posy] = tacouleur ;
X  
X!   for (x = posx + 1;
X!        (x < 7) && (d[(x << 3) + posy] == macouleur); x++) continue ;
X    if ((x != posx + 1) && (d[(x << 3) + posy] == tacouleur))
X      {
X        for (x = posx + 1; d[(x << 3) + posy] == macouleur; x++)
X***************
X*** 361,367 ****
X          d[(x << 3) + posy] = tacouleur ;
X      }
X  
X!   for (x = posx - 1; (x > 0) && (d[(x << 3) + posy] == macouleur); x--) ;
X    if ((x != posx - 1) && (d[(x << 3) + posy] == tacouleur))
X      {
X        for (x = posx - 1; d[(x << 3) + posy] == macouleur; x--)
X--- 365,372 ----
X          d[(x << 3) + posy] = tacouleur ;
X      }
X  
X!   for (x = posx - 1;
X!        (x > 0) && (d[(x << 3) + posy] == macouleur); x--) continue ;
X    if ((x != posx - 1) && (d[(x << 3) + posy] == tacouleur))
X      {
X        for (x = posx - 1; d[(x << 3) + posy] == macouleur; x--)
X***************
X*** 368,374 ****
X          d[(x << 3) + posy] = tacouleur ;
X      }
X  
X!   for (y = posy + 1; (y < 7) && (d[pos8x + y] == macouleur); y++) ;
X    if ((y != posy + 1) && (d[pos8x + y] == tacouleur))
X      {
X        for (y = posy + 1; d[pos8x + y] == macouleur; y++)
X--- 373,380 ----
X          d[(x << 3) + posy] = tacouleur ;
X      }
X  
X!   for (y = posy + 1;
X!        (y < 7) && (d[pos8x + y] == macouleur); y++) continue ;
X    if ((y != posy + 1) && (d[pos8x + y] == tacouleur))
X      {
X        for (y = posy + 1; d[pos8x + y] == macouleur; y++)
X***************
X*** 375,381 ****
X          d[pos8x + y] = tacouleur ;
X      }
X  
X!   for (y = posy - 1; (y > 0) && (d[pos8x + y] == macouleur); y--) ;
X    if ((y != posy - 1) && (d[pos8x + y] == tacouleur))
X      {
X        for (y = posy - 1; d[pos8x + y] == macouleur; y--)
X--- 381,388 ----
X          d[pos8x + y] = tacouleur ;
X      }
X  
X!   for (y = posy - 1;
X!        (y > 0) && (d[pos8x + y] == macouleur); y--) continue ;
X    if ((y != posy - 1) && (d[pos8x + y] == tacouleur))
X      {
X        for (y = posy - 1; d[pos8x + y] == macouleur; y--)
X***************
X*** 384,390 ****
X  
X    for (x = posx + 1, y = posy + 1;
X         (x < 7) && (y < 7) && (d[(x << 3) + y] == macouleur);
X!        x++, y++) ;
X    if ((x != posx + 1) && (d[(x << 3) + y] == tacouleur))
X      {
X        for (x = posx + 1, y = posy + 1; d[(x << 3) + y] == macouleur; x++, y++)
X--- 391,397 ----
X  
X    for (x = posx + 1, y = posy + 1;
X         (x < 7) && (y < 7) && (d[(x << 3) + y] == macouleur);
X!        x++, y++) continue ;
X    if ((x != posx + 1) && (d[(x << 3) + y] == tacouleur))
X      {
X        for (x = posx + 1, y = posy + 1; d[(x << 3) + y] == macouleur; x++, y++)
X***************
X*** 393,399 ****
X  
X    for (x = posx - 1, y = posy + 1;
X         (x > 0) && (y < 7) && (d[(x << 3) + y] == macouleur);
X!        x--, y++) ;
X    if ((x != posx - 1) && (d[(x << 3) + y] == tacouleur))
X      {
X        for (x = posx - 1, y = posy + 1; d[(x << 3) + y] == macouleur; x--, y++)
X--- 400,406 ----
X  
X    for (x = posx - 1, y = posy + 1;
X         (x > 0) && (y < 7) && (d[(x << 3) + y] == macouleur);
X!        x--, y++) continue ;
X    if ((x != posx - 1) && (d[(x << 3) + y] == tacouleur))
X      {
X        for (x = posx - 1, y = posy + 1; d[(x << 3) + y] == macouleur; x--, y++)
X***************
X*** 402,408 ****
X  
X    for (x = posx + 1, y = posy - 1;
X         (x < 7) && (y > 0) && (d[(x << 3) + y] == macouleur);
X!        x++, y--) ;
X    if ((x != posx + 1) && (d[(x << 3) + y] == tacouleur))
X      {
X        for (x = posx + 1, y = posy - 1; d[(x << 3) + y] == macouleur; x++, y--)
X--- 409,415 ----
X  
X    for (x = posx + 1, y = posy - 1;
X         (x < 7) && (y > 0) && (d[(x << 3) + y] == macouleur);
X!        x++, y--) continue ;
X    if ((x != posx + 1) && (d[(x << 3) + y] == tacouleur))
X      {
X        for (x = posx + 1, y = posy - 1; d[(x << 3) + y] == macouleur; x++, y--)
X***************
X*** 411,417 ****
X  
X    for (x = posx - 1, y = posy - 1;
X         (x > 0) && (y > 0) && (d[(x << 3) + y] == macouleur);
X!        x--, y--) ;
X    if ((x != posx - 1) && (d[(x << 3) + y] == tacouleur))
X      {
X        for (x = posx - 1, y = posy - 1; d[(x << 3) + y] == macouleur; x--, y--)
X--- 418,424 ----
X  
X    for (x = posx - 1, y = posy - 1;
X         (x > 0) && (y > 0) && (d[(x << 3) + y] == macouleur);
X!        x--, y--) continue ;
X    if ((x != posx - 1) && (d[(x << 3) + y] == tacouleur))
X      {
X        for (x = posx - 1, y = posy - 1; d[(x << 3) + y] == macouleur; x--, y--)
X
END_OF_FILE
if test 46204 -ne `wc -c <'patches02b'`; then
    echo shar: \"'patches02b'\" unpacked with wrong size!
fi
# end of 'patches02b'
fi
echo shar: End of archive 2 \(of 3\).
cp /dev/null ark2isdone
MISSING=""
for I in 1 2 3 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 3 archives.
    rm -f ark[1-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0