[Ruby] Vérifier l'appui d'une touche.
Dans un article précédent, nous avons vu comment enregistrer la saisie clavier d'un utilisateur et comment vérifier si c'est un entier.
Aujourd'hui nous allons voir comment demander l'appui d'une touche et le vérifier.
Appui d'une touche.
Avant toute chose, il faut utiliser un require.
# Pour pouvoir utiliser STDIN.getch require 'io/console'
On commence par le début, c'est-à-dire demander l'appui d'une touche et on l'enregistre dans une variable.
# On enregistre l'appui dans une variable variable = STDIN.getch
Vérification de l'appui.
Pour vérifier que la touche appuyée est bien la bonne, on peut vérifier la variable avec une condition.
Il faut donc indiquer en unicode la touche que l'on attend.
# Ici nous avons choisi l'unicode de la touche "N" (en majuscule) # On précède l'unicode de \u if variable == "\u004E" puts "C'est bien un N" else puts "C'est pas un N" end
Pour vous aider, voici une page qui résume les touches en unicode.
/!\ À savoir, la touche entrée se dit "carriage return (CR)" et non pas enter. Son unicode est donc 000D.
Pour finir, si l'on veut que l'utilisateur ne puisse pas avancer dans le programme sans avoir saisi la bonne touche, on peut faire un boucle.
Perso je fais comme ça:
puts "Continuer (c) Nouvelle partie? (N)" #amorce de la varibale pour rentrer dans la boucle variable = 0 # Si variable est vide on lance une boucle while variable != nil variable = STDIN.getch # "N" if variable == "\u004E" puts "nouvelle partie" # On purge la variable pour sortir de la boucle variable = nil # "c" elsif variable == "\u0063" puts "continuer" #on purge variable pour sortir de la boucle variable = nil end end
Voila, comme d'habitude ce code perfectible, mais ça fonctionne.
À vous de jouer ;)