Existe-t-il un moyen de créer un système de points de contrôle dans des fichiers batch? [dupliquer]
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
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 #money
et #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.
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