Initial commit
This commit is contained in:
parent
ab6c3353e2
commit
13161bcbd7
17 changed files with 1335 additions and 0 deletions
173
LABY
Normal file
173
LABY
Normal file
|
@ -0,0 +1,173 @@
|
|||
/*
|
||||
* ------------------------ *
|
||||
| |
|
||||
| -= LabyrinthAPI =- |
|
||||
| |
|
||||
* ------------------------ *
|
||||
|
||||
|
||||
Authors: T. Hilaire, J. Brajard
|
||||
Licence: GPL
|
||||
Status: beta version
|
||||
|
||||
File: labyrinthAPI.h
|
||||
Contains the client API for the Labyrinth game
|
||||
|
||||
|
||||
*/
|
||||
|
||||
|
||||
#ifndef __API_CLIENT_LABYRINTH__
|
||||
#define __API_CLIENT_LABYRINTH__
|
||||
#include "ret_type.h"
|
||||
|
||||
typedef enum
|
||||
{
|
||||
ROTATE_LINE_LEFT = 0,
|
||||
ROTATE_LINE_RIGHT = 1,
|
||||
ROTATE_COLUMN_UP = 2,
|
||||
ROTATE_COLUMN_DOWN = 3,
|
||||
MOVE_UP = 4,
|
||||
MOVE_DOWN = 5,
|
||||
MOVE_LEFT = 6,
|
||||
MOVE_RIGHT = 7,
|
||||
DO_NOTHING = 8
|
||||
} t_typeMove;
|
||||
|
||||
|
||||
/*
|
||||
A move is a tuple (type,value):
|
||||
- type can be ROTATE_LINE_LEFT, ROTATE_LINE_RIGHT, ROTATE_COLUMN_UP,
|
||||
ROTATE_COLUMN_DOWN, MOVE_LEFT, MOVE_RIGHT, MOVE_UP or MOVE_DOWN
|
||||
- in case of rotation, the value indicates the number of the line
|
||||
(or column) to be rotated
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
t_typeMove type; /* type of the move */
|
||||
int value; /* value associated with the type
|
||||
(number of the line or the column to rotate)*/
|
||||
} t_move;
|
||||
|
||||
|
||||
/* -------------------------------------
|
||||
* Initialize connection with the server
|
||||
* Quit the program if the connection to the server
|
||||
* cannot be established
|
||||
*
|
||||
* Parameters:
|
||||
* - serverName: (string) address of the server
|
||||
* (it could be "localhost" if the server is run in local,
|
||||
* or "pc4521.polytech.upmc.fr" if the server runs there)
|
||||
* - port: (int) port number used for the connection
|
||||
* - name: (string) name of the bot : max 20 characters
|
||||
* (checked by the server)
|
||||
*/
|
||||
void connectToServer( char* serverName, int port, char* name);
|
||||
|
||||
|
||||
|
||||
/* ----------------------------------
|
||||
* Close the connection to the server
|
||||
* to do, because we are polite
|
||||
*
|
||||
* Parameters:
|
||||
* None
|
||||
*/
|
||||
void closeConnection();
|
||||
|
||||
/* ----------------------------------------------------------------
|
||||
* Wait for a Game, and retrieve its name and first data
|
||||
* (typically, array sizes)
|
||||
*
|
||||
* Parameters:
|
||||
* - training: string (max 50 characters) type of the training
|
||||
* player we want to play with
|
||||
* (empty string for regular game)
|
||||
* - labyrinthName: string (max 50 characters),
|
||||
* corresponds to the game name
|
||||
* - sizeX, sizeY: sizes of the labyrinth
|
||||
*
|
||||
* training is a string like "NAME key1=value1 key2=value1 ..."
|
||||
* - NAME can be empty. It gives the type of the training player
|
||||
* - key=value pairs are used for options
|
||||
* (each training player has its own options)
|
||||
* invalid keys are ignored, invalid values leads to error
|
||||
* the following options are common to every training player
|
||||
* (when NAME is not empty):
|
||||
* - timeout: allows an define the timeout
|
||||
* when training (in seconds)
|
||||
* the NAME could be:
|
||||
* - "DO_NOTHING" to play against DO_NOTHING player
|
||||
* (player that does not move)
|
||||
* - "PLAY_RANDOM" for a player that make random (legal) moves
|
||||
* (option "rotation=False/True")
|
||||
*/
|
||||
void waitForLabyrinth( char* training, char* labyrinthName,
|
||||
int* sizeX, int* sizeY);
|
||||
/* -------------------------------------
|
||||
* Get the labyrinth and tell who starts
|
||||
* It fills the char* lab with the data of the labyrinth
|
||||
* 1 if there's a wall, 0 for nothing
|
||||
*
|
||||
* Parameters:
|
||||
* - lab: the array of labyrinth
|
||||
* (the pointer data MUST HAVE allocated with the right size !!)
|
||||
*
|
||||
* Returns 0 if you begin, or 1 if the opponent begins
|
||||
*/
|
||||
int getLabyrinth( char* lab);
|
||||
|
||||
|
||||
|
||||
/* ----------------------
|
||||
* Get the opponent move
|
||||
*
|
||||
* Parameters:
|
||||
* - move: a move
|
||||
*
|
||||
* Returns a return_code
|
||||
* MOVE_OK for normal move,
|
||||
* MOVE_WIN for a winning move, -1
|
||||
* MOVE_LOSE for a losing (or illegal) move
|
||||
* this code is relative to the opponent (MOVE_WIN if HE wins, ...)
|
||||
*/
|
||||
t_return_code getMove( t_move* move );
|
||||
|
||||
|
||||
|
||||
/* -----------
|
||||
* Send a move
|
||||
*
|
||||
* Parameters:
|
||||
* - move: a move
|
||||
*
|
||||
* Returns a return_code
|
||||
* MOVE_OK for normal move,
|
||||
* MOVE_WIN for a winning move, -1
|
||||
* MOVE_LOSE for a losing (or illegal) move
|
||||
* this code is relative to your programm (MOVE_WIN if YOU win, ...)
|
||||
*/
|
||||
t_return_code sendMove( t_move move );
|
||||
|
||||
|
||||
|
||||
/* ----------------------
|
||||
* Display the labyrinth
|
||||
* in a pretty way (ask the server what to print)
|
||||
*/
|
||||
void printLabyrinth();
|
||||
|
||||
|
||||
|
||||
/* ----------------------------
|
||||
* Send a comment to the server
|
||||
*
|
||||
* Parameters:
|
||||
* - comment: (string) comment to send to the server (max 100 char.)
|
||||
*/
|
||||
void sendComment(char* comment);
|
||||
|
||||
|
||||
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue