Jeu du morpion (fonction détection) - C - Programmation
Marsh Posté le 29-09-2011 à 20:38:29
Salut,
L'algo intuitif pourrait être :
Pour chaque case
si la case est un pion d'un joueur quelconque
regarder horizontalement si les 4 suivantes ( si possible ) sont aussi de ce même joueur
regarder verticalement si les 4 suivantes ( si possible ) sont aussi de ce même joueur
fin si
fin pour
Ensuite, tu peux améliorer l'algo en ne faisant pas toutes les cases du tableau , mais en t'arrêtant 4 cases avant ( en effet, inutile de tester la 8ème case horizontalement puisqu'il n'en reste que 3 pour finir ).
On peut encore améliorer l'algo de recherche , mais ce n'est surement pas le but ici. ( ex : effectuer le test à chaque coup joué, non pas sur la totalité du tableau, mais à partir de la pièce jouée, car seule la pièce jouée déterminera la victoire ou non, en considérant que la fois précédente, il n'y a pas eu de victoire ).
Marsh Posté le 29-09-2011 à 20:46:12
Merci mais au niveau de l'algo je prefere choisir la 1ere, c'est à dire parcourir tout le tableau parait que c'est facile.
Justement a-t-on forcement besoin de pointeurs?
Merci d'avance
Marsh Posté le 29-09-2011 à 20:59:54
Tu peux travailler directement avec ton tableau , et le parcourir avec une double boucle ( comme tu le fais déjà pour l'initialiser ) .
Par contre, si tu veux faire une fonction pour effectuer ce test, il te faudra passer l'adresse du tableau ( du premier élément) en paramètre, que tu récupéreras dans un pointeur ( car passer le tableau entier en paramètre c'est mal ). Tu pourras travailler à partir du pointeur dans ce cas.
Marsh Posté le 30-09-2011 à 00:09:06
Bonsoir,
j'avais fait un puissance 4 il y a quelques temps, le problème est similaire je pense . Voici la fonction de vérification tel que dans mon code:
Code :
|
Bon il est améliorable (sortir le nombre magique '4', et utiliser une variable par exemple! et sûrement plein d'autres choses...) mais tu auras une base de départ...
Marsh Posté le 30-09-2011 à 22:53:24
J'ai réussi et sans pointeur ! Je file le code si sa peut servir.
Code :
|
Marsh Posté le 01-10-2011 à 09:19:10
Tu as juste oublié qu'il y a deux variétés de lignes diagonales possibles...
D'autre part, si tu vérifies pas i+4<NCASE et j+4<NCASE dans l'algo de ta diagonale, tu sors du tableau (et je ne parle pas de la faute de frappe qu'on y lit aussi)
A+,
Marsh Posté le 29-09-2011 à 19:59:30
Bonjour, ou bonsoir celà dépend bien évidement de l'heure à laquelle vous allez lire ce topic et/ou de l'endroit où vous vous situez !
Donc comme dit dans le titre mon problème concerne donc un jeu du morpion, je vais donc vous en dire un peu plus:
Ce jeu donc se déroule sur un tableau 11x11 où les joueurs doivent aligner 5 pion (ou chiffre puisque nous sommes dans une application console).
Etant débutant en C j'ai tout de même réussi à afficher le tableau et à faire jouer les 2 joueurs.
Pour le joueur 1 c'est donc un 1 qui s'affiche lorsqu'il entre les coordonnées où il souhaite jouer, pour le joueur 2 ce sera un 3.
Il me reste donc la fonction, je dirais la plus difficile à coder, celle de la détection d'un suite de 5 "pion".
Ce n'est pas un code tout cracher que j'attend (quoique je ne le refuserais pas) mais plutot une piste pour pouvoir orienté mes recherche, le temp m'etant compté. L'idée serait de parcourir le tableau (à l'aide d'un pointeur je suppose) pour détecter une suite de 5 "pion" et ensuite en changer la couleur (ou le chiffre dans notre cas)... enfin voilà
Je vous laisse quand même un aperçu de mon code, soyez aimable je suis débutant
Cordialement !