|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T s
Length: 6202 (0x183a)
Types: TextFile
Names: »scrabble.h«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
└─⟦this⟧ »EUUGD18/General/Scrabble/scrabble.h«
/* RCS Info: $Revision: 1.2 $ on $Date: 89/03/15 11:16:37 $
* $Source: /yew3/faustus/src/scrabble/RCS/scrabble.h,v $
* Copyright (c) 1989 Wayne A. Christopher, U. C. Berkeley CS Dept
* faustus@renoir.berkeley.edu, ucbvax!faustus
* Permission is granted to modify and re-distribute this code in any manner
* as long as this notice is preserved. All standard disclaimers apply.
*
*/
#include "util.h"
#define AUTHOR "Wayne Christopher"
#define ADDRESS "faustus@yew.Berkeley.EDU"
#define VERSION "1.0"
#define SIZE 15
#define WORK_SIZE 7
#define POOL_SIZE 100
#define ALL_BONUS 50
#define NUM_LETTERS 27 /* Plus wildcard. */
#define MAX_PLAYERS 4
#ifndef DICT_FILE
#define DICT_FILE "/usr/dict/words"
#endif
#ifdef MSDOS
#define HASH_SIZE 1003
#else
#define HASH_SIZE 5003
#endif
#define MAX_LENGTH 15
#define WILD '*'
#define ZIP ' '
typedef struct board_s board_t;
typedef struct player_s player_t;
typedef struct move_s move_t;
typedef struct dict_s dict_t;
typedef struct word_s word_t;
typedef enum bonus_e bonus_t;
typedef enum command_e command_t;
typedef enum devtype_e devtype_t;
enum bonus_e {
NONE = 0,
DOUBLE_LETTER = 1,
TRIPLE_LETTER = 2,
DOUBLE_WORD = 3,
TRIPLE_WORD = 4
} ;
enum command_e {
NOTHING = 0,
MOVE = 1,
TRADEIN = 2,
SAVE = 3,
RESTORE = 4,
HELP = 5,
ADVICE = 6,
QUIT = 7
} ;
enum devtype_e {
DEV_TTY = 0,
DEV_X10 = 1,
DEV_X11 = 2
} ;
struct board_s {
char letters[SIZE][SIZE];
bonus_t bonus[SIZE][SIZE];
char pool[POOL_SIZE];
int numleft;
bool virgin;
} ;
struct player_s {
char working[WORK_SIZE];
int numworking;
int score;
bool machine;
char *name;
} ;
struct move_s {
char *word;
bool wild[SIZE];
int x, y;
int length;
bool horiz;
int points;
} ;
/* The dictionary structure is a hash table, where the hash function is
* calculated from the number of times each letter appears in the word.
*/
struct dict_s {
word_t *buckets[MAX_LENGTH][HASH_SIZE];
int size;
} ;
struct word_s {
char *word;
int length;
word_t *next;
word_t *next_set;
} ;
#define boardletter(board, x, y, hf, pos) \
((hf) ? (board)->letters[(x) + (pos)][(y)] : \
(board)->letters[(x)][(y) + (pos)])
#define boardbonus(board, x, y, hf, pos) \
((hf) ? (board)->bonus[(x) + (pos)][(y)] : \
(board)->bonus[(x)][(y) + (pos)])
#define something(c) ((c) != ZIP)
#define letterpoints(c) ((iswild(c) || ((c) == WILD)) ? 0 : \
letterpoint_values[(c) - 'a'])
#define iswild(c) (isupper(c))
#define maketame(c) ((c) - 'A' + 'a')
#define makewild(c) ((c) - 'a' + 'A')
/* scrabble.c */
#ifdef _STDC_
extern int main(int ac, char **av);
#else
extern int main();
#endif
extern dict_t *dictionaries;
extern bool debug;
extern bool userpick;
/* board.c */
extern board_t *makeboard();
#ifdef _STDC_
extern void boardmove(board_t *board, move_t *move);
extern char pickletter(board_t *board);
#else
extern void boardmove();
extern char pickletter();
#endif
extern int letterpoint_values[];
/* extern void printboard(board_t *board, FILE *fp); */
/* move.c */
#ifdef _STDC_
extern void bestmove(board_t *board, player_t *player, move_t *best);
extern void trymove(move_t *move, board_t *board, player_t *player, bool check);
#else
extern void bestmove();
extern void trymove();
#endif
/* extern void printmove(int which, move_t *move, FILE *fp); */
/* dict.c */
#ifdef _STDC_
extern void readdict(char *file);
extern word_t *getpossibles(char *req, int numreq, char *opt, int numopt,
int len);
extern bool isaword(char *poss);
extern void addword(char *word);
extern void remword(char *word);
extern void writedict(char *file);
#else
extern void readdict();
extern word_t *getpossibles();
extern bool isaword();
extern void addword();
extern void remword();
extern void writedict();
#endif
/* player.c */
#ifdef _STDC_
extern player_t *makeplayer(board_t *board, int num);
extern void playermove(board_t *board, player_t *player, move_t *move);
#else
extern player_t *makeplayer();
extern void playermove();
#endif
/* extern void printplayer(player_t *player, int num, FILE *fp); */
/* savegame.c */
#ifdef _STDC_
extern board_t *restoregame(FILE *fp, int *nump, int *whosup, int *turn);
extern player_t *restoreplayer(FILE *fp);
extern void savegame(FILE *fp, int nump, int whosup, int turn);
extern void saveplayer(FILE *fp);
#else
extern board_t *restoregame();
extern player_t *restoreplayer();
extern void savegame();
extern void saveplayer();
#endif
/* user.c */
#ifdef _STDC_
extern void user_init(devtype_t type, board_t *board, player_t *players[],
int numplayers);
extern void user_message(char *message);
extern char *user_question(char *message);
extern bool user_confirm(char *message);
extern command_t user_command(board_t *board, player_t *player, move_t *move);
extern void user_drawplayer(player_t *player, int pos, bool up);
extern void user_drawsummary(board_t *board, int turn);
extern void user_drawmove(board_t *board, move_t *move, player_t *player);
#else
extern void user_init();
extern void user_message();
extern char *user_question();
extern bool user_confirm();
extern command_t user_command();
extern void user_drawplayer();
extern void user_drawsummary();
extern void user_drawmove();
#endif
extern void user_givehelp();
extern void user_update();
extern void user_cleanup();
/* extern bool readmove(board_t *board, player_t *player, move_t *move); */
/* tty.c */
#ifdef _STDC_
extern void tty_init(board_t *board, player_t *players[], int numplayers);
extern void tty_message(char *message);
extern char *tty_question(char *message);
extern bool tty_confirm(char *message);
extern command_t tty_command(board_t *board, player_t *player, move_t *mv);
extern void tty_drawplayer(player_t *player, int pos, bool up);
extern void tty_drawsummary(board_t *board, int turn);
extern void tty_drawmove(board_t *board, move_t *mv, player_t *player);
#else
extern void tty_init();
extern void tty_message();
extern char *tty_question();
extern bool tty_confirm();
extern command_t tty_command();
extern void tty_drawplayer();
extern void tty_drawsummary();
extern void tty_drawmove();
#endif
extern void tty_givehelp();
extern void tty_update();
extern void tty_cleanup();