Garder des données d'une exécution à l'autre
Quand un programme se termine, toutes ses variables disparaissent. Comment retenir un meilleur score d'une partie à l'autre ? Avec la fonction paramètre, qui enregistre des valeurs sur l'ordinateur.
Écrire une valeur
Avec trois arguments, paramètre enregistre une valeur. Elle est rangée dans une section (le nom de ton programme, par exemple) et repérée par une clé :
paramètre('monjeu', 'joueur', 'Alice')
paramètre('monjeu', 'meilleur_score', 52)
paramètre('monjeu', 'musique', vrai)
affiche 'Valeurs enregistrées.'
On peut enregistrer un nombre, un texte ou un booléen. Si la clé existe déjà, sa valeur est remplacée.
Lire une valeur
Avec deux arguments, paramètre relit la valeur enregistrée. Exécute ce second programme après le premier :
nomJoueur est un texte
record est un nombre
nomJoueur vaut paramètre('monjeu', 'joueur')
record vaut paramètre('monjeu', 'meilleur_score')
affiche nomJoueur + ' détient le record : ' + record + ' points'
Les valeurs sont toujours là, alors que le premier programme est terminé depuis longtemps ! Le type est conservé : un nombre est relu comme un nombre, un texte comme un texte.
Question : Combien d'arguments faut-il donner à paramètre pour lire une valeur ? — 2. Deux arguments (section et clé) pour lire ; trois (section, clé, valeur) pour écrire.
La toute première fois
Lire une clé qui n'a jamais été enregistrée provoque une erreur. Or, au premier lancement, rien n'existe encore. On entoure donc la lecture d'un essayer, et on donne une valeur de départ dans le attraper :
record est un nombre
essayer
record vaut paramètre('monjeu', 'meilleur_score')
attraper
record vaut 0
paramètre('monjeu', 'meilleur_score', record)
fin essayer
affiche 'Record actuel : ' + record
Au premier lancement, la lecture échoue : le bloc attraper met le record à 0 et l'enregistre. Aux lancements suivants, la lecture réussit.
Un jeu avec meilleur score
// Lire le record (0 la première fois)
record est un nombre
essayer
record vaut paramètre('lancer', 'record')
attraper
record vaut 0
fin essayer
affiche 'Record à battre : ' + record
// Jouer : le total de trois dés
total est un nombre vaut 0
pour i de 1 à 3
total ajoute hasard(1, 6)
fin pour
affiche 'Tu as fait ' + total + ' points.'
// Enregistrer si le record est battu
si total > record alors
paramètre('lancer', 'record', total)
affiche 'Nouveau record !'
fin si
Relance le programme plusieurs fois : le record monte peu à peu, et il est retenu d'une exécution à l'autre.
Seuls les nombres, les textes (255 caractères au plus) et les booléens peuvent être enregistrés. Un tableau ou un enregistrement est refusé.
En résumé
paramètre(section, clé, valeur) enregistre une valeur sur l'ordinateur.paramètre(section, clé) la relit, avec son type d'origine.- La première lecture se fait dans un
essayer ... attraper, avec une valeur de départ. - Idéal pour un meilleur score, un niveau atteint ou un réglage.