[Commit] rrsolve/src Makefile.am,1.1.1.1,1.2 rrsolve.c,1.9,1.10

Carl Worth commit at keithp.com
Sat Jan 10 21:15:09 PST 2004


Committed by: cworth

Update of /local/src/CVS/rrsolve/src
In directory home.keithp.com:/tmp/cvs-serv31259/src

Modified Files:
	Makefile.am rrsolve.c 
Log Message:

        * src/Makefile.am (rrsolve_LDFLAGS): Fix to not ovverride user
        variables.

        * src/rrsolve.c (handle_events): Speed up rrsolve robot movement
        slightly.
        (handle_events): Keep track of users in the game and their scores.
        (handle_events): Implement "pity points". If another user with a
        lower score than rrsolve matches its bid, then rrsolve will revoke
        its bid (and immediately make it again), to give the other user
        the first chance to demonstrate the solution. This behavior makes
        solitaire play against rrsolve much more enjoyable.

        * configure.in: Now require librr >= 0.1.1


Index: Makefile.am
===================================================================
RCS file: /local/src/CVS/rrsolve/src/Makefile.am,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -d -r1.1.1.1 -r1.2
--- Makefile.am	25 Jun 2003 10:45:06 -0000	1.1.1.1
+++ Makefile.am	11 Jan 2004 05:15:06 -0000	1.2
@@ -7,5 +7,5 @@
 	rrs_state_buf.c \
 	rrs_solution.c
 
-INCLUDES = $(rrsolve_CFLAGS)
-LDFLAGS = $(rrsolve_LIBS)
+rrsolve_INCLUDES = $(rrsolve_CFLAGS)
+rrsolve_LDFLAGS = $(rrsolve_LIBS)

Index: rrsolve.c
===================================================================
RCS file: /local/src/CVS/rrsolve/src/rrsolve.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- rrsolve.c	11 Jul 2003 01:03:15 -0000	1.9
+++ rrsolve.c	11 Jan 2004 05:15:06 -0000	1.10
@@ -39,7 +39,7 @@
 #define RRS_STATE_GET_ROBOT(s, ri, x, y) { (y) = ((s) >> ((ri)<<3)) & 0xf; (x) = ((s) >> (((ri)<<3) + 4)) & 0xf; }
 
 static void
-handle_events (rr_client_t *client);
+handle_events (rr_client_t *client, char *name);
 
 static rrs_state_t
 rrs_state_get_from_board (rr_board_t *board);
@@ -111,7 +111,7 @@
 	    return 1;
 	}
 
-	handle_events (client);
+	handle_events (client, args.user);
 
 	rr_client_destroy (client);
     }
@@ -120,7 +120,7 @@
 }
 
 static void
-handle_events (rr_client_t *client)
+handle_events (rr_client_t *client, char *name)
 {
     int i;
     rr_status_t status;
@@ -128,7 +128,10 @@
     rrs_solution_t solution;
     rr_board_t *board;
     char *diagram;
-    struct timespec move_delay = { 1, 200000000l };
+    struct timespec move_delay = { 0, 800000000l };
+    rr_players_t *players;
+
+    rr_client_players (client, &players);
 
     /* XXX: This block of code can go away when add a NOTICE BOARD
        for new users joining a game. */
@@ -212,23 +215,38 @@
 		}
 	    }
 	    break;
+	case RR_NOTICE_BID:
+	    /* rrsolve is kind enought to offer pity points */
+	    if (notice->u.bid.number == solution.num_moves &&
+		strcmp (notice->u.bid.username, name) &&
+		rr_players_get_score (players, notice->u.bid.username) < rr_players_get_score (players, name))
+	    {
+		rr_client_revoke (client);
+		rr_client_bid (client, solution.num_moves);
+	    }
+	    break;
+	case RR_NOTICE_JOIN:
+	    rr_players_add (players, notice->u.string);
+	    break;
+	case RR_NOTICE_PART:
+	    rr_players_remove (players, notice->u.string);
+	    break;
+	case RR_NOTICE_SCORE:
+	    rr_players_set_score (players, notice->u.bid.username, notice->u.bid.number);
+	    break;
 	case RR_NOTICE_GAMEOVER:
 	case RR_NOTICE_GAME:
 	case RR_NOTICE_USER:
-	case RR_NOTICE_JOIN:
 	case RR_NOTICE_QUIT:
 	case RR_NOTICE_DISPOSE:
 	case RR_NOTICE_MESSAGE:
 	case RR_NOTICE_WATCH:
-	case RR_NOTICE_PART:
-	case RR_NOTICE_BID:
 	case RR_NOTICE_REVOKE:
 	case RR_NOTICE_TIMER:
 	case RR_NOTICE_ACTIVE:
 	case RR_NOTICE_MOVE:
 	case RR_NOTICE_UNDO:
 	case RR_NOTICE_RESET:
-	case RR_NOTICE_SCORE:
 	    /* Ignore these notices */
 	    break;
 	}




More information about the Commit mailing list