Bonjour. Dans le cadre d'un projet de C++ en IUT informatique, et étant débutante car hospitalisée en début de semestre, je fais appel à votre ingéniosité pour m'aider pr ce projet dont voici le sujet:
Problème :écrire l'algorithme du jeu de Saute MoutonSur une ligne de NB cases, on place, à la suite et en partant de la gauche, des pions noirs puis des
pions rouges séparés par une case vide unique. On pose autant de pions noirs que de pions rouges. La configuration de pions n'occupe pas nécessairement toute
la ligne.
But du jeu :Déplacer tous les pions rouges vers la gauche (respectivement tous les pions noirs vers la droite), la case vide occupant à la fin du jeu la case
du milieu de la configuration comme au départ.
Exemple :
configuration initiale : configuration finale gagnante :
1 2 3 4 5 6 7 8 9 10
N N N N R R R R R R R R N N N N
--------------------------------------------------------------------------------
Règles du jeu:
- les pions noirs ne peuvent se déplacer que vers la droite
les pions rouges ne peuvent se déplacer que vers la gauche
- un pion noir peut être déplacé à droite dans la case vide :
- si la case vide est juste à droite de ce pion
- s'il lui suffit de sauter par dessus un seul pion rouge, c'est-à-dire si entre la casevide et lui il n'y a qu'un seul pion rouge.
- un pion rouge peut être déplacé à gauche dans la case vide :
- si la case vide est juste à gauche de ce pion
- s'il lui suffit de sauter par dessus un seul pion noir, c'est-à-dire si entre la casevide et lui il n'y a qu'un seul pion noir.
--------------------------------------------------------------------------------
Fonctionnement:
• A vous de jouer en donnant simplement la position du pion que vous jouez.
• La machine déplace le pion choisi si c'est possible.
• Le jeu s’arrête si vous avez gagné ou si vous avez atteint une situation de blocage. Dans ce cas vous avez perdu!
Comment lire un énoncé de problème dans le but d'écrire l'algorithme correspondant repérer les données proposéesrepérer les résultats attendus
-identifier les contraintes de la tâche
-définir les traitements à réaliser
--------------------------------------------------------------------------------
•Structure de données : Dans un premier temps, se demander quelles structure de données utiliser pour la représentation interne des données
- le plateau de jeu Plateau: tableau de caractères
constante (NbMAX : entier) 10 {nombre max de pions d'une couleur}
type Plateau = tableau [1, 2 x NbMAX + 1] de caractères
variable jeu : Plateau
--------------------------------------------------------------------------------
• Contraintes du jeu
bien comprendre les contraintes du jeu en explicitant lesrègles de façon plus formelle; inventorier les situations possibles.
si pion-rouge
alors si case-gauche est vide
alors déplacement-gauche
sinon si case-gauche-noire et case-suivante est vide
alors déplacement-saut-gauche
sinon si pion-noir
alors si case-à-droite est vide
alors déplacement-droite
sinon si case-droite-rouge et case-suivante est vide
alorsdéplacement-saut-droite
Déplacement ≈ échange de valeurs entre la case vide et la case du pion à jouer.
--------------------------------------------------------------------------------
• Hiérarchie des appels de sous-algorithmes
reformuler l'énoncé en tentant de planifier le travail,"décortiquer" les étapes successives du jeu.
décomposer la tâche en sous-tâches Algorithme schématique
-initialiser le plateau de jeu
- afficher le plateau de jeu
- jouer un coup (si coup proposé est permis)
- rejouer si non fini
- si fini, proposer de refaire une partie
--------------------------------------------------------------------------------
Algorithme et sous-algorithme à réaliser:
Algo principal
initPlateau
affichePlateau
jouerUnCoup finJeu?
rejouer?
nbPionsCorrect?
pionJouable?
coupPermis?
bloqué?
gagné?
permisRouge?
permisNoir?
--------------------------------------------------------------------------------
•donnez des noms évocateurs à vos variables, à vos constantes, à vos sous-algorithmes
•programmez modulairement : chaque bloc de l'algorithme remplit un sous-butélémentaire du problème général
•documentez votre travail : identifiez chaque bloc par un commentaire explicatif
•truffez l'algorithme d'affichages permettant de suivre à la trace l'exécution duprogramme correspondant
•mettez au point module par module votre programme, en construisant des jeux d'essais appropriés à chacun de ces modules
•prévoyez un affichage de contrôle des valeurs saisies aussitôt après la saisie
Des habitudes qu'il est vivement conseillé de prendre !Comment faciliter la mise au point d'un programme
--------------------------------------------------------------------------------
Construction d'un jeu d'essais pour la validation d'un algorithme
explorer tous les cheminements possibles à l'intérieur d'un algorithme
construction à partir de la modélisation informatique
inventorier tous les "cas de figure" des données soumises
prendre en compte : - un cas général (ou plusieurs distingués)
- les cas extrêmes ("effets de bord")
construction à partir de la théorie
--------------------------------------------------------------------------------
Ce qui pourrait m'aider au mieux est (je pense) le code fait mais SURTOUT dûment commenté pour que je puisse l'étudier.
Merci d'avance, en espérant une réponse rapide et qui puisse m'aider un maximum sachant que ce projet est à rendre pour le 3décembre...
Merci d'avance de votre soutien...
+ Kiss