coup_jeu api_siam_tenter_changer_orientation_piece_si_possible(jeu_siam* jeu,int x,int y,orientation_deplacement orientation) { assert(jeu!=NULL); assert(jeu_etre_integre(jeu)); coup_jeu coup; coup_jeu_initialiser(&coup); if(orientation_etre_integre(orientation)==0){ coup.valide=0; return coup; } // on verifie si on peut changer l'orientation de la piece if(plateau_modification_changer_orientation_piece_etre_possible(&jeu->plateau,x,y,orientation)==0){ coup.valide=0; return coup; } // on verifie si la piece qu'on veut modifier appartient au joueur courant if(jeu_verifier_type_piece_a_modifier(jeu,x,y)==0){ coup.valide=0; return coup; } /* si les conditions sont verifies on change l'orientation de la piece, on change de joueur, on regarde s'il est victorieux et on renvoie le coup valide*/ plateau_modification_changer_orientation_piece(&jeu->plateau,x,y,orientation); const piece_siam* piece=plateau_obtenir_piece_info(&jeu->plateau,x,y); assert(piece!=NULL); assert(piece_etre_integre(piece));//on regarde si on a pas corrompu la piece jeu_changer_joueur(jeu); coup.valide=1; assert(coup_etre_integre(&coup));//on verifie qu'on renvoie un coup integre return coup; }
coup_jeu api_siam_tenter_changer_orientation_piece_si_possible(jeu_siam* jeu,int x,int y,orientation_deplacement orientation) { assert(jeu_etre_integre(jeu)); coup_jeu coup; coup_jeu_initialiser(&coup); if(plateau_modification_changer_orientation_piece_etre_possible(&(jeu->plateau),x,y,orientation)==0) { puts(" orientation pas bonne"); return coup; } const piece_siam *piece = plateau_obtenir_piece_info(&(jeu->plateau), x, y); // On vérifie que la pièce au coordonnées indiquées appartienne bien au joueur actuel. if(piece->type==rocher || piece->type==case_vide) { puts(" Vous ne pouvez pas bouger cette pièce (rocher ou case vide) !"); return coup; } if(joueur_etre_type_animal(jeu->joueur,piece->type)==0) { puts(" La piece choisie n'est pas la votre !"); return coup; } plateau_modification_changer_orientation_piece(&(jeu->plateau),x,y,orientation); coup.valide=1; //on change de joueur joueur_changer(&(jeu->joueur)); return coup; // Cette fonction permet de changer l'orientation d'une pièce, dans tous les cas elle ne permettra pas // de désigner un vainqueur : on ne changera pas la valeur de coup.victoire (initialisée à 0). }