]> git.cworth.org Git - dvonn/blobdiff - dvonn.c
Implement automatic pass (when there is no legal move) and end-of-game
[dvonn] / dvonn.c
diff --git a/dvonn.c b/dvonn.c
index fccbfbc5b6ee5d1fff71dc161cf0c005453167df..c1762ed19be159f67832ce71fe032e85e0331ee0 100644 (file)
--- a/dvonn.c
+++ b/dvonn.c
@@ -177,13 +177,6 @@ on_button_press_event (GtkWidget   *widget,
     if (event->type >= GDK_2BUTTON_PRESS)
        return TRUE;
 
-    /* Right-click means pass, (yes, it would be better to add some
-     * actual UI elements... */
-    if (event->button == 3) {
-       dvonn_board_pass (&game->board);
-       return TRUE;
-    }
-
     x = event->x;
     y = event->y;
     layout_device_to_board (layout, &x, &y);
@@ -373,12 +366,39 @@ on_expose_event_draw (GtkWidget           *widget,
        pango_font_description_set_family (game->font, DVONN_FONT);
        pango_font_description_set_absolute_size (game->font, DVONN_FONT_SIZE * PANGO_SCALE);
     }
-    to_move = _create_layout_printf (cr, game->font,
-                                    "%s to %s.",
-                                    game->board.player == DVONN_PLAYER_WHITE ?
-                                    "White" : "Black",
-                                    game->board.phase == DVONN_PHASE_PLACEMENT ?
-                                    "place" : "move");
+    if (game->board.phase == DVONN_PHASE_GAME_OVER) {
+       if (game->board.score[DVONN_PLAYER_WHITE] >
+           game->board.score[DVONN_PLAYER_BLACK])
+       {
+           to_move = _create_layout_printf (cr, game->font,
+                                            "White wins (%d to %d)\n",
+                                            game->board.score[DVONN_PLAYER_WHITE],
+                                            game->board.score[DVONN_PLAYER_BLACK]);
+       }
+       else if  (game->board.score[DVONN_PLAYER_BLACK] >
+                 game->board.score[DVONN_PLAYER_WHITE])
+       {
+           to_move = _create_layout_printf (cr, game->font,
+                                            "Black wins (%d to %d)\n",
+                                            game->board.score[DVONN_PLAYER_BLACK],
+                                            game->board.score[DVONN_PLAYER_WHITE]);
+       }
+       else
+       {
+           to_move = _create_layout_printf (cr, game->font,
+                                            "Tie game (%d to %d)\n",
+                                            game->board.score[DVONN_PLAYER_WHITE],
+                                            game->board.score[DVONN_PLAYER_BLACK]);
+
+       }
+    } else {
+       to_move = _create_layout_printf (cr, game->font,
+                                        "%s to %s.",
+                                        game->board.player == DVONN_PLAYER_WHITE ?
+                                        "White" : "Black",
+                                        game->board.phase == DVONN_PHASE_PLACEMENT ?
+                                        "place" : "move");
+    }
     cairo_move_to (cr, 2, 2);
     if (game->board.player == DVONN_PLAYER_WHITE)
        cairo_set_source_rgb (cr, 1.0, 1.0, 1.0);