]> git.cameronkatri.com Git - bsdgames-darwin.git/blobdiff - gomoku/gomoku.h
Simplify, little KNF
[bsdgames-darwin.git] / gomoku / gomoku.h
index 9f304f806e5278ab0c9b3d1e3d0d804b46ab5cf2..abd1b6d03aebdbd5133786055cff9cb337438fa3 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: gomoku.h,v 1.5 1998/09/13 15:27:28 hubertf Exp $       */
+/*     $NetBSD: gomoku.h,v 1.20 2014/03/22 18:58:57 dholland Exp $     */
 
 /*
  * Copyright (c) 1994
  * 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)
@@ -178,7 +182,7 @@ struct combostr {
        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
@@ -186,7 +190,7 @@ struct combostr {
        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 */
@@ -214,7 +218,7 @@ struct      elist {
 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 */
@@ -225,7 +229,7 @@ struct      spotstr {
        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 */
@@ -240,7 +244,7 @@ struct      spotstr {
 /*
  * 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) */
@@ -248,11 +252,10 @@ struct    ovlp_info {
        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 */
@@ -262,44 +265,30 @@ extern    int     movelog[BSZ * BSZ];             /* history of moves */
 extern int     movenum;
 extern int     debug;
 
+extern int interactive;
+extern const char *plyr[];
+
 #define ASSERT(x)
 
-void   bdinit __P((struct spotstr *));
-void   init_overlap __P((void));
-int    getline __P((char *, int));
-void   ask __P((char *));
-void   dislog __P((char *));
-void   bdump __P((FILE *));
-void   bdisp __P((void));
-void   bdisp_init __P((void));
-void   cursfini __P((void));
-void   cursinit __P((void));
-void   bdwho __P((int));
-void   panic __P((char *)) __attribute__((__noreturn__));
-void   log __P((char *));
-void   dlog __P((char *));
-void   quit __P((void)) __attribute__((__noreturn__));
-void   quitsig __P((int)) __attribute__((__noreturn__));
-void   whatsup __P((int));
-int    readinput __P((FILE *));
-char   *stoc __P((int));
-int    lton __P((int));
-int    ctos __P((char *));
-void   update_overlap __P((struct spotstr *));
-int    makemove __P((int, int));
-int    list_eq __P((struct combostr **, struct combostr **, int));
-void   clearcombo __P((struct combostr *, int));
-void   makeempty __P((struct combostr *));
-void   appendcombo __P((struct combostr *, int));
-void   updatecombo __P((struct combostr *, int));
-void   markcombo __P((struct combostr *));
-void   printcombo __P((struct combostr *, char *));
-void   makecombo __P((struct combostr *, struct spotstr *, int, int));
-void   makecombo2 __P((struct combostr *, struct spotstr *, int, int));
-int    sortcombo __P((struct combostr **, struct combostr **, struct combostr *));
-int    checkframes __P((struct combostr *, struct combostr *, struct spotstr *,
-int, struct ovlp_info *));
-void   addframes __P((int));
-void   scanframes __P((int));
-int    better __P((struct spotstr *, struct spotstr *, int));
-int    pickmove __P((int));
+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);