Module Name: src
Committed By: rillig
Date: Sun May 22 10:45:02 UTC 2022
Modified Files:
src/games/gomoku: gomoku.h pickmove.c
Log Message:
gomoku: document a missed immediate win
No binary change.
To generate a diff of this commit:
cvs rdiff -u -r1.38 -r1.39 src/games/gomoku/gomoku.h
cvs rdiff -u -r1.42 -r1.43 src/games/gomoku/pickmove.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/games/gomoku/gomoku.h
diff -u src/games/gomoku/gomoku.h:1.38 src/games/gomoku/gomoku.h:1.39
--- src/games/gomoku/gomoku.h:1.38 Sat May 21 17:19:10 2022
+++ src/games/gomoku/gomoku.h Sun May 22 10:45:02 2022
@@ -1,4 +1,4 @@
-/* $NetBSD: gomoku.h,v 1.38 2022/05/21 17:19:10 rillig Exp $ */
+/* $NetBSD: gomoku.h,v 1.39 2022/05/22 10:45:02 rillig Exp $ */
/*
* Copyright (c) 1994
@@ -151,18 +151,23 @@ union comboval {
struct combostr {
struct combostr *c_next; /* list of combos at the same level */
struct combostr *c_prev; /* list of combos at the same level */
- struct combostr *c_link[2]; /* C:previous level or F:NULL */
- union comboval c_linkv[2]; /* C:combo value for link[0,1] */
- union comboval c_combo; /* C:combo value for this level */
- u_short c_vertex; /* C:intersection or F:frame head */
- u_char c_nframes; /* number of frames in the combo */
- u_char c_dir; /* C:loop frame or F:frame direction */
- u_char c_flags; /* C:combo flags */
- u_char c_frameindex; /* C:intersection frame index */
+ struct combostr *c_link[2]; /* F: NULL,
+ * C: previous level */
+ union comboval c_linkv[2]; /* C: combo value for link[0, 1] */
+ union comboval c_combo; /* F: initial combo value (read-only),
+ * C: combo value for this level */
+ u_short c_vertex; /* F: frame head,
+ * C: intersection */
+ u_char c_nframes; /* F: 1,
+ * C: number of frames in the combo */
+ u_char c_dir; /* F: frame direction,
+ * C: loop frame */
+ u_char c_flags; /* C: combo flags */
+ u_char c_frameindex; /* C: intersection frame index */
u_char c_framecnt[2]; /* number of frames left to attach */
- u_char c_emask[2]; /* C:bit mask of completion spots for
+ u_char c_emask[2]; /* C: bit mask of completion spots for
* link[0] and link[1] */
- u_char c_voff[2]; /* C:vertex offset within frame */
+ u_char c_voff[2]; /* C: vertex offset within frame */
};
/* flag values for c_flags */
Index: src/games/gomoku/pickmove.c
diff -u src/games/gomoku/pickmove.c:1.42 src/games/gomoku/pickmove.c:1.43
--- src/games/gomoku/pickmove.c:1.42 Sat May 21 16:39:14 2022
+++ src/games/gomoku/pickmove.c Sun May 22 10:45:02 2022
@@ -1,4 +1,4 @@
-/* $NetBSD: pickmove.c,v 1.42 2022/05/21 16:39:14 rillig Exp $ */
+/* $NetBSD: pickmove.c,v 1.43 2022/05/22 10:45:02 rillig Exp $ */
/*
* Copyright (c) 1994
@@ -34,7 +34,7 @@
#include <sys/cdefs.h>
/* @(#)pickmove.c 8.2 (Berkeley) 5/3/95 */
-__RCSID("$NetBSD: pickmove.c,v 1.42 2022/05/21 16:39:14 rillig Exp $");
+__RCSID("$NetBSD: pickmove.c,v 1.43 2022/05/22 10:45:02 rillig Exp $");
#include <stdlib.h>
#include <string.h>
@@ -243,6 +243,11 @@ scanframes(int color)
return;
/* quick check for four in a row */
+ /*
+ * TODO: This quick check misses that after loading the game K10 J9
+ * M10 J10 O10 J11 Q10 J8 and playing K9, there are 2 immediate
+ * winning moves J12 and J7.
+ */
sp = &board[cbp->c_vertex];
cb.s = sp->s_fval[color][d = cbp->c_dir].s;
if (cb.s < 0x101) {