wm: glendy

ref: 30b8cab042cde9e3d06cf8a286b85a746772aa6a
dir: /doc/glendy2.man/

View raw version
.TH GLENDY 2
.SH NAME
initlevel, pointdir, movedir, domove,
doput, findglenda, checknext, score1, clac, nextglenda,
restart, undo, checkstate \- libglendy functions
.SH SYNOPSIS
.EX
.sp 0.3v
#include "engine.h"

enum
{
	/* difficulty levels (walls on the map) */
	DEasy,	/* 10≤x<15 */
	DMed,	/* 5≤x<10 */
	DHard,	/* 1≤x<5 */
	DImp, /* 0 */

	/* map size */
	SzX = 11,
	SzY = 11, 

	/* movement directions */
	NE,
	E,
	SE,
	SW,
	W,
	NW,

	/* player types */
	Human = 0,
	Computer,
	Net,

	/* state of a game */
	Init = 0,
	Start,
	Playing,
	Won,	
	Lost,

	/* elements on the map */
	Prev = 100, /* glenda's previous location */
	Wall = 999,
	Glenda = 1000,

	Err = 0,
	Ok,
};

void initlevel(void);
Point movedir(int dir, Point p);
int pointdir(Point src, Point dst);

int domove(int dir);
int doput(Point p);

Point findglenda(void);
int checknext(int dir, Point p);

int score1(Point p);
void calc(void);
void nextglenda(void);

int findmin(void);
int checkstate(void);

void restart(void);
void undo(void);

.SH DESCRIPTION
These library provides functions to deal with
.I glendy
game logic and make writing clients and servers easier.

.I initlevel
sets up the map with glenda always on middle
and amount of walls based on 
.I difficulity
variable,
.TP 10
.B DEasy
10 ≤ x ≤ 15
.TP 10
.B DMed
5 ≤ x ≤ 10
.TP 10
.B Dhard
1 ≤ x ≤ 5
.TP 10
.B DImp
x = 0
.PP
where 
.B x
is amount of walls, chosen randomly.

.PP
.I movedir
function returns the point
.I p
after being moved in
.I dir
direction,
or
.B {-1, -1}
in case of invalid input.
.I pointdir
is the reverse of
.I movedir
function, returning what direction
.I src
needs to be moved to reach
.I dst
or
.B Err
if it can't be reached in one move.

.I domove
and
.I doput
are used by clients to handle actions for glenda
and trapper (the player who puts the walls).
they
returns
.B Wall
and
.B Glenda
if the cell is not empty.
.PP
.I findglenda
returns first cell which has
.B Glenda
inside.
.I checknext
is a depracated varient of
.I pointdir.
.PP
.I score1 ,
.I calc
and
.I nextglenda
are... uh..., functions i guess?
i don't know what they do. they are supposed to be computer's algorithm,
please let me know if you know what's going on!
.PP
.I restart
reverts grid layout to
.B ogrid 
and sets turn to 0.
.I undo 
undos to last move done by tapper, sets
to
.B turn - 2.
it's expected to be buggy, and only works once.
(further calls to
.I undo
reverts the map to orignal state before first call of undo.)