Contenu principal
Chapitre 6 · Projets › Leçon 1 sur 4

Crée un jeu interactif

Il reste de nombreuses notions et fonctions prédéfinies à découvrir et chaque projet de ce chapitre va te montrer de nouveaux aspects du langage Python.

Dans cette leçon je vais te montrer comment rendre tes programmes interactifs et pour ça tu vas créer un jeu, le jeu du juste prix. L'ordinateur choisi un nombre entre 0 et 100 et on doit deviner le nombre.

  1. 1

    Pour commencer tu vas tester le jeu. J'ai créé pour ça une fonction jeu. Lorsque tu appelles cette fonction, une boîte de dialogue apparaît et te demandes de choisir un nombre. Cette boîte réapparaît tant que tu n'as pas trouvé le nombre mystère, en indiquant si ton estimation est trop petite ou trop grande.

    Appelle la fonction jeu dans la console (sans argument) et fais une partie du juste prix.

    Solution

    Il suffit d'appeler la fonction jeu et de faire une partie.

    >>> jeu()
    gagné
  2. 2

    Pour ajouter de l'interactivité dans un programme on utilise la fonction input. Cette fonction est prédéfinie dans Python, donc il n'est pas nécessaire de l'importer d'un module.

    Par exemple input("choisi un nombre :") fait s'afficher une boîte de dialogue avec le message choisi un nombre :.

    Appelle la fonction input dans la console en faisant en sorte que la boîte de dialogue affiche le message Quel est ton nom ?

    Solution

    On appelle la fonction input avec le bon message en argument. La boîte de dialogue apparaît et on peut alors saisir une valeur, qui s'affiche ensuite dans la console. J'ai entré Pikachu :

    >>> input("Quel est ton nom ?")
    Pikachu
  3. 3

    Pour que le programme soit pleinement interactif il nous faut un moyen d'accéder à la valeur saisie par l'utilisateur dans la boîte de dialogue.

    La fonction input renvoie justement à la fin de son exécution la valeur saisie par l'utilisateur. C'est d'ailleurs pour ça que la valeur s'est affichée automatiquement dans la console à la question précédente. On peut alors récupérer cette valeur dans une variable.

    Par exemple en faisant nom = input("Quel est ton nom ?") lorsqu'une valeur est saisie et que la boîte de dialogue est validée, la fonction input renvoie cette valeur qui est ensuite affectée à la variable nom. On peut alors accéder au nom de la personne via cette variable.

    À toi de jouer. Dans l'éditeur, crée une variable nom qui contient une valeur saisie de manière interactive grâce à la fonction input comme au paragraphe précédent. Tu peux personnaliser le message. Ensuite affiche un message du type Bonjour à toi **** à l'aide d'une f-string en remplaçant les étoiles par le nom de la personne.

    Solution

    On crée tout d'abord une variable nom et on l'affecte de manière interactive à l'aide de input en faisant

    nom = input("Comment t'appelles-tu ?")

    Ce code fait apparaître une boîte de dialogue avec le message Comment t'appelles-tu ? et la valeur saisie par l'utilisateur est ensuite affectée à la variable nom

    Une fois que l'on a le nom de la personne dans la variable nom, on peut afficher un message d'accueil personnalisé avec une f-string.

    nom = input("Comment t'appelles-tu ?")
    print(f"Bonjour à toi {nom}")
  4. 4

    Tu as maintenant tous les ingrédients pour créer le jeu interactif ! Voici la logique de ce programme :

    • l'ordinateur choisit un nombre de manière aléatoire
    • le joueur fait une estimation (interactive) du nombre mystère
    • on compare l'estimation et le nombre mystère
    • si le joueur a gagné le programme s'arrête, sinon un indice s'affiche et le joueur refait une estimation.

    Dans la suite tu va implémenter ces différentes étapes. Pour commencer il faut générer un nombre aléatoire. Pour ça on utilise la fonction randint du module random que tu as déjà rencontré.

    Importe la fonction randint dans ton programme et créé une variable nombre qui contient un nombre choisi aléatoirement entre 0 et 100. Tu peux effacer le code de la question précédente.

    Solution

    On commence par importer la fonction randint du module random

    On crée ensuite une variable nombre contenant un entier choisi aléatoirement entre 0 et 100 inclus à l'aide de randint. Avec la fonction randint les bornes sont incluses, à la différence de la fonction range. Donc on peut appeler randint(0,100) pour obtenir un nombre aléatoire entre 0 et 100 inclus.

    from random import randint
    
    nombre = randint(0,100)
  5. 5

    En-dessous de la variable nombre crée une variable choix qui va contenir le nombre choisi par le joueur. Cette variable est affectée de manière interactive grâce à input. Affiche un message pour guider le joueur dans son choix, par exemple Choisi un entier entre 0 et 100

    Solution

    On affecte une valeur à la variable choix grâce à la fonction input. L'argument de la fonction input est le message qui s'affiche dans la boîte de dialogue.

    from random import randint
    
    nombre = randint(0,100)
    choix = input("Choisi un nombre entre 0 et 100")
  6. 6

    Il reste à comparer les variables choix et nombre. Le soucis c'est que input ne renvoie pas un nombre mais une chaîne de caractères.

    Pour t'en rendre compte fais le test dans la console. Si tu exécutes n = input("nombre") et que tu tapes le nombre 3 dans la boîte de dialogue, alors n n'est pas égale au nombre 3 mais à la chaîne de caractères '3'

    >>> n = input('nombre')
    >>> n == 3
    False
    >>> n == "3"
    True

    L'astuce c'est de convertir n en un entier en utilisant la fonction prédéfinie int (pour integer, entier en anglais). Par exemple int("3") renvoie le nombre 3.

    >>> n = int(input('nombre'))
    >>> n == 3
    True
    

    Convertis le nombre choisi par le joueur en un entier à l'aide de la fonction int. Ensuite utilise une instruction conditionnelle pour tester l'égalité entre choix et nombre : s'il y a égalité, affiche le message gagné, sinon affiche le message perdu. Il n'y a qu'un seul essai possible pour le moment.

    Solution

    On commence par convertir la variable choix en un nombre à l'aide de la fonction int.

    Ensuite on utilise une instruction conditionnelle : si nombre et choix sont égaux on affiche gagné, et perdu sinon.

    from random import randint
    
    nombre = randint(0,100)
    choix = int(input("Choisi un nombre entre 0 et 100"))
    
    if nombre == choix:
    	print("gagné")
    else:
    	print("perdu")
  7. 7

    Dernière étape : le joueur peut réessayer s'il s'est trompé. À chaque fois qu'il se trompe, on affiche une nouvelle boîte de dialogue interactive avec un indice comme Trop petit ou Trop grand.

    Comme il faut répéter des actions similaires, on va utiliser une boucle. On ne sait pas à l'avance combien de fois le joueur va se tromper, donc on utilise une boucle while. Tant que nombre est différent de choix, il faut demander au joueur sa nouvelle estimation. Ceci permet de réaffecter la variable choix de manière interactive en affichant un indice adapté.

    Égalité et différence

    En Python on teste l'égalité de deux variables avec == et on teste si elles sont différentes avec !=

    >>> 1 == 2
    False
    >>> 1 != 2
    True

    Finis de coder le jeu, en remplaçant l'instruction conditionnelle de la question précédente par une boucle while comme décrit dans le paragraphe précédent. Pour avoir un message adapté il va falloir tester si le nombre choisi est trop petit ou trop grand. N'oublie pas de le convertir en un entier et affiche le message Gagné ! à la fin.

    Solution

    On commence par enlever l'instruction conditionnelle de la question précédente qui ne permet de faire qu'un seul essai. On la remplace par une boucle while qui s'exécute tant que les variables choix et nombre sont différentes. C'est-à-dire tant que choix != nombre

    Dans le corps de la boucle while, puisque nombre et choix ont des valeurs différentes, il n'y a donc que deux possibilités : ou bien l'estimation est trop petite, ou bien elle est trop grande.

    Si l'estimation du joueur est trop petite alors on affiche une nouvelle boîte de dialogue pour réaffecter la variable choix avec une nouvelle estimation. On en profite pour donner un indice dans le message de la boîte de dialogue.

    Si l'estimation est trop grande on adapte la logique précédente.

    Enfin lorsque le joueur trouve le nombre mystère, l'exécution sort de la boucle while et les lignes suivantes sont lues. On affiche alors le message Gagné !

    from random import randint
    
    nombre = randint(0,100)
    choix = int(input("Choisi un nombre entre 0 et 100"))
    
    while nombre != choix:
      if choix < nombre:
        choix = int(input("Trop petit"))
      else:
        choix = int(input("Trop grand"))
    
    print("Gagné !")

Chargement...

Collecte des fichiers...

>>>