Devine le nombre en bash

Deviner le nombre

Un petit jeu très simple, il faut trouver un nombre, bien sûr il n’est pas parfait mais il fait le boulot.


1 #!/bin/bash
2 #===============================================================================
3
4 limitsup=100                     # nombre maximum possible
5 nombre=0                         # nombre proposé par le joueur
6 nbtentative=0                       # nombre de tentatives effectuées
7 aleatoire=$(( $ % $limitsup ))      # nombre aléatoire, entre 1 et $limitsup
8
9 while [ $nombre -ne $aleatoire ] ; do
10  echo -n "Devinez? " ; read nombre
11  if [ "$nombre" -lt $aleatoire ] ; then
12    echo "... c'est plus grand!"
13  elif [ "$nombre" -gt $aleatoire ] ; then
14    echo "... c'est plus petit!"
15  fi
16  nbtentative=$(( $nbtentative + 1 ))
17 done
18
19 echo "Bravo!! Vous avez deviné $aleatoire en $nbtentative coups."
20
21 exit 0

Ligne par ligne

  • 1 – Le shibang
  • 4 – Définition d’une variable qui sera notre limite supérieur
  • 5 – Définition d’une variable qui contiendra le nombre proposé par le joueur
  • 6 – Définition d’une variable qui contiendra les tentatives du joueur
  • 7 – Définition du nombre à trouver (cette formule n’est pas top du tout car elle prend le PID du script et en fait un modulo, c’est donc très prévisible) il est possible d’utiliser la fonction random du shell mais elle n’est connu que dans le bash.
  • 9 – On commence une boucle qui continuera tant que le nombre donné par le joueur ne sera pas égale avec la valeur de la variable à trouver.
  • 10 – On demande le nombre au joueur, nous l’avons mis à cet endroit, et pas avant, car comme la variable NOMBRE est initialisé à 0 elle est différente du nombre à trouver, donc la boucle commence.
  • 11 – Si la variable donnée par le joueur est plus petit que le nombre aléatoire alors …
  • 12 – Afficher « Le nombre est plus grand » et la boucle repart donc on repose la question
  • 13 – Sinon si la variable donnée par le joueur est plus grand alors …
  • 14 – Afficher « Le nombre est plus petit » et la boucle repart et on repose la question
  • 15 – On ferme les conditions (fi)
  • 16 – Dans la boucle, on incrémente le nombre de tentatives. Et ce chiffre sera incrémenté à chaque boucle.
  • 17 – On fini la boucle
  • 19 – Si on sort de la boucle, c’est que la condition de la boucle est fausse, donc que les deux variables sont égales, et donc on affiche
    « Vous avez gagné, … » et on affiche les deux variables.
  • 21 – Cette ligne permet juste de quitter le programme proprement (0 étant par convention le code retour que tout c’est bien passé »

Fatal error: Uncaught exception 'wfWAFStorageFileException' with message 'Unable to save temporary file for atomic writing.' in /var/www/alternc/c/cinfo/www/courbeil.com/documentation/wp-content/plugins/wordfence/vendor/wordfence/wf-waf/src/lib/storage/file.php:34 Stack trace: #0 /var/www/alternc/c/cinfo/www/courbeil.com/documentation/wp-content/plugins/wordfence/vendor/wordfence/wf-waf/src/lib/storage/file.php(658): wfWAFStorageFile::atomicFilePutContents('/var/www/altern...', '<?php exit('Acc...') #1 [internal function]: wfWAFStorageFile->saveConfig('livewaf') #2 {main} thrown in /var/www/alternc/c/cinfo/www/courbeil.com/documentation/wp-content/plugins/wordfence/vendor/wordfence/wf-waf/src/lib/storage/file.php on line 34