Rechercher : dans
Par :

[algorithme] Récursivité langage C

Dernière réponse le 29 déc 2006 à 21:25:20 Guillaume, le 28 déc 2006 à 21:37:38 
 Signaler ce message aux modérateurs

Bonjour,

J'essaie de programmer un jeu de dames avec des règles spéciales, où le joueur doit faire un maximum de prises au cours de son tour.
Voici ce que j'aimerais arriver à faire : si le programme voit qu'il y a une ou plusieurs prises possibles, il demande à l'utilisateur de choisir entre tous les parcours possibles celui qu'il préfère, mais seuls les parcours qui prennent le plus de pions à l'adversaire sont retenus (et affichés).

Je ne sais pas comment partir pour faire une fonction de ce genre. J'avais pensé à une fonction récursive, mais je ne sais pas comment la construire et quoi lui faire renvoyer.

Quelqu'un a-t-il une idée s'il-vous-plait?


But : Si on numérote les abscisses du damier de A à J et et les ordonnées de 1 à 10, on devrait proposer à l'utilisateur de choisir entre plusieurs combinaisons, par exemple (pour 2 prises):
-choix 1 : A1 --> C3 -->A5
-choix 2 : A1 --> C3 -->E5
-choix 2 : E3 --> G5 -->E7
La difficulté est dans le fait qu'à partir d'une position de départ ou d'une position intermédiaire, on peut avoir plusieurs ramifications, et je ne vois pas comment stocker tout ça dans un tableau.

Les positions des pièces sont stockées dans un tableau [10][10]. Ce tableau représente le damier. Par exemple tableau[3][5] représente la case D6. tableau[3][5]=0 si c'est une case vide, 1 s'il y a un pion blanc dessus, etc.

J'ai déjà plusieurs fonctions qui :
- calculent le nombre maximal de prises pour une pièce donnée.
- calculent les choix offerts pour une et une seule prise (par exemple, si un pion peut manger en avant à gauche et à droite, renverra 2, mais ne regarde pas si d'autres prises sont possibles ensuite).

Si quelqu'un a une idée il est le très bienvenu :)

Merci d'avance!

Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « [algorithme] Récursivité langage C » dans :
Les piles en langage C VoirLes piles Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la pile IV. Opérations sur les piles A. Initialisation B. Insertion d'un élément dans la pile C. Ôter un élément de la pile D. Affichage...
Langage C++ - Les types de données VoirLes types de données Les données manipulées en langage C++, comme en langage C, sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître...
Langage C - Les types de données VoirLes types de données Les données manipulées en langage C sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître l'occupation mémoire (le...
Langage C - Les chaînes de caractères VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C, une chaîne...

1

doc manu, le 29 déc 2006 à 00:05:51

Je pense que tu devrais t'interesser aux listes chainées pour le stockage de tes données. Une liste chainee permet de stocker un nombre indéfini de valeurs. En stockant dans une liste chainées des pointeurs vers d'autres listes chainées et ainsi de suite tu peux créer une structure arborescente de données.

Cree une liste chainée contenant tes points de départ.
Ton algorithme recursif devra parcourir cette liste chainée et, creer une liste imbriquée (en s'appelant) chaque fois qu' il y a besoin (existence de suite dans le parcours du pion).

Tu auras certainement besoin d'autres algorithmes recursifs pour exploiter les données ainsi stockées.

Bon courage.

(ps : si tu n'es pas fixé sur le langage, ce serait plus facile en python ou en perl ... les listes font partie intégrante de ces langages).

Répondre à doc manu

2

 Guillaume, le 29 déc 2006 à 21:25:20

Merci, je n'avais pas pensé aux listes chaînées ;-)

(et pour le langage c'est du C mais ces listes sont assez bien expliquées sur ce site cliste )

Répondre à Guillaume