Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.

Forum Casio - Vos tutoriels et astuces


Index du Forum » Vos tutoriels et astuces » Faire une sauvegarde transparente en Basic
Dark storm En ligne Labélisateur Points: 11538 Défis: 176 Message

Faire une sauvegarde transparente en Basic

Posté le 28/10/2018 11:14

Dans un jeu, il est très appréciable que la détection de la sauvegarde soit transparente pour le joueur. Par exemple, si le jeu n'a jamais été lancé, on propose de commencer une partie. Sinon, on lance automatiquement celle en cours.

En Basic, il existe une méthode assez simple pour arriver à produire ce comportement sans provoquer d'erreur, grâce aux noms de listes.

Le principe est le suivant :
1. À chaque lancement du programme, on met un nom dans la case 0 de la liste de sauvegarde
2. On teste ensuite si la case 1 est nulle
3. Si c'est le cas, il n'y a pas de sauvegarde. Si ce n'est pas le cas, il y en a une
4. Lors de la sauvegarde, on met une valeur non nulle dans la case 1

Exemple :
# PGRM JEU
"SAVE"→List 1[0]

If List 1[1] = 0
Then 1→List 1[1]
"Bienvenue dans le monde de PC"
Else "Content de vous revoir, aventurier"
IfEnd

List 1[1]→N
"Vous êtes au niveau"
N◢
N+1→N
"Fin du tour, vous êtes au niveau"
N◢
N→List 1[1]


Facile non ?


Hackcell Hors ligne Membre Points: 1405 Défis: 11 Message

Citer : Posté le 28/10/2018 11:16 | #


Merci, ça vient de me rappeler que j'avais une dernière feature à implémenter dans mon programme
Lephenixnoir Hors ligne Administrateur Points: 20789 Défis: 143 Message

Citer : Posté le 28/10/2018 11:18 | #


Ah, merci pour la référence. C'est un des trucs que j'avais découverts indépendamment... comme la méthode pour supprimer des pass avec E-CON2.
Alexot En ligne Membre Points: 539 Défis: 18 Message

Citer : Posté le 28/10/2018 14:18 | #


Technique très utile! Mais j'aimerais ajouter qu'elle ne marche pas si la liste est déjà utilisée et que la case 1 est non nulle. Pour pallier à ce problème, on peux au lieu de vérifier si la case 1 est non nulle, vérifier si la case 1 vaut une valeur prédéfinie (exemple : 123321) puis si elle vaut celle valeur, il y a une sauvegarde, sinon, il n'y a pas de sauvegarde, dans ce cas, on peux alors vérifier si la liste n'a qu'une case qui vaut 0, dans ce cas on initialise la sauvegarde, sinon on affiche un message demandant si on peux écraser la liste en question par la sauvegarde du jeu.
Exemple :
# PGRM JEU
"SAVE"→List 1[0]

If List 1[1] ≠ 123321
Then
(List1 [1] = 0 And Dim List 1 = 1) -> A
If Not A
Then
"La liste 1 est déjà utilisée, sauvegarder quand même(1:Oui, 0:Non)"
?->A
Ifend
If A
Then
{123321,1} -> List 1
"Bienvenue dans le monde de PC"
Else
Stop
Ifend
Else "Content de vous revoir, aventurier"
IfEnd

List 1[2]→N
"Vous êtes au niveau"
N◢
N+1→N
"Fin du tour, vous êtes au niveau"
N◢
N→List 1[2]

Cliquez pour découvrir
Cliquez pour recouvrir
2b 5b 2d 2d 2d 2d 2d 3e 2b 2b 2b 3c 5d 3e 2b 2e 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2e 2e 2d 2d 2d 2d 2e 2b 2b 2b 2e 2b 5b 2d 2d 3e 2b 3c 5d 3e 2e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2e 2e 2b 5b 2d 2d 3e 2b 2b 2b 2b 2b 3c 5d 3e 2b 2e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2e 2b 2b 2b 2b 2b 2b 2e 2d 2e 2b 2e 2d 5b 2b 2b 3e 2d 2d 2d 3c 5d 3e 2e 2b 2b 2b 5b 2d 3e 2b 2b 3c 5d 3e 2e 2b 2b 2b 2e 5b 2d 3e 2b 2b 2b 3c 5d 3e 2e 5b 2d 2d 2d 3e 2b 3c 5d 3e 2d 2e 2d 5b 2d 3e 2b 2b 2b 2b 2b 2b 3c 5d 3e 2d 2e 2d 5b 2d 2d 3e 2b 2b 2b 3c 5d 3e 2d 2e 2b 5b 2b 2b 3e 2d 2d 2d 3c 5d 3e 2e 5b 2d 2d 2d 3e 2b 2b 3c 5d 3e 2d 2e 2d 5b 2d 2d 3e 2b 3c 5d 3e 2d 2d 2e 2b 5b 2d 2d 3e 2b 2b 2b 3c 5d 3e 2e 2b 2b 2b 5b 2d 3e 2b 2b 2b 2b 3c 5d 3e 2d 2e 3e 2b 5b 2d 2d 2d 3e 2b 2b 3c 5d 3e 2b 2b 2e 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2e 5b 2d 3e 2b 2b 2b 2b 2b 2b 3c 5d 3e 2d 2e
Drak Hors ligne Rédacteur Points: 1925 Défis: 40 Message

Citer : Posté le 28/10/2018 15:38 | #


Un peu comme un genre de code pour assurer que la liste vient bien de ce jeu et pas d'un autre, pas mal...
Eon the Dragon : version 1.2
Let's have a look!
Marre de ces RPGs qui t'imposent des classes, des compétences et des sorts ? Crée tes propres capacités sur Eon the Dragon ! Des monstres, des dragons et des combats aussi épiques que difficiles t'attendent !
Un RPG unique et immense t'attend ! Joue dès maintenant à Aventura, le Royaume Poudingue !
Vous aussi, soyez swag et rejoignez Planète Casio !
Lephenixnoir Hors ligne Administrateur Points: 20789 Défis: 143 Message

Citer : Posté le 28/10/2018 16:43 | #


Technique très utile! Mais j'aimerais ajouter qu'elle ne marche pas si la liste est déjà utilisée et que la case 1 est non nulle.

En effet, mettre un nombre apparemment aléatoire est une bonne idée. Mais tu as mieux, tu peux sélectionner une liste avec son nom.

"AVENTURA"→List "AVENTURA"
List "AVENTURA"[1]→A
/* etc */
Alexot En ligne Membre Points: 539 Défis: 18 Message

Citer : Posté le 29/10/2018 13:08 | #


Vraiment cool : ta technique choisit même automatiquement une liste non utilisée.
Cliquez pour découvrir
Cliquez pour recouvrir
2b 5b 2d 2d 2d 2d 2d 3e 2b 2b 2b 3c 5d 3e 2b 2e 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2e 2e 2d 2d 2d 2d 2e 2b 2b 2b 2e 2b 5b 2d 2d 3e 2b 3c 5d 3e 2e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2e 2e 2b 5b 2d 2d 3e 2b 2b 2b 2b 2b 3c 5d 3e 2b 2e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2e 2b 2b 2b 2b 2b 2b 2e 2d 2e 2b 2e 2d 5b 2b 2b 3e 2d 2d 2d 3c 5d 3e 2e 2b 2b 2b 5b 2d 3e 2b 2b 3c 5d 3e 2e 2b 2b 2b 2e 5b 2d 3e 2b 2b 2b 3c 5d 3e 2e 5b 2d 2d 2d 3e 2b 3c 5d 3e 2d 2e 2d 5b 2d 3e 2b 2b 2b 2b 2b 2b 3c 5d 3e 2d 2e 2d 5b 2d 2d 3e 2b 2b 2b 3c 5d 3e 2d 2e 2b 5b 2b 2b 3e 2d 2d 2d 3c 5d 3e 2e 5b 2d 2d 2d 3e 2b 2b 3c 5d 3e 2d 2e 2d 5b 2d 2d 3e 2b 3c 5d 3e 2d 2d 2e 2b 5b 2d 2d 3e 2b 2b 2b 3c 5d 3e 2e 2b 2b 2b 5b 2d 3e 2b 2b 2b 2b 3c 5d 3e 2d 2e 3e 2b 5b 2d 2d 2d 3e 2b 2b 3c 5d 3e 2b 2b 2e 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2e 5b 2d 3e 2b 2b 2b 2b 2b 2b 3c 5d 3e 2d 2e
Lephenixnoir Hors ligne Administrateur Points: 20789 Défis: 143 Message

Citer : Posté le 29/10/2018 13:15 | #


L'inconvénient c'est que je n'ai pas trouvé de méthode propre pour récupérer le numéro de la liste, et du coup il faut écrire List "AVENTURA" partout, c'est un peu long.
Manolo Hors ligne Membre Points: 910 Défis: 13 Message

Citer : Posté le 29/10/2018 13:16 | #


Lephenixnoir a écrit :
Technique très utile! Mais j'aimerais ajouter qu'elle ne marche pas si la liste est déjà utilisée et que la case 1 est non nulle.

En effet, mettre un nombre apparemment aléatoire est une bonne idée. Mais tu as mieux, tu peux sélectionner une liste avec son nom.

"AVENTURA"→List "AVENTURA"
List "AVENTURA"[1]→A
/* etc */


ah bon, je savais pas, c'est génial!!!
Kikoodx Hors ligne Labélisateur Points: 2726 Défis: 11 Message

Citer : Posté le 29/10/2018 14:21 | #


C'est superbe ça !
Je rajoute qu'il est possible de stocker le nom de la liste dans une String pour réduire le poids du code sur la longueur.
"AVENTURA"→Str 1
Str 1→List Str 1
List Str 1[1→A

Protip
Ne me remerciez pas
Lephenixnoir Hors ligne Administrateur Points: 20789 Défis: 143 Message

Citer : Posté le 29/10/2018 14:29 | #


Oooh, bien vu ! Je n'avais même pas pensé à essayer ça !
Drak Hors ligne Rédacteur Points: 1925 Défis: 40 Message

Citer : Posté le 29/10/2018 19:38 | #


Stocker le nom d'une liste dans une string, effectivement, mais peut-on vraiment faire ça :
List Str 1[1]→A
?
Eon the Dragon : version 1.2
Let's have a look!
Marre de ces RPGs qui t'imposent des classes, des compétences et des sorts ? Crée tes propres capacités sur Eon the Dragon ! Des monstres, des dragons et des combats aussi épiques que difficiles t'attendent !
Un RPG unique et immense t'attend ! Joue dès maintenant à Aventura, le Royaume Poudingue !
Vous aussi, soyez swag et rejoignez Planète Casio !
Kikoodx Hors ligne Labélisateur Points: 2726 Défis: 11 Message

Citer : Posté le 29/10/2018 19:39 | #


Drak a écrit :
Stocker le nom d'une liste dans une string, effectivement, mais peut-on vraiment faire ça :
List Str 1[1]→A
?

Oui j'ai testé avant de poster
Protip
Ne me remerciez pas

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2021 | Il y a 83 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd