Connection Menu Contenu

1788
membres
00h53
06
février
2012

Pseudo

Mot de passe

Accueil FORUM
repère : ROMMY Prod > Le tutoriel PYTHON > Exercices - chapitre 1 à 5

Exercices - chapitre 1 à 5

Enfin une petite pause dans votre apprentissage du langage python.
Vous allez enfin programmer de vrais programmes. Dans cette partie, vous en trouverez trois.
Je vous conseil de faire le premier avant, car le niveau des exercices est de plus en plus difficile (il faut de plus en plus de réflexion). Par contre le morpion et le rpg sont de même niveau je trouve, donc vous pourrez les faire dans l'ordre que vous voulez.

Je vous rappelle comment se présente un programme (on peut le présenter de manière différente, par exemple en mettant toutes les fonctions dans un autre fichier):

  • # -*- coding: cp1252 -*-       (Pour accepter les accents)
  • Les importations de modules (ensemble de fonctions)

Définitions des fonctions et procédures.

Le programme commence ici et suit toutes les instructions qui lui seront demandées.

Essayez de réaliser les jeux avant de lire les aides. Si vous n'y arrivez pas lisez l'aide. Et si vous n'y arriver toujours pas, vous pouvez vous aider de la correction.
Ceci pour deux raisons : la première c'est que vous allez progresser plus vite si vous cherchez, la deuxième c'est parce que le programme peut être codé de plusieurs façon différente.


De plus je vous conseille aussi de garder votre code une fois terminé. Car on fera des améliorations avec les prochains cours. Et parce qu'il faut toujours garder ses codes sources au cas où on voudrait les modifier, distribuer, etc...

Le jeu du plus ou moins

Ce jeu consiste à trouver un nombre pris au hasard entre 1 et 100. Vous proposez un nombre, l'ordinateur le compare à celui à trouver, si vous avez trouvé le jeu s'arrête sinon l'ordinateur vous aide en disant si le nombre que vous proposez est plus petit ou plus grand que celui à trouver. Et vous pouvez retenter votre chance mais attention, vous n'avez que 10 tentatives !!!

Voici ce à quoi ça va ressembler :
exercice du plus ou moins
Démonstration du jeu plus ou moins
Vous savez ce qu'est le jeu donc maintenant vous devez penser à ce que vous allez faire, au nombre de variables, aux fonctions que vous allez créer et surtout comment vous allez faire le programme.
Objectifs :
  • Tire au sort un nombre entre 1 et 100
  • Tant que l'utilisateur à des coups, lui permettre de proposer un nombre et l'aider en disant si c'est + ou -, ou s'il a trouvé.
Pour programmer ce jeu, vous devez donc récupérer un nombre entier aléatoire au début du programme. Pour ce faire vous devrez importer le module random et récupérer le nombre dans une variable en utilisant la fonction choice(range(x,y+1)).
Par exemple on veut un nombre entier entre 1 et 100, x vaudra 1 et y+1 vaudra 101.
AIDE : Il nous faut donc en plus une variable pour la proposition de l'utilisateur et une pour le nombre de tentatives. On sortira de la boucle principale quand on a trouvé le nombre ou quand l'on a plus de tentatives.
Amélioration possible:
  • Quand le chiffre est trouvé ou qu'il n'y a plus de coups possibles, vous pourrez demander à l'utilisateur s'il veut recommencer. (Ceci éviterait de relancer le programme).
  • Vous pourrez corser(faciliter) le jeu en demandant un chiffre en 1 et 1000 par exemple.
  • Vous pourrez corser(faciliter) le jeu en demandant de faire moins de coups (infinité de coups).
  • Donner la possibilité à l'utilisateur de choisir entre plusieurs niveaux (ex: entre 1 et 100, entre 1 et 500, entre 1 et 1000, etc...)

Le morpion

Ce jeu est très connu, il s'agit d'aligner 3 symboles identiques dans un carré de 3*3.
C'est un jeu à 2 joueurs, chacun son tour un joueur place un symbole (X ou O). Si l'un des joueurs arrive à aligner trois symboles (horizontalement, verticalement ou diagonalement), il gagne la partie sinon c'est égalité.

Voici ce à quoi ressemble ce jeu :
exercice du morpion
Démonstration du morpion
Les objectifs :
  • Mémoriser les noms des joueurs
  • Demander aux joueurs quand c'est leur tour, où ils désirent placer un symbole.
  • Tester si la position est déjà occupée. Si c'est le cas, le joueur rejoue. Sinon on place le symbole
  • Tester à chaque tour si trois symboles sont alignés. Tester horizontalement, verticalement, diagonalement. Il faut arrêter le jeu si c'est le cas.
  • Afficher le morpion à chaque tour.
  • Tester si les 9 cases sont occupées, ce qui signifie une égalité. Il faut arrêter le jeu si c'est le cas.
Quand vous demandez au joueur de donner un emplacement, il va sûrement vous répondre en minuscule (regardez l'image). Pour éviter de faire des tests pour rien (ex: tester s'il a tapé A1 ou a1), on va transformer sa réponse en majuscule et tester seulement avec les majuscules (ex: tester s'il a tapé A1).
Imaginons que la variable de sa réponse est nommée "case". Pour transformer "case" en majuscule, on va importer le module string et utiliser la fonction upper(case) de la manière suivante :
case = upper(case) ou case = string.upper(case) en fonction de l'importation que vous avez faite.
Si vous tapez des majuscules, rien ne se passe.
AIDE :
  • Vous devez créer 9 variables pour les cases du morpion. Elles auront pour valeur initiale " " puis "X" ou "O" en fonction du joueur.
  • Pour savoir à qui est le tour, créer une variable qui est initialisé avec la valeur 1 pour dire que c'est au joueur 1. Quand il a joué, on lui donne la valeur 2 pour dire que c'est au joueur 2 de jouer. Puis on donne la valeur 1, et ainsi de suite ...
  • Pour tester si les 9 cases sont remplies, créer une variable qui augmente à chaque placement de symbole, et vous dites égalité quand la valeur atteint 9.
  • Vous devrez créer plusieurs fonctions ou procédures (une pour l'affichage, le placement, la vérification, ...).
Amélioration possible:
  • Si vous avez du courage, vous pouvez faire une intelligence artificielle pour pouvoir jouer contre l'ordinateur. Il faudra alors imaginer toutes les combinaisons possibles en fonctions de la situation. A moins que vous vouliez que l'ordinateur soit nul et mette au hasard.

Un RPG sous forme de texte

Pour ceux qui ne connaissent pas ce qu'est un RPG. Un RPG est un jeu de rôle ou l'on contrôle un ou plusieurs personnages. Une histoire le(s) fait(font) voyager dans plusieurs lieux différents et tout le long du voyage, il(s) se fait(font) attaquer par des monstres ou des autres personnages. Quand il(s) sort(ent) vainqueur des combats, il(s) gagne(nt) des points d'expérience.

Le jeu que je vais vous demander de faire est un combat, basé sur le système de tour, chacun agit seulement quand c'est son tour.
Lors de ce combat, vous subirez des attaques de votre ennemi à chacun de ses tours. Puis quand c'est vos tours, vous devrez choisir entre plusieurs actions : Voici ce à quoi ça va ressembler :
exercice du plus ou moins
Démonstration du jeu rpg demandé
Les objectifs sont donc :
  • Créer deux personnages (l'ennemi et vous), ils auront chacun un nom, des points de vie(HP) (ex : 100), une arme qui fait un certain nombre de dégâts (ex: 5), des points de force (ex: 2). Ces données peuvent être identiques ou différentes pour les deux personnages.
  • Faire en sorte que les personnages agissent chacun leur tour. (L'ennemi attaque toujours)
  • Permettre à l'utilisateur de choisir entre les quatre actions principales quand c'est son tour.
  • Attaquer l'autre personnage (que ce soit l'ennemi ou vous) et lui enlever des HP
  • Se soigner en rajoutant des points de vie mais sans dépasser la limite(HP de départ). (Action spécifique à votre personnage)
  • Changer d'arme (prendre la même que l'ennemi ou autre). (Action spécifique à votre personnage)
  • Ne pas finir le combat et partir quand on fuit. (Action spécifique à votre personnage)
  • Terminer le jeu quand l'un des personnage meurt, ou si on fuit.
Lorsqu'un personnage attaque, il cause des dégâts à l'autre. Ces dégâts sont calculés en fonction des dégâts de l'arme (ici 5) et de la force du personnage (ici 2). Les dégâts seront donc de 7 HP si ont fait une addition ou 10 HP si on fait une multiplication. (C'est à vous de choisir si vous voulez qu'il y ait plus de dégâts ou non).Par contre l'ennemi avec 6(arme) et 1(force), il causera soit 7 HP ou soit 6 HP.
AIDE : Je vous conseille de séparer votre code en plusieurs parties grâce aux fonctions ou procédures (une fonction pour le Menu, l'Attaque, le soin, les Dégâts des Armes, etc...) Chaque fonction va gérer une seule chose mais peut utiliser une autre fonction.
Par exemple la fonction "menu" fera appel à 3 autres fonctions, vous devinez lesquels ???
Et bien !!! Celle pour attaquer, se soigner et changer d'arme. Il est bien sûr possible de faire une fonction pour fuir, mais moi je ferai sans.
Amélioration possible:
  • Faire que les personnages ont des points de résistance, qui réduiraient les dégâts reçus.
  • Faire que l'on peut recommencer un combat.
  • Si vous faite l'amélioration juste au-dessus, on peut rajouter un système d'expérience. Quand on gagne un combat, on gagne de l'expérience, et lorsqu'un certain nombre de points d'expérience est passé, les points de force sont augmentés de un et l'expérience revenue à 0.
  • Faire en sorte qu'à tel moment du combat, l'ennemis fait autre chose qu'attaquer.
  • Faire que la chance joue un rôle dans les dégâts causé à l'autre. La chance doublera ou annulera les dégâts. (C'est ceux que vous voyez sur l'image, j'ai du utiliser la fonction uniform(0, 2) du module random. Cette fonction choisie un chiffre réel (à virgule ou non) entre 0 et 2). Si vous faites cela, il faudra transformer les dégâts en nombre entier avec int(), car on ne peut pas enlever 5,5 HP par exemple.
  • Rajouter de nouveaux personnages, en gardant le système de tour.

Conclusion

Vous avez enfin pu coder de vrai programme avec ce chapitre. Dans quelques chapitres, nous allons les améliorer ou du moins améliorer le codage.

Le chapitre qui suit parlera des tableaux en programmation.


chapitre precedent sommaire chapitre precedent
repère : ROMMY Prod > Le tutoriel PYTHON > Exercices - chapitre 1 à 5
Qui suis-je ? Contact Charte du site
Plan du site Accessibilité du site

Copyright © ROMMY Production
Le cours, les jeux et les logiciels sont la propriété de son auteur.
Toute reproduction totale ou partielle du cours est interdite sans l'accord de l'auteur.
La modification des jeux et logiciels est interdite sans l'accord de l'auteur.