#ifndef _DEPLACEMENT
#define _DEPLACEMENT

#include"tableau.h"

/*deplacement.h*/

/*
 * @require
 * @assign
 * @ensure détermine si le déplacement est légal ou pas et l'effectue si c'est le cas
 */
void deplacement(pile **tableau,int N, char *sel, int *tour);

/*
 * @require
 * @assign
 * @ensure verifie si le nombre de pièce à deplacer de la case selectionnées est valide 
 */
int nb_a_selectionner(pile **tableau,int i,int j,int *tour);

/*@require
 * @assign
 * @ensure : verifie si les coordonnées de la case destination est valide pour toutes les pièces à déplacer
 */
void case_destination(pile **tableau,int N,int i_src,int j_src,int *i_dest,int *j_dest,int nb,int *tour); 

/*
 * @require
 * @assign
 * @ensure : verifie que le déplacement est valide pour un pion
 */
int pions(pile **tableau, int i_src,int j_src,int i_dest,int j_dest, int tour);

/*
 * @require
 * @assign
 * @ensure : verifie que le déplacement est valide pour un roi
 */
int roi(int i_src,int j_src,int i_dest,int j_dest);

/*
 * @require
 * @assign
 * @ensure : verifie que le déplacement est valide pour une dame
 */
int dames(int i_src,int j_src,int i_dest,int j_dest);

/*
 * @require
 * @assign
 * @ensure : verifie que le déplacement est valide pour une tour
 */
int tours(int i_src,int j_src,int i_dest,int j_dest);

/*
 * @require
 * @assign
 * @ensure : verifie que le déplacement est valide pour un fou
 */
int fous(int i_src,int j_src,int i_dest,int j_dest);

/*
 * @require
 * @assign
 * @ensure : verifie que le déplacement est valide pour un cavalier
 */
int cavaliers(int i_src,int j_src,int i_dest,int j_dest);
/*
 * @require
 * @assign
 * @ensure : effectue le déplacement d'une pile de pion d'une case vers une autre
 */
void effectuer(pile **tableau,int i_src, int j_src,int i_dest, int j_dest,int nb);
#endif