Java : jeu othello - multi et solo (minmax)

Soyez le premier à donner votre avis sur cette source.

Vue 15 844 fois - Téléchargée 2 376 fois

Description

Premier programme réalisé en java (après environ 2 mois d'apprentissage) et dans le cadre d'un projet en Dut informatique, je devais réaliser le jeu Othello.

Le jeu permet de jouer en solo contre une IA qui utilise l'algorithme MinMax. La fonction d'évaluation est loin d'être parfaite.
IL est aussi possible de jouer en multi-joueur.

Le programme utilise également la sérialisation qui permet de sauvegarder sa partie pour la reprendre plus tard. La gestion des coups est aussi gérée : il est possible de revenir d'annuler un ou plusieurs coups.

Bon jeu et n'hésitez pas à laisser des commentaires que se soit des remarques ou des conseils pour améliorations tel que la fonction d'évaluation de l'IA par exemple.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
203
Date d'inscription
vendredi 27 janvier 2006
Statut
Membre
Dernière intervention
29 janvier 2019

Moi non plus je n'ai pas de problème. Tout cele na peut venir que de ton environnement qui a transformé/transcodé les fichiers sources présents dans l'archive de façon inattendue. De plus il est étrange que ton environnement demande UTF-8 absolument pour le codage des fichiers sources, là où par défaut il prend un codage ISO-8859 qui ne peut pas échouer à la lecture et au décodage.
Avec quel outil as-tu donc désarchivé les fichiers sources? Avec quel éditeur as-tu esayé de les transformer? As-tu fait un transfert de Windows vers Linux via FTP en mode texte?...Regarde de ce côté là, corrige ton environnement, et recharge les sources originaux (pour éviter les pertes de caractères non décodables remplacés ici par des "?").
Messages postés
8
Date d'inscription
jeudi 21 février 2008
Statut
Membre
Dernière intervention
27 février 2009

Wow !!!!!!!! O_o

Je suis aussi sous JDK 1.6 update 12 et je n'ai aucun soucis et pareil pour d'autres personnes que je connais.

Je crois qu'il y a un problème de ton côté.
Messages postés
50
Date d'inscription
lundi 8 mars 2004
Statut
Membre
Dernière intervention
3 mars 2009

Bonjour,

Problème de compilation sous JDK 1.6 update 12.

Impossible de compiler FenetreOthello.java, FenetresAide.java, Othello.java.

Voici les messages d'erreurs :

Othello v1.3/Fichier System Eclipse/Othello v1.3/src/JeuFinal$ javac Othello.java

Othello.java:32: warning: unmappable character for encoding UTF8
// m?morise les coups possibles ? jouer
^
Othello.java:32: warning: unmappable character for encoding UTF8
// m?morise les coups possibles ? jouer
^
Othello.java:35: warning: unmappable character for encoding UTF8
// m?morise le num?ro des cases graphiques par rapport aux coordonn'es
^
Othello.java:35: warning: unmappable character for encoding UTF8
// m?morise le num?ro des cases graphiques par rapport aux coordonn'es
^
Othello.java:35: warning: unmappable character for encoding UTF8
// m?morise le num?ro des cases graphiques par rapport aux coordonn'es
^
Othello.java:38: warning: unmappable character for encoding UTF8
// m?morise les coordonn'es des cases graphiques par rapport ? leurs num?ro
^
Othello.java:38: warning: unmappable character for encoding UTF8
// m?morise les coordonn'es des cases graphiques par rapport ? leurs num?ro
^
Othello.java:38: warning: unmappable character for encoding UTF8
// m?morise les coordonn'es des cases graphiques par rapport ? leurs num?ro
^
Othello.java:38: warning: unmappable character for encoding UTF8
// m?morise les coordonn'es des cases graphiques par rapport ? leurs num?ro
^
Othello.java:43: warning: unmappable character for encoding UTF8
protected int caseChoisie; // r?cup?re gr?ce au clic du joueur sur une case
^
Othello.java:43: warning: unmappable character for encoding UTF8
protected int caseChoisie; // r?cup?re gr?ce au clic du joueur sur une case
^
Othello.java:43: warning: unmappable character for encoding UTF8
protected int caseChoisie; // r?cup?re gr?ce au clic du joueur sur une case
^
Othello.java:46: warning: unmappable character for encoding UTF8
// compteurs des pions pr?sents sur le plateau
^
Othello.java:50: warning: unmappable character for encoding UTF8
// m?morise les coordonn'es des cases prises
^
Othello.java:50: warning: unmappable character for encoding UTF8
// m?morise les coordonn'es des cases prises
^
Othello.java:71: warning: unmappable character for encoding UTF8
// liste des mod?les
^
Othello.java:78: warning: unmappable character for encoding UTF8
// points des diff?rents case pour le choix de la case par l'IA
^
Othello.java:102: warning: unmappable character for encoding UTF8
// met ? false le tableau coupsPossibles
^
Othello.java:105: warning: unmappable character for encoding UTF8
// met ? 0 la liste des mod?les, le joueur en cours et met ? 0 le compteur de mod?le
^
Othello.java:105: warning: unmappable character for encoding UTF8
// met ? 0 la liste des mod?les, le joueur en cours et met ? 0 le compteur de mod?le
^
Othello.java:105: warning: unmappable character for encoding UTF8
// met ? 0 la liste des mod?les, le joueur en cours et met ? 0 le compteur de mod?le
^
Othello.java:105: warning: unmappable character for encoding UTF8
// met ? 0 la liste des mod?les, le joueur en cours et met ? 0 le compteur de mod?le
^
Othello.java:111: warning: unmappable character for encoding UTF8
// enregistre les num?ros des cases graphique par rapport aux coordonn'es
^
Othello.java:111: warning: unmappable character for encoding UTF8
// enregistre les num?ros des cases graphique par rapport aux coordonn'es
^
Othello.java:120: warning: unmappable character for encoding UTF8
// enregistre les lignes et colonnes par rapport aux coordonn'es des cases.
^
Othello.java:131: warning: unmappable character for encoding UTF8
ligneCases[i]= ligne; // un d?calage de 1 par rapport ? l'interface graphique
^
Othello.java:131: warning: unmappable character for encoding UTF8
ligneCases[i]= ligne; // un d?calage de 1 par rapport ? l'interface graphique
^
Othello.java:143: warning: unmappable character for encoding UTF8
// initialise ? z?ro le tableau des cases pris.
^
Othello.java:143: warning: unmappable character for encoding UTF8
// initialise ? z?ro le tableau des cases pris.
^
Othello.java:155: warning: unmappable character for encoding UTF8
// m?morise le nombre de points de chaque case.
^
Othello.java:181: warning: unmappable character for encoding UTF8
// si on poss?de les coins, on change la valeur des cases qui se
^
Othello.java:182: warning: unmappable character for encoding UTF8
// trouve ? proximit? car elles deviennent favorables.
^
Othello.java:182: warning: unmappable character for encoding UTF8
// trouve ? proximit? car elles deviennent favorables.
^
Othello.java:247: warning: unmappable character for encoding UTF8
// d?clare les cases qui se trouve hors du plateau de jeu
^
Othello.java:256: warning: unmappable character for encoding UTF8
// d?clare toutes les cases en statut libre
^
Othello.java:262: warning: unmappable character for encoding UTF8
// positionne les 4 pions de d?part sur les case 27, 28, 35 et 36
^
Othello.java:287: warning: unmappable character for encoding UTF8
// retourne la ligne d'une case en param?tre
^
Othello.java:293: warning: unmappable character for encoding UTF8
// retourne la colonne d'une case en param?tre
^
Othello.java:312: warning: unmappable character for encoding UTF8
// retourne le num?ro de la case gr?ce aux coordonn'es
^
Othello.java:312: warning: unmappable character for encoding UTF8
// retourne le num?ro de la case gr?ce aux coordonn'es
^
Othello.java:312: warning: unmappable character for encoding UTF8
// retourne le num?ro de la case gr?ce aux coordonn'es
^
Othello.java:337: warning: unmappable character for encoding UTF8
// retourne la case sur laquelle le joueur aura cliqu?
^
Othello.java:350: warning: unmappable character for encoding UTF8
// v?firie si le placement est correcte
^
Othello.java:362: warning: unmappable character for encoding UTF8
for (int b = -1; b < 2; b++) // par rapport ? la case choisie
^
Othello.java:364: warning: unmappable character for encoding UTF8
nbEtape = 0; // indique le nombre de pions adverses trouv?s
^
Othello.java:376: warning: unmappable character for encoding UTF8
// si au moins un pion d'une autre couleur est trouv?
^
Othello.java:378: warning: unmappable character for encoding UTF8
// et qu'un pion de m?me couleur est trouv?
^
Othello.java:378: warning: unmappable character for encoding UTF8
// et qu'un pion de m?me couleur est trouv?
^
Othello.java:384: warning: unmappable character for encoding UTF8
// m?morise les coordonn'es des pions pris
^
Othello.java:384: warning: unmappable character for encoding UTF8
// m?morise les coordonn'es des pions pris
^
Othello.java:392: warning: unmappable character for encoding UTF8
// si le coup est vraiment jou?, on ex?cute cette boucle
^
Othello.java:392: warning: unmappable character for encoding UTF8
// si le coup est vraiment jou?, on ex?cute cette boucle
^
Othello.java:423: warning: unmappable character for encoding UTF8
// remet ? 0 le tableau des cases prises
^
Othello.java:433: warning: unmappable character for encoding UTF8
// v?rifie si la partie est termin'e
^
Othello.java:433: warning: unmappable character for encoding UTF8
// v?rifie si la partie est termin'e
^
Othello.java:447: warning: unmappable character for encoding UTF8
// v?rifie si le joueur blanc ne peut plus jouer
^
Othello.java:460: warning: unmappable character for encoding UTF8
// v?rifie si le joueur noir ne peut plus jouer
^
Othello.java:473: warning: unmappable character for encoding UTF8
// permet de montrer les coups possibles ? jouer
^
Othello.java:495: warning: unmappable character for encoding UTF8
// remise ? 0 tableau coupPossibles
^
Othello.java:522: warning: unmappable character for encoding UTF8
// cr?er une copie du jeu
^
Othello.java:525: warning: unmappable character for encoding UTF8
// cr?e un nouveau mod?le
^
Othello.java:525: warning: unmappable character for encoding UTF8
// cr?e un nouveau mod?le
^
Othello.java:528: warning: unmappable character for encoding UTF8
// r?cup?re le statut des cases
^
Othello.java:528: warning: unmappable character for encoding UTF8
// r?cup?re le statut des cases
^
Othello.java:532: warning: unmappable character for encoding UTF8
// r?cup?re le joueurs en cours
^
Othello.java:532: warning: unmappable character for encoding UTF8
// r?cup?re le joueurs en cours
^
Othello.java:534: warning: unmappable character for encoding UTF8
// r?cup?re les points
^
Othello.java:534: warning: unmappable character for encoding UTF8
// r?cup?re les points
^
Othello.java:537: warning: unmappable character for encoding UTF8
// r?cup?re la case jou?
^
Othello.java:537: warning: unmappable character for encoding UTF8
// r?cup?re la case jou?
^
Othello.java:537: warning: unmappable character for encoding UTF8
// r?cup?re la case jou?
^
Othello.java:557: warning: unmappable character for encoding UTF8
// r?cup?re les statuts des cases
^
Othello.java:557: warning: unmappable character for encoding UTF8
// r?cup?re les statuts des cases
^
Othello.java:561: warning: unmappable character for encoding UTF8
// r?cup?re le joueurs en cours
^
Othello.java:561: warning: unmappable character for encoding UTF8
// r?cup?re le joueurs en cours
^
Othello.java:563: warning: unmappable character for encoding UTF8
// r?cup?re les points
^
Othello.java:563: warning: unmappable character for encoding UTF8
// r?cup?re les points
^
Othello.java:566: warning: unmappable character for encoding UTF8
// r?cup?re la case jou?
^
Othello.java:566: warning: unmappable character for encoding UTF8
// r?cup?re la case jou?
^
Othello.java:566: warning: unmappable character for encoding UTF8
// r?cup?re la case jou?
^
Othello.java:574: warning: unmappable character for encoding UTF8
// r?cup?re les statuts des cases
^
Othello.java:574: warning: unmappable character for encoding UTF8
// r?cup?re les statuts des cases
^
Othello.java:578: warning: unmappable character for encoding UTF8
// r?cup?re le joueurs en cours
^
Othello.java:578: warning: unmappable character for encoding UTF8
// r?cup?re le joueurs en cours
^
Othello.java:580: warning: unmappable character for encoding UTF8
// r?cup?re les points
^
Othello.java:580: warning: unmappable character for encoding UTF8
// r?cup?re les points
^
Othello.java:583: warning: unmappable character for encoding UTF8
// r?cup?re la case jou?
^
Othello.java:583: warning: unmappable character for encoding UTF8
// r?cup?re la case jou?
^
Othello.java:583: warning: unmappable character for encoding UTF8
// r?cup?re la case jou?
^
Othello.java:589: warning: unmappable character for encoding UTF8
// r?cup?re les statuts des cases
^
Othello.java:589: warning: unmappable character for encoding UTF8
// r?cup?re les statuts des cases
^
Othello.java:593: warning: unmappable character for encoding UTF8
// r?cup?re le joueurs en cours
^
Othello.java:593: warning: unmappable character for encoding UTF8
// r?cup?re le joueurs en cours
^
Othello.java:595: warning: unmappable character for encoding UTF8
// r?cup?re les points
^
Othello.java:595: warning: unmappable character for encoding UTF8
// r?cup?re les points
^
Othello.java:598: warning: unmappable character for encoding UTF8
// r?cup?re la case jou?
^
Othello.java:598: warning: unmappable character for encoding UTF8
// r?cup?re la case jou?
^
Othello.java:598: warning: unmappable character for encoding UTF8
// r?cup?re la case jou?
^
Othello.java:17: package interfaces does not exist
import interfaces.*;
^
Othello.java:19: cannot find symbol
symbol: class ModeleOthello
public class Othello implements ModeleOthello, Sauvegarde, Ordinateur, Historique, Serializable
^
Othello.java:19: cannot find symbol
symbol: class Sauvegarde
public class Othello implements ModeleOthello, Sauvegarde, Ordinateur, Historique, Serializable
^
Othello.java:19: cannot find symbol
symbol: class Ordinateur
public class Othello implements ModeleOthello, Sauvegarde, Ordinateur, Historique, Serializable
^
Othello.java:19: cannot find symbol
symbol: class Historique
public class Othello implements ModeleOthello, Sauvegarde, Ordinateur, Historique, Serializable
^
5 errors
100 warnings

------------------------------------------------------------

Othello v1.3/Fichier System Eclipse/Othello v1.3/src/JeuFinal$ javac FenetreOthello.java

FenetreOthello.java:5: warning: unmappable character for encoding UTF8
^
FenetreOthello.java:26: warning: unmappable character for encoding UTF8
// charge les diff?rentes images
^
FenetreOthello.java:63: warning: unmappable character for encoding UTF8
private JMenuItem aideRegles = new JMenuItem("* Les r?gles de jeu", imageAide);
^
FenetreOthello.java:68: warning: unmappable character for encoding UTF8
// diff?rents JPanel de la fen?tre
^
FenetreOthello.java:68: warning: unmappable character for encoding UTF8
// diff?rents JPanel de la fen?tre
^
FenetreOthello.java:79: warning: unmappable character for encoding UTF8
// Message en bas d'?cran
^
FenetreOthello.java:86: warning: unmappable character for encoding UTF8
// permet d'afficher le score sur le cot? droit.
^
FenetreOthello.java:92: warning: unmappable character for encoding UTF8
// Element sur le c?t? gauche
^
FenetreOthello.java:92: warning: unmappable character for encoding UTF8
// Element sur le c?t? gauche
^
FenetreOthello.java:97: warning: unmappable character for encoding UTF8
// boutons pour revenir en arri?re
^
FenetreOthello.java:102: warning: unmappable character for encoding UTF8
private String txt; // servira ? stocker le texte 'blanc' ou 'noir' en fonction du joueur
^
FenetreOthello.java:128: warning: unmappable character for encoding UTF8
// ajout les actions aux diff?rents boutons du menu.
^
FenetreOthello.java:148: warning: unmappable character for encoding UTF8
// ferme le programme gr?ce ? la croix
^
FenetreOthello.java:148: warning: unmappable character for encoding UTF8
// ferme le programme gr?ce ? la croix
^
FenetreOthello.java:152: warning: unmappable character for encoding UTF8
fondPrincipale = new JPanel(); // Contient les 3 panel d'apr?s
^
FenetreOthello.java:166: warning: unmappable character for encoding UTF8
// cr?er la barre menu
^
FenetreOthello.java:267: warning: unmappable character for encoding UTF8
// ajout les diff?rents panels au panel principale
^
FenetreOthello.java:269: warning: unmappable character for encoding UTF8
// cr?e une disposition et on l'applique au panel fondPrincipale
^
FenetreOthello.java:295: warning: unmappable character for encoding UTF8
coupJoue.setText(" Coup Jou? : ");
^
FenetreOthello.java:335: warning: unmappable character for encoding UTF8
// ajout les diff?rents panel Haut, droit, bas
^
FenetreOthello.java:394: warning: unmappable character for encoding UTF8
// cr?ations des cases
^
FenetreOthello.java:427: warning: unmappable character for encoding UTF8
// Affiche les pions au d?part d'une nouvelle partie
^
FenetreOthello.java:442: warning: unmappable character for encoding UTF8
// r?cup?re et affiche les coups possibles
^
FenetreOthello.java:442: warning: unmappable character for encoding UTF8
// r?cup?re et affiche les coups possibles
^
FenetreOthello.java:463: warning: unmappable character for encoding UTF8
// r?cup?re le joueur en cours pour connaitre la couleur
^
FenetreOthello.java:463: warning: unmappable character for encoding UTF8
// r?cup?re le joueur en cours pour connaitre la couleur
^
FenetreOthello.java:468: warning: unmappable character for encoding UTF8
infoMessage.setText("*Joueur " +txt +" ? vous de jouer !");
^
FenetreOthello.java:478: warning: unmappable character for encoding UTF8
// affiche les coordonn'es de la case jou? sur l'interface graphique
^
FenetreOthello.java:478: warning: unmappable character for encoding UTF8
// affiche les coordonn'es de la case jou? sur l'interface graphique
^
FenetreOthello.java:494: warning: unmappable character for encoding UTF8
// permet d'activer ou de d?sactiver les boutons pr?c?dent et suivant
^
FenetreOthello.java:494: warning: unmappable character for encoding UTF8
// permet d'activer ou de d?sactiver les boutons pr?c?dent et suivant
^
FenetreOthello.java:494: warning: unmappable character for encoding UTF8
// permet d'activer ou de d?sactiver les boutons pr?c?dent et suivant
^
FenetreOthello.java:497: warning: unmappable character for encoding UTF8
// pr?cedent
^
FenetreOthello.java:510: warning: unmappable character for encoding UTF8
// avec les valeurs donn'es par le joueur
^
FenetreOthello.java:521: warning: unmappable character for encoding UTF8
Methode pour ex?cuter le coup demand? et l'afficher ? l'?cran
^
FenetreOthello.java:521: warning: unmappable character for encoding UTF8
Methode pour ex?cuter le coup demand? et l'afficher ? l'?cran
^
FenetreOthello.java:521: warning: unmappable character for encoding UTF8
Methode pour ex?cuter le coup demand? et l'afficher ? l'?cran
^
FenetreOthello.java:521: warning: unmappable character for encoding UTF8
Methode pour ex?cuter le coup demand? et l'afficher ? l'?cran
^
FenetreOthello.java:530: warning: unmappable character for encoding UTF8
// si le 2? joueur est un humain
^
FenetreOthello.java:534: warning: unmappable character for encoding UTF8
// si le 2? joueur est le PC
^
FenetreOthello.java:544: warning: unmappable character for encoding UTF8
// r?cup?re la couleur et le texte du joueur en cours et celle de l'autre joueur
^
FenetreOthello.java:544: warning: unmappable character for encoding UTF8
// r?cup?re la couleur et le texte du joueur en cours et celle de l'autre joueur
^
FenetreOthello.java:571: warning: unmappable character for encoding UTF8
// incr?mente numeroMod?le
^
FenetreOthello.java:571: warning: unmappable character for encoding UTF8
// incr?mente numeroMod?le
^
FenetreOthello.java:586: warning: unmappable character for encoding UTF8
// remet ? z?ro le tableau des cases pris.
^
FenetreOthello.java:586: warning: unmappable character for encoding UTF8
// remet ? z?ro le tableau des cases pris.
^
FenetreOthello.java:602: warning: unmappable character for encoding UTF8
// r?initialise le tableau des coups possibles
^
FenetreOthello.java:605: warning: unmappable character for encoding UTF8
// r?cup?re les cases possibles ? jouer
^
FenetreOthello.java:605: warning: unmappable character for encoding UTF8
// r?cup?re les cases possibles ? jouer
^
FenetreOthello.java:605: warning: unmappable character for encoding UTF8
// r?cup?re les cases possibles ? jouer
^
FenetreOthello.java:611: warning: unmappable character for encoding UTF8
// affiche en bas de l'?cran le joueur en cours
^
FenetreOthello.java:627: warning: unmappable character for encoding UTF8
// test si le joueur ? rejouer pendant la navigation dans l'historique
^
FenetreOthello.java:628: warning: unmappable character for encoding UTF8
// si c'est le cas on met ? null le reste du tableau des historiques ? partir
^
FenetreOthello.java:628: warning: unmappable character for encoding UTF8
// si c'est le cas on met ? null le reste du tableau des historiques ? partir
^
FenetreOthello.java:629: warning: unmappable character for encoding UTF8
// du coup qui vient d'?tre jou?
^
FenetreOthello.java:629: warning: unmappable character for encoding UTF8
// du coup qui vient d'?tre jou?
^
FenetreOthello.java:630: warning: unmappable character for encoding UTF8
// cela permettra de d?sactiver le bouton suivant
^
FenetreOthello.java:634: warning: unmappable character for encoding UTF8
// affiche les coordonn'es de la case jou? sur l'interface
^
FenetreOthello.java:634: warning: unmappable character for encoding UTF8
// affiche les coordonn'es de la case jou? sur l'interface
^
FenetreOthello.java:637: warning: unmappable character for encoding UTF8
// active ou desactive boutons pr?c?dent et suivant
^
FenetreOthello.java:637: warning: unmappable character for encoding UTF8
// active ou desactive boutons pr?c?dent et suivant
^
FenetreOthello.java:644: warning: unmappable character for encoding UTF8
else JOptionPane.showMessageDialog(this, " Veuillez d?marrer une nouvelle partie ! ","Erreur", JOptionPane.ERROR_MESSAGE);
^
FenetreOthello.java:655: warning: unmappable character for encoding UTF8
Fin de la m?thode jouerUnCoup()
^
FenetreOthello.java:696: warning: unmappable character for encoding UTF8
Fin de la partie g?rant les images des cases
^
FenetreOthello.java:700: warning: unmappable character for encoding UTF8
// g?re le coup de l'IA
^
FenetreOthello.java:709: warning: unmappable character for encoding UTF8
D?but de la gestion des clics
^
FenetreOthello.java:716: warning: unmappable character for encoding UTF8
// r?cup?re la source du bouton cliqu?
^
FenetreOthello.java:716: warning: unmappable character for encoding UTF8
// r?cup?re la source du bouton cliqu?
^
FenetreOthello.java:716: warning: unmappable character for encoding UTF8
// r?cup?re la source du bouton cliqu?
^
FenetreOthello.java:719: warning: unmappable character for encoding UTF8
// g?re les boutons du menu
^
FenetreOthello.java:804: warning: unmappable character for encoding UTF8
oth.nomFichier = JOptionPane.showInputDialog(this, "Entrez le nom du fichier (au moins 5 caract?res) : ", "maPartie");
^
FenetreOthello.java:808: warning: unmappable character for encoding UTF8
JOptionPane.showMessageDialog(this, "Enregistrement de la partie : "+oth.nomFichier +" r?ussi !", "Enregistrement", JOptionPane.INFORMATION_MESSAGE) ;
^
FenetreOthello.java:829: warning: unmappable character for encoding UTF8
JOptionPane.showMessageDialog(this, "Chargement de la partie : <"+oth.nomFichier +" r?ussi !") ;
^
FenetreOthello.java:850: warning: unmappable character for encoding UTF8
// g?re les clics des boutons suivant et pr?c?dent
^
FenetreOthello.java:850: warning: unmappable character for encoding UTF8
// g?re les clics des boutons suivant et pr?c?dent
^
FenetreOthello.java:850: warning: unmappable character for encoding UTF8
// g?re les clics des boutons suivant et pr?c?dent
^
FenetreOthello.java:879: warning: unmappable character for encoding UTF8
String rouge = JOptionPane.showInputDialog(this, "Entrez le degr? de rouge (de 0 ? 255)", "0");
^
FenetreOthello.java:879: warning: unmappable character for encoding UTF8
String rouge = JOptionPane.showInputDialog(this, "Entrez le degr? de rouge (de 0 ? 255)", "0");
^
FenetreOthello.java:880: warning: unmappable character for encoding UTF8
String vert = JOptionPane.showInputDialog(this, "Entrez le degr? de vert (de 0 ? 255)", "220");
^
FenetreOthello.java:880: warning: unmappable character for encoding UTF8
String vert = JOptionPane.showInputDialog(this, "Entrez le degr? de vert (de 0 ? 255)", "220");
^
FenetreOthello.java:881: warning: unmappable character for encoding UTF8
String bleu = JOptionPane.showInputDialog(this, "Entrez le degr? de bleu (de 0 ? 255)", "20");
^
FenetreOthello.java:881: warning: unmappable character for encoding UTF8
String bleu = JOptionPane.showInputDialog(this, "Entrez le degr? de bleu (de 0 ? 255)", "20");
^
FenetreOthello.java:888: warning: unmappable character for encoding UTF8
JOptionPane.showMessageDialog(this, " Valeur(s) entr?e(s) incorrecte(s)","Erreur", JOptionPane.ERROR_MESSAGE);
^
FenetreOthello.java:893: warning: unmappable character for encoding UTF8
// g?re les boutons aide.
^
FenetreOthello.java:907: warning: unmappable character for encoding UTF8
fenetre.setTitle("R?gles du jeu");
^
FenetreOthello.java:912: warning: unmappable character for encoding UTF8
// g?re les cases du plateau
^
FenetreOthello.java:1147: warning: unmappable character for encoding UTF8
JOptionPane.showMessageDialog(this,"* Partie Finie : Egalit? !");
^
FenetreOthello.java:23: cannot find symbol
symbol : class Othello
location: class JeuFinal.FenetreOthello
private Othello oth = new Othello();
^
FenetreOthello.java:23: cannot find symbol
symbol : class Othello
location: class JeuFinal.FenetreOthello
private Othello oth = new Othello();
^
FenetreOthello.java:504: operator + cannot be applied to Othello.numeroModele,int
if ((oth.listeModele[oth.numeroModele+1] == null) || oth.partieEstFinie())
^
FenetreOthello.java:504: incompatible types
found : <nulltype>
required: int
if ((oth.listeModele[oth.numeroModele+1] == null) || oth.partieEstFinie())
^
FenetreOthello.java:596: operator < cannot be applied to java.lang.String,int
if ((oth.compteurBlanc + oth.compteurNoir) < 64)
^
FenetreOthello.java:615: incomparable types: java.lang.String and intif ((oth.partieEstFinie()true) || (oth.compteurBlanc + oth.compteurNoir 64) ||
^
FenetreOthello.java:621: operator < cannot be applied to java.lang.String,int
(oth.compteurBlanc + oth.compteurNoir) < 64)
^
FenetreOthello.java:643: operator < cannot be applied to java.lang.String,int
{ if ((oth.compteurBlanc + oth.compteurNoir) < 64) infoMessage.setText("INTERDIT ! Joueur " +txt +" recommencez !");
^
FenetreOthello.java:649: operator < cannot be applied to java.lang.String,int
&& ((oth.compteurBlanc + oth.compteurNoir) < 64))
^
FenetreOthello.java:897: cannot find symbol
symbol : class FenetresAide
location: class JeuFinal.FenetreOthello
FenetresAide fenetre = new FenetresAide(frame);
^
FenetreOthello.java:897: cannot find symbol
symbol : class FenetresAide
location: class JeuFinal.FenetreOthello
FenetresAide fenetre = new FenetresAide(frame);
^
FenetreOthello.java:905: cannot find symbol
symbol : class FenetresAide
location: class JeuFinal.FenetreOthello
FenetresAide fenetre = new FenetresAide(frame);
^
FenetreOthello.java:905: cannot find symbol
symbol : class FenetresAide
location: class JeuFinal.FenetreOthello
FenetresAide fenetre = new FenetresAide(frame);
^
13 errors
88 warnings

--------------------------------------------------------------

/Bureau/Othello v1.3/Fichier System Eclipse/Othello v1.3/src/interfaces$ javac ModeleOthello.java

ModeleOthello.java:19: warning: unmappable character for encoding UTF8
/** permet de sauvegarde un mod?le dans une liste */
^
ModeleOthello.java:22: warning: unmappable character for encoding UTF8
/** permet de charger le mod?le qui pr?c?de un coup*/
^
ModeleOthello.java:22: warning: unmappable character for encoding UTF8
/** permet de charger le mod?le qui pr?c?de un coup*/
^
ModeleOthello.java:22: warning: unmappable character for encoding UTF8
/** permet de charger le mod?le qui pr?c?de un coup*/
^
ModeleOthello.java:25: warning: unmappable character for encoding UTF8
/** restitu le mod?le d'avant le chargement du mod?le pr?cedent */
^
ModeleOthello.java:25: warning: unmappable character for encoding UTF8
/** restitu le mod?le d'avant le chargement du mod?le pr?cedent */
^
ModeleOthello.java:25: warning: unmappable character for encoding UTF8
/** restitu le mod?le d'avant le chargement du mod?le pr?cedent */
^
ModeleOthello.java:28: warning: unmappable character for encoding UTF8
/** charge le mod?le en param?tre */
^
ModeleOthello.java:28: warning: unmappable character for encoding UTF8
/** charge le mod?le en param?tre */
^
ModeleOthello.java:16: package JeuFinal does not exist
import JeuFinal.Othello;
^
ModeleOthello.java:32: cannot find symbol
symbol : class Othello
location: interface interfaces.ModeleOthello
public void chargeModeleQuelconque(Othello modele);
^
2 errors
11 warnings
Messages postés
203
Date d'inscription
vendredi 27 janvier 2006
Statut
Membre
Dernière intervention
29 janvier 2019

Sinon je me souviens avoir écrit ce genre de programme il y a une bonne vingtaine d'années à mes débuts (sur une machine 8 bits avec moins de 64Ko de mémoire, et un CPU de quelques mégahertz...): pour faire tenir le programme et lui donner de la performance, sans prendre trop de mémoire, il fallait passer outre le Basic, faire de l'assembleur (6502, 8080, puis 6809...), et trouver des structures de données les plus compactes possibles pour maximiser la profondeur de recherche ;-! Mon vieux programme répondait pourtant en un temps raisonnable (pas plus de 10 secondes avec une exploration à la profondeur 8 complétée d'une heuristique d'évaluation des positions finales et d'une autre pour l'élagage de l'arbre de recherche). Evidemment le dessin du damier et l'interface était très secondaire, limitée par la faible résolution graphique d'alors, mais ça marchait.

Ce genre de programme est typique dans le cadre d'un apprentissage: c'est un premier pas vers la maitrise de programmes riches en code, et permet de mieux maîtriser sa façon d'écrire du code (et de nommer correctement et commenter les différentes entités pour s'y retrouver).
Messages postés
203
Date d'inscription
vendredi 27 janvier 2006
Statut
Membre
Dernière intervention
29 janvier 2019

Algo le moins performant ? Soit! mais c'est le seul qui soit universel pour toutes sortes de problèmes et le seul à ne pas omettre des branches importantes.
Les autres algos sont peut-êter plus rapides, mais ils nécessitent une heuristique spécifique au jeu, laquelle est très délicate à concevoir.
L'algo mion-max reste de toute façon toujours utilisé à la base, même si l'heuristique sert à élaguer les branches mortes de l'arbre, ou équivalentes à d'autres branches déjà explorées: cet élagage algorithmique (pour les équivalences) ou heuristique (pour les branches jugées non viables) permet d'augmenter la profondeur de recherche si on a une limite de temps de calcul pour l'évaluation du coup suivant. D'autres heuristiques contiennent une fonction d'apprentissage qui sert à analyser les coups joués précédemment par le joueur, afin d'en déterminer la stratégie dominante. Enfin il est courant dans les jeux comme l'Othello/Reversi, d'avoir une base de données des premiers coups, contenant la (ou les) bonnes réponses.

Pour les fins de partie, quand le damier est presque plein et des tas de cases bloquées, l'algo min-max devient très performant par le fait qu'il explore systématiquement toutes les solutions encore possibles sans en omettre aucune, et dans das situations presques bloquées, où il ne rete pus qu'un seul bon coup à l'issue probablement moins perdante et au champ de possibilités plus large, il s'avère très efficace aussi (à condition de l'employer par une exploration de l'arbre en largeur d'abord et non en profondeur d'abord).

Cela se joue généralement dans les 6 à 8 dernières cases, mais on peut aller plus loin si un algo sait reconnaitre les suites de coups équivalentes (par simple permutation quand ces coups ne sont pas interdépendants)

Note: ton algo min-max utilise quelle méthode d'exploration? en largeur d'abord ou en profindeur d'abord ? L'exploration en largeur d'abord a un gros avantage pour l'évaluation en temps limité, car il explore chaque profondeur totalement avant de passer à la profondeur suivante. De plus cela permet de reconnaitre les suites de coups équivalentes en élaguant les positions identiques obtenues par deux branches distinctes.

Le défaut est que cette solution (exploration en largeur d'abord) demande plus de mémoire pour retenir les différentes positions finales d'un niveau donné (alors qu'en profondeur d'abord la mémoire est limitée à celle de la pile, dont la profondeur est finie dans ce jeu, et ne cesse de diminuer au cours de la partie car il reste moins de cases libres sur le damier).

Quand un maximum de positions est atteint, il ne reste plus alors que la possibilité de l'heuristique, qui "évalue" (avec des points sur la valeur des cases contrôlées) chaque position afin de déterminer parmi celles en excédent laquelle on doit conserver en mémoire.

Une fois un niveau exploré et classé en priorité selon leurs points, on peut alors passer au demi-coup suivant. Cela reste du min-max, mais bien amélioré et avec un temps de calcul restreint qui permet de garder le jeu jouable (sans attendre de façon interminable entre chaque coup)
Afficher les 6 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.