URL: https://linuxfr.org/users/juke/journaux/optimisation-des-tests-pour-un-morpion Title: Optimisation des tests pour un morpion. Authors: Juke Date: 2003年11月18日T16:42:26+01:00 Tags: Score: 0 Salut. Voilà je suis en train de programmer une sorte de morpion ou les pions peuvent se deplacer j'ai un terrain comme ceci: int plateau[NB_LIG_PLAT][NB_COL_PLAT] = { {0,0,0}, {0,0,0}, {0,0,0} }; les cases peuvent prendre les valeurs: NOIR 2 BLANC 1 VIDE 0 J'ai besoin d'un fonction qui me disent si un plateau est gagnant pour le noir, pour le blanc ou si il est egalité. J'ai fait cette fonction là mais ma gestion des if est tres bourrin. Je ne sais pas si il y'a moyen de l'optimiser, et si c'est le cas, si il y'a une methode precise. Je pense que ça doit etre possible avec un tableau de karnaugh ou quelque chose du genre. Voilà ma fonction: int eval_plateau() { int ennemie; int gagnant = VIDE; //TEST DES LIGNES if (plateau[0][0] == plateau[0][1] == plateau[0][2] != VIDE) gagnant = plateau[0][0]; if (plateau[1][0] == plateau[1][1] == plateau[1][2] != VIDE) gagnant = plateau[1][0]; if (plateau[2][0] == plateau[2][1] == plateau[2][2] != VIDE) gagnant = plateau[2][0]; //TEST DES COLONNES if (plateau[0][0] == plateau[1][0] == plateau[2][0] != VIDE) gagnant = plateau[0][0]; if (plateau[0][1] == plateau[1][1] == plateau[2][1] != VIDE) gagnant = plateau[0][1]; if (plateau[0][2] == plateau[1][2] == plateau[2][2] != VIDE) gagnant = plateau[0][2]; //TEST DES DIAGONALES if (plateau[0][0] == plateau[1][1] == plateau[2][2] != VIDE) gagnant = plateau[0][0]; if (plateau[0][2] == plateau[1][1] == plateau[2][0] != VIDE) gagnant = plateau[0][2]; return gagnant; } Merci de votre aide. Juke.

AltStyle によって変換されたページ (->オリジナル) /