matrice partie(matrice M, char *nom, int joueur) { char coup[2]; char *ordi="l\'ordinateur"; int i, j; while ( peut_jouer(M, 1) || peut_jouer(M, 2)) { if (!peut_jouer(M, joueur)) { printf("%s ne peut pas jouer", (joueur==1)?nom:ordi); joueur=changer_joueur(joueur); } else { printf("Au tour de %s : \n", (joueur==1)?nom:ordi); do { affiche_matrice(M); printf("Rentrez un coup :\n"); fscanf(stdin, "%s", coup); if (verif_coup(coup)) { if (verif_coup(coup) == 1) { i=convertir(coup[0]); j=convertir(coup[1]); } else { j=convertir(coup[0]); i=convertir(coup[1]); } } } while (!coup_valide(M, i, j, joueur)); M=changer(M, i, j, joueur); joueur=changer_joueur(joueur); purger(); clear(); } } return M; }
/* Fonction permettant de faire jouer un joueur humain - saisie des coordonnées tant qu'elles sont invalides - jouer le coup */ int humain_joue_un_coup(othello* jeu, char joueur){ int i, j, ok=0; if(!peut_jouer(jeu, joueur)){ return 0; } do{ printf("Joueur J%d [%c]:\n", joueur==J1?1:2, joueur); printf("ligne: "); scanf("%d", &i); printf("colonne: "); scanf("%d", &j); if(!case_libre(jeu, i, j)) printf("La case est occupée, recommencez ...\n"); else if(!(ok=coup_possible(jeu, joueur, i, j))) printf("Vous ne pouvez pas jouer ici, recommencez ...\n"); } while(!ok); jouer_un_coup(jeu, joueur, i, j); return 1; }