112 lines
3.8 KiB
C
112 lines
3.8 KiB
C
/*
|
|
* src/gmp.h
|
|
* Copyright (C) 1995-1996 William Shubert.
|
|
*
|
|
* Parts of this file are taken from "protocol.c", which is covered under
|
|
* the copyright notice below.
|
|
* Any code that is not present in the original "proocol.c" is covered under
|
|
* the copyright notice above.
|
|
*/
|
|
/*******************************************************
|
|
protocol.c 1.00
|
|
JCGA Go Communication Protocol
|
|
copyright(c) Shuji Sunaga 95.7.9
|
|
original Standard Go Modem Protocol 1.0
|
|
by David Fotland
|
|
* Permission granted to use this code for any
|
|
* commercial or noncommercial purposes as long as this
|
|
* copyright notice is not removed.
|
|
* This code was written for Borland C++ 4.0J
|
|
*******************************************************/
|
|
/*
|
|
* You may use this code in any way you wish as long as you retain the
|
|
* above copyright notices.
|
|
*/
|
|
|
|
/* Modified by Paul Pogonyshev on 10.07.2003.
|
|
* Added support for Simplified GTP.
|
|
*/
|
|
|
|
#ifndef _GMP_H_
|
|
#define _GMP_H_ 1
|
|
|
|
|
|
/**********************************************************************
|
|
* Data types
|
|
**********************************************************************/
|
|
typedef enum {
|
|
gmp_nothing, gmp_move, gmp_pass, gmp_reset, gmp_newGame, gmp_undo, gmp_err
|
|
} GmpResult;
|
|
|
|
|
|
#ifndef _GMP_C_
|
|
typedef struct Gmp_struct Gmp;
|
|
#endif /* _GMP_C_ */
|
|
|
|
|
|
/**********************************************************************
|
|
* Fuctions
|
|
**********************************************************************/
|
|
extern Gmp *gmp_create(int inFile, int outFile);
|
|
|
|
extern void gmp_destroy(Gmp *ge);
|
|
|
|
/*
|
|
* This starts a game up.
|
|
* If you want, you can pass in -1 for size, handicap, and chineseRules,
|
|
* and it will query. You can also pass in -1 for iAmWhite, but if you do
|
|
* this then it will send a RESET command. If the other machine is black
|
|
* and doesn't support arbitration, then this could screw things up.
|
|
* Komi must be specified since GMP doesn't let you exchange komi information.
|
|
* After calling this function, you should call gmp_check until you get a
|
|
* "gmp_newGame" returned. Then you know that the size, etc. have all been
|
|
* verified, you can call "gmp_size()" or whatever to find out values you
|
|
* set to -1, and you can start the game.
|
|
*/
|
|
extern void gmp_startGame(Gmp *ge, int boardsize, int handicap,
|
|
float komi, int chineseRules, int iAmWhite,
|
|
int simplified);
|
|
|
|
/*
|
|
* Pretty self-explanatory set of routines. For sendMove, (0,0) is the
|
|
* corner.
|
|
*/
|
|
extern void gmp_sendMove(Gmp *ge, int x, int y);
|
|
extern void gmp_sendPass(Gmp *ge);
|
|
extern void gmp_sendUndo(Gmp *ge, int numUndos);
|
|
|
|
/*
|
|
* gmp_check() process all data queued up until the next command that needs
|
|
* to be returned to the application. If sleep is nonzero, then it will
|
|
* stay here until a command arrives. If sleep is zero, then it will
|
|
* return immediately if no command is ready.
|
|
* It should be called about once per second to prevent the connection
|
|
* between the programs from timing out.
|
|
* If you get a move, "out1" will be the X and "out2" will be the y.
|
|
*/
|
|
extern GmpResult gmp_check(Gmp *ge, int sleepy,
|
|
int *out1, int *out2, const char **error);
|
|
|
|
|
|
/*
|
|
* These routines return the configuration of the game that you are playing
|
|
* in. They should all be set up by the time you get a gmpResult_newGame
|
|
* from gmp_read().
|
|
* If you get a -1 back from these, it means that you didn't set the value
|
|
* when you called gmp_startGame() and your opponent wouldn't say what
|
|
* they had the parameter set to.
|
|
*/
|
|
extern int gmp_size(Gmp *ge);
|
|
extern int gmp_handicap(Gmp *ge);
|
|
extern float gmp_komi(Gmp *ge);
|
|
extern int gmp_chineseRules(Gmp *ge);
|
|
extern int gmp_iAmWhite(Gmp *ge);
|
|
|
|
/*
|
|
* This is handy if you want to print out, as an ascii string, the result
|
|
* that you got bock from gmp_read().
|
|
*/
|
|
extern const char *gmp_resultString(GmpResult result);
|
|
|
|
#endif /* _GMP_H_ */
|