Comment programmer des jeux ludiques comme le jeu nombre mystère

Le jeu nombre mystère, ou encore de la devinette est un jeu facile à coder en python, le principe est le suivant, le programme choisit au hasard un nombre dans un intervalle donné et demande au joueur de le deviner. Et pour aider le joueur, on lui donne des indices en fonction de son niveau, cela peut être des calculs à trous, de la résolution d’équations, révisions des tables de multiplications, … Une multitude de possibilités pour programmer des jeux avec python ou scratch.

Dans cet article je vous montre comment adapter le jeu de devinette pour programmer des jeux mathématiques.

Programmer des jeux mathématiques niveau seconde et troisième.

Effectivement, il est possible d’adapter l’algorithme du jeu de devinette pour le rendre plus ludique et travailler des leçons de mathématiques pour différents niveaux. Il suffit de remplacer la partie du code où on aide le joueur à trouver le nombre mystère.

Voici ce qu’il fait le code Python du jeu de devinette :

Le principe : L’ordinateur choisit un nombre secret entre 1 et 20, et vous devez le deviner en maximum 2 essais.

Le déroulement :

  1. Initialisation : L’ordinateur tire au sort un nombre entre 1 et 20
  2. Premier essai : Vous proposez un nombre
  3. Réaction selon votre proposition :
    • Trop petit → Il vous donne un indice mathématique : « Si tu ajoutes 2 fois mon nombre à ton nombre, tu obtiens X »
    • Trop grand → Autre indice : « Si tu ajoutes 3 fois mon nombre à ton nombre, tu obtiens X »
    • Correct → Vous avez gagné !
  4. Deuxième essai : Si vous n’avez pas trouvé du premier coup, vous pouvez reproposer un nombre
  5. Résultat final :
    • Si vous trouvez au 2ème essai → « Félicitations en 2 essais ! »
    • Si vous ne trouvez pas → « Dommage, c’était [le nombre] »

Exemple concret :

  • Nombre mystère : 15
  • Vous proposez : 10 (trop petit)
  • Indice : « Si tu ajoutes 2×15 à 10, tu obtiens 40 »
  • Vous pouvez calculer : 40 – 10 = 30, donc 30 ÷ 2 = 15 !

C’est un petit jeu éducatif qui mélange hasard, logique et calcul mental.

En effet, dans le code du jeu de devinette présenté précédemment, l’aide qu’on propose au joueur est basée sur la résolution des équations de 1er degré. Ce type d’activité est compatible avec les cours de mathématique de 2nd (lycée) ou de la troisième (fin de collège).

Programmer des jeux niveau primaire

Pour initier à la programmation, et stimuler la curiosité des élèves, niveau primaire (cycle 1 et 2). On peut ajuster le programme pour travailler les additions et soustractions en proposant des calculs à trou. Il suffit de remplacer la ligne de code de proposition d’aide par la ligne de code suivante :

aide = "Si tu ajoutes le nombre mystère à ",nUtil, " tu dois trouver", nMyst + nUtil

au fait, dans cette ligne j’ai créé une nouvelle variable que j’ai appelée aide, et que je compte changer en fonction de la leçon que je veux travailler. Il s’agit là du calcul à trous, donc addition soustraction.

Si par exemple je devais travailler les multiplications divisions, je pourrais le faire de différentes manières.

La première façon, la plus simple, je mettrai un calcul à trou en multiplication, la variable aide prendra la forme suivante :

aide = "Si tu multiplies le nombre mystère par ",nUtil, " tu dois trouver", nMyst * nUtil

Comment programmer des jeux évolutifs

Cependant, en fonction du niveau de l’élève, il faudra penser à bien borner l’intervalle du choix du nombre mystère. Si l’objectif est de réviser les tables de multiplication, l’intervalle [1, 10] est suffisant. En revanche si l’objectif est d’apprendre à poser des calculs de multiplication, on peut élargir l’intervalle à des plus grandes valeurs.

Créer un jeu mathématique pour travailler la division posée

Par ailleurs, on peut complexifier un peu le jeu pour travailler les divisions posées avec un reste. Pour ce faire on peut partir du principe que le dividende est égale au diviseur multiplié par le quotient et le tout additionné au reste (D = d*Q + R).

Avec :

D : dividende ; d : diviseur ; Q : quotient ; et R : reste.

  • On peut donc proposer que le nombre mystère soit égale au résultat de la division, le quotient).
  • On peut faire en sorte que le diviseur soit compris entre 3 et 9, pour ne travailler que les divisions à un chiffre. On utilise donc la fonction randint(3, 9) de python. 
  • Pour qu’il ait un reste on peut choisir R de manière à ce qu’il soit strictement inférieur au diviseur. Là aussi on peut utiliser la fonction randint(0, d-1).
  • Le dividende sera bien sûr calculé selon la relation citée ci-dessus (D = d*Q + R)

Voici une proposition de la ligne d’aide :

d = randint(3, 9)
Q = nMyst
R = randint(0, d-1)
D = d*Q + R
aide = "le nombre mystère = ",D, " divisé par ", d

Enfin, on peut créer une sorte de menu où le joueur peut choisir le niveau de complexité du jeu : très facile=1 ; Facile = 2 ; moyen = 3 ; difficile = 4 ; Expert = 5.

Le programme python du jeu de devinette

Ainsi la nouvelle version du code est la suivante :

from random import randint

nbrMax = 20
nMyst = randint(1,nbrMax)
print("J'ai choisi un nombre mystère entre 1 et ",nbrMax, " à toi de le deviner")
nUtil = int(input("Propose un nombre : "))

print("Niveau très facile : taper 1 ")
print("Niveau facile : taper 2 ")
print("Niveau moyen : taper 3 ")
print("Niveau difficile : taper 4 ")
print("Niveau Expert : taper 5 ")

niv = int(input("Choisi le niveau qui te convient :"))
if niv == 1:
    aide = "Si tu ajoutes le nombre mystère à ",nUtil, " tu dois trouver", nMyst + nUtil
elif niv == 2:
    aide = "Si tu multiplies le nombre mystère par ",nUtil, " tu dois trouver", nMyst * nUtil
elif niv == 3:
    aide = "le nombre mystère est égale au résultat de division de ",nUtil, " tu dois trouver", nMyst * nUtil
elif niv == 4:
    d = randint(3, 9)
    Q = nMyst
    R = randint(0, d-1)
    D = d*Q + R
    aide = "le nombre mystère = ",D, " divisé par ", d
elif niv == 5:
    aide = "deux fois et demi le nombre mystère + ",nUtil, " = ", 2.5*nMyst + nUtil

if nUtil < nMyst:
    print("Le nombre est trop petit")
    print("Voici une indication")
    print(aide)
    nUtil2 = int(input("Propose un autre nombre : "))
elif nUtil > nMyst:
    print("Le nombre est trop grand")
    print("Voici une indication")
    print(aide)
    nUtil2 = int(input("Propose un autre nombre : "))
else:
    print("Félicitations (°_°)! Tu as trouvé ",nMyst," mon nombre mystère.")
    nUtil2 = 99 + nbrMax
if nUtil2 == nMyst and nUtil != nMyst :
    print("Félicitations ! Tu as trouvé ", nMyst, " mon nombre mystère en 2 essais!")
elif nUtil2 != nMyst and nUtil2 != 99 + nbrMax:
    print("Dommage !^_^! tu n'as pas trouvé.")
    print("Mon nombre mystère est : ",nMyst,".")
input("appuyez sur une touche ...")

Maintenant, c’est à vous de jouer ! 🎮

Ce code python de jeu de maths fonctionne parfaitement, mais imaginez le potentiel si vous lui donniez une touche personnelle ! Améliorer l’interaction et fluidifier l’expérience utilisateur pourrait transformer ce simple jeu en véritable projet captivant.

Votre mission : Copiez ce code et donnez-lui vie ! Ajoutez des emojis, soignez les messages d’accueil, créez des animations avec time.sleep(), utilisez des caractères spéciaux pour encadrer vos textes… Les possibilités sont infinies et l’apprentissage garanti.

Partagez vos créations ! Montrez-nous vos améliorations, posez vos questions, inspirez la communauté. Qui sait ? Votre version pourrait bien devenir LA référence ! 🚀

Alors, prêt à relever le défi ?

Si vous avez aimé l'article vous êtes libre de le partager :)

Laisser un commentaire