-/* $NetBSD: gomoku.h,v 1.2 1996/12/28 18:57:01 tls Exp $
-*/
+/* $NetBSD: gomoku.h,v 1.20 2014/03/22 18:58:57 dholland Exp $ */
+
/*
* Copyright (c) 1994
* The Regents of the University of California. All rights reserved.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
+ * 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
*/
#include <sys/types.h>
+#include <sys/_endian.h>
+#include <stdio.h>
/* board dimensions */
#define BSZ 19
#define BSZ1 (BSZ+1)
#define BSZ2 (BSZ+2)
+#define BSZ3 (BSZ+3)
+#define BSZ4 (BSZ+4)
#define BAREA (BSZ2*BSZ1+1)
-/* frame dimentions (based on 5 in a row) */
+#define TRANSCRIPT_COL 46 /* necessarily == 2*BSZ4 */
+
+/* interactive curses stuff */
+#define BGOTO(y,x) move(BSZ - (y), 2 * (x) + 3)
+
+/* frame dimensions (based on 5 in a row) */
#define FSZ1 BSZ
#define FSZ2 (BSZ-4)
#define FAREA (FSZ1*FSZ2 + FSZ2*FSZ2 + FSZ1*FSZ2 + FSZ2*FSZ2)
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_flg; /* C:combo flags */
+ 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_voff[2]; /* C:vertex offset within frame */
};
-/* flag values for c_flg */
+/* flag values for c_flags */
#define C_OPEN_0 0x01 /* link[0] is an open ended frame */
#define C_OPEN_1 0x02 /* link[1] is an open ended frame */
#define C_LOOP 0x04 /* link[1] intersects previous frame */
struct spotstr {
short s_occ; /* color of occupant */
short s_wval; /* weighted value */
- int s_flg; /* flags for graph walks */
+ int s_flags; /* flags for graph walks */
struct combostr *s_frame[4]; /* level 1 combo for frame[dir] */
union comboval s_fval[2][4]; /* combo value for [color][frame] */
union comboval s_combo[2]; /* minimum combo value for BLK & WHT */
int dummy[2]; /* XXX */
};
-/* flag values for s_flg */
+/* flag values for s_flags */
#define CFLAG 0x000001 /* frame is part of a combo */
#define CFLAGALL 0x00000F /* all frame directions marked */
#define IFLAG 0x000010 /* legal intersection point */
/*
* This structure is used to store overlap information between frames.
*/
-struct ovlp_info {
+struct overlap_info {
int o_intersect; /* intersection spot */
struct combostr *o_fcombo; /* the connecting combo */
u_char o_link; /* which link to update (0 or 1) */
u_char o_frameindex; /* intersection frame index */
};
-extern char *letters;
-extern char fmtbuf[];
-extern char pdir[];
+extern const char *letters;
+extern const char pdir[];
-extern int dd[4];
+extern const int dd[4];
extern struct spotstr board[BAREA]; /* info for board */
extern struct combostr frames[FAREA]; /* storage for single frames */
extern struct combostr *sortframes[2]; /* sorted, non-empty frames */
extern int movenum;
extern int debug;
-extern char *copy();
-extern char *stoc();
-extern char *tail();
+extern int interactive;
+extern const char *plyr[];
#define ASSERT(x)
+
+void bdinit(struct spotstr *);
+int get_coord(void);
+int get_key(const char *allowedkeys);
+int get_line(char *, int);
+void ask(const char *);
+void dislog(const char *);
+void bdump(FILE *);
+void bdisp(void);
+void bdisp_init(void);
+void cursfini(void);
+void cursinit(void);
+void bdwho(int);
+void panic(const char *, ...) __printflike(1, 2) __dead;
+void debuglog(const char *, ...) __printflike(1, 2);
+void whatsup(int);
+const char *stoc(int);
+int ctos(const char *);
+int makemove(int, int);
+int list_eq(struct combostr **, struct combostr **, int);
+void clearcombo(struct combostr *, int);
+void markcombo(struct combostr *);
+int pickmove(int);