Existe-t-il un moyen de créer un système de points de contrôle dans des fichiers batch? [dupliquer]

Dec 20 2020

Existe-t-il un moyen de créer un système de points de contrôle dans des fichiers batch? Je m'enseigne moi-même et crée un jeu de type RPG basé sur du texte, mais si le programme est fermé, il recommence au tout début du code, sans aucune progression enregistrée. Je veux créer un jeu complexe à long terme, mais je ne veux pas avoir à faire face à un redémarrage du jeu à chaque fois. Existe-t-il un moyen d'enregistrer la progression afin que vous puissiez rouvrir le programme et redémarrer OU reprendre là où vous vous étiez arrêté, avec tous les choix précédents intacts?

Réponses

1 Magoo Dec 20 2020 at 13:59

La méthode de sauvegarde / rechargement la plus simple est probablement la suivante:

Réservez un caractère (par exemple #) à utiliser comme premier caractère de toutes les variables que vous souhaitez enregistrer.

donc...

set #points=35
set action=3
set #money=22

Pour enregistrer toutes les #variables, utilisez

set #>filename

ce qui sauverait #moneyet #points, mais pasaction

Pour recharger utiliser

for /f "delims=" %%a in (filename) do set "%%a"

qui rechargera toutes les variables enregistrées dans le fichier - qui ne sont bien sûr que des #variables.

T3RR0R Dec 20 2020 at 16:25

En plus de la réponse de magoo concernant une méthode de sauvegarde / chargement très efficace, (avec une légère modification): le scripting des profils utilisateur peut être fait comme ceci:

@Echo off
rem /* predefine your key variables prior to this loop */
:name :# load point
 Set /P "name=Enter your name: "
 If Not "%name%" == "" (
rem /* If character exists; load */
  If Exist "%~n0_%name%.bat" (
   Call "%~n0_%name%.bat"
rem /* Initialise character save using predefined variables if character new */
  ) Else ( Call :Save )
rem /* Force Assignment of name variable */
 ) Else ( Goto name )
===============================================
::: Script body
::: End of Script
Goto :Eof
===============================================
:Save :# function
rem /* variation on magoo's method of saving */
 (For /F "Delims=" %%G in ('Set #')Do Echo/Set "%%G")>"%~n0_%name%.bat"
Exit /B 0