Je travaille sur le développement d'un jeu tournant sous Android, en utilisant bien évidemment le langage de programmation java: Le Tic Tac Toe ou le Morpion.
Ce que j'essaie avant tout de réaliser, c'est une sorte d'intelligence artificielle.
Principe
Lorsque un humain clique sur une case, celle-ci se rempli de la valeur 1. Après ça, l'ordinateur répond en choisissant aléatoirement une case libre pour pouvoir y mettre une valeur de 0. Lorsque l'humain ou l'ordinateur a réussi une ligné, une colonne ou une diagonale de même valeur, celui-ci gagne et la partie prend fin.
Avant de vous exposer mon problème, je tiens à préciser que j'ai de bonnes compétences - pas énorme non plus - pour réaliser ce projet :
Les règles du jeu sont en places :
Si une case contient une valeur, celle-ci n'est plus cliquable
Fonction permettant de savoir qui est le grand gagnant ou non
Fonction permettant de choisir un nombre aléatoire moins la case cliqué
Le problème
Tout d'abord, une image avant le discours.
Je m'explique :
Orange : Lorsque la case 1 (celle de gauche) est cliquée, on passe par un case (switch) propre à cette case. La case remplie d'un 0, est la 3 (et ainsi de suite)
Bleu :
Tout d'abord, on passe par une boucle do... while qui permet de rechercher un nombre aléatoire sans prendre en compte le numéro de la case cliqué. Ici, le 1.
Si on trouve un nombre aléatoire différent de 1, on passe par des conditions pour pouvoir remplir la bonne case en fonction du nombre aléatoire reçu.
Et c'est ici que le problème se pose :
Comment faire pour pouvoir retourner à la boucle do... while si un nombre aléatoire choisi ne peut pas être rempli dans une case car celle-ci est remplie ?
J'ai essayé plusieurs façon différente de faire ça en suivant mon structogramme, mais j'arrive toujours au même point :
Si on arrive dans un else if, relancé un nombre aléatoire et voir ça valeur.
Il y a peu, j'y étais presque. L'IA répondait bien, mais fallait cliqué une 15aine de fois sur la même case pour remplir les 8 autres de 0 (lors des tests !)
...
Fonction permettant de gérer les clics des cases pour pouvoir y mettre une valeur (exemple présenté pour le problème).
Fonction permettant de choisir un nombre aléatoire moins la case cliqué (exemple présenté pour le problème)
private int nbAleatoire(int nb){
int nbAlea;
do{
nbAlea = (int)(Math.random() * (4-1)) + 1;
}while(nbAlea == nb);//Si le nombre aléatoire est égale à la case cliqué, on refais une recherche
return nbAlea;
}
Conclusion
Si une âme charitable peut me donner une simple piste, je lui serais très reconnaissant, car l'intelligence artificielle (ici de bas... Que dis-je... Très bas niveau) est un domaine passionnant et j'aimerais pouvoir on ne peut plus l'exploiter.
En attendant de vos réponses, je vous souhaite un bon après-midi
[Android]Tic Tac Toe : Intelligence Artificielle bas niveau
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.