Discuss Scratch

IntensoPower
Scratcher
1 post

Faire un système de sauvegarde sur Scratch!

Bonjour à tous et à toutes,
Scratch est un logiciel libre et gratuit, permettant de stocker ses projets sur le “Cloud”. Mais, malheureusement, on ne peut pas stocker plus de 10 variables sur le “Cloud”. On ne peut pas non plus sauvegarder de liste, ce qui aurait été bien utile ici.

Du coup, beaucoup de personnes se demandent comment faire des sauvegardes de leur progression. La version la plus courante, est celle du Remix: on crée un Remix d'un jeu, qu'on modifie pour pouvoir sauvegarder. Mais, malheureusement, tous les visiteurs n'ont pas envie de faire ça: cela prends du temps, et ce n'est pas pratique pour les débutants.

Moi, confronté à ce problème, j'ai essayé, et j'ai fini par trouver un moyen pour les Scratcher avancés. Je l'ai d'abord inclus sur mon Tower Defense, ce qui a été un succés: mon jeu crée une sauvegarde, qu'on a juste à copier-coller sur son ordinateur, pour pouvoir la charger plus tard.

Cette technique fonctionne grâce à un principe de “cryptage”, que le jeu utilise pour crypter et décrypter. Tout d'abord, on visualise les variables et listes à sauvegarder. Ensuite, on décide d'un ordre de cryptage-décryptage (par exemple, d'abord la variable B, puis la liste A, puis la variable C), que l'on va garder pour pouvoir l'utiliser pendant qu'on programme le système. Ensuite, il va falloir pouvoir copier cette sauvegarde, donc on prévoit une liste avec un seul élément (par exemple, la liste Save). Enfin, pour le cryptage, on regroupe les variables et listes en un seul élément de liste. Vu que c'est compliqué, je vais faire un exemple:

remplacer l'élément ( 1) de la liste [Save v] par (B)
remplacer l'élément ( 1) de la liste [Save v] par (regroupe (élément ( 1) de [Save v] :: list) (élément ( 1) de [A v] :: list))
remplacer l'élément ( 1) de la liste [Save v] par (regroupe (élément ( 1) de [Save v] :: list) (C))
montrer la liste [Save v]


Voilà, vous avez crypté votre sauvegarde!
Ensuite, il vous faudra décrypter votre sauvegarde, ce qui s'avère délicat avec, par exemple, C comme nombre entier à 3 chiffres!

Pour décripter votre sauvegarde, cela va être un peu plus compliqué, c'est pourquoi je vais faire une liste de ce qu'il y a à faire dans l'ordre:
1- Créer la “norme” de votre sauvegarde
2- Charger votre sauvegarde
3- Transformer les différents types de variables (listes, entiers à plusieurs chiffres, négatifs…)
4- Les transposer dans les variables
5- Adapter le jeu en fonction de si on a rentré une sauvegarde ou pas

Premièrement, il faut créer un sens a votre sauvegarde: eh oui! Si votre sauvegarde se résume a un nombre correspondant au niveau atteint, ainsi qu'à l'argent qu'on possède, on ne veut pas que le tout soit inversé! Donc, il vous faudra bien réfléchir à comment organiser le décriptage.
On garde l'exemple montré ci-dessus: la sauvegarde se résume à: La variable B, l'élément 1 de la liste A, et la variable C.
La sauvegarde devrai ressembler à ça: 15230
Oui, je suis d'accord, c'est un nombre, mais c'est le principe!
Ici, dans “15230”, (1) correspond à B, (5) correspond à l'élément 1 de A, et (230) correspond à C.
C'est ce qu'on veut! Et n'oubliez pas que c'est un exemple!
Il faudra donc le décrypter comme ça:

mettre [ B] à (lettre (1) de Save)
remplacer l'élément (1) de la liste [ A] par (lettre (2) de Save)
mettre [ C] à (lettre (3) de Save)
mettre [ C] à (regroupe (C) (lettre (4) de Save))
mettre [ C] à (regroupe (C) (lettre (5) de Save))

Ce qui fait que si on donne 15230:
-B=1
-Elément 1 de A=5
-C=230

C'est la version la plus simple, mais malheureusement, celle qui fait la sauvegarde la plus lourde: 5 chiffres, alors qu'on peut passer à 4, en modifiant des ligne de code dans le cryptage!
Si vous savez que C sera toujours un multiple de 10 (donc qui finira TOUJOURS par zéro), on peut faire, en cryptant:

remplacer l'élément ( 1) de la liste [Save v] par (B)
remplacer l'élément ( 1) de la liste [Save v] par (regroupe (élément ( 1) de [Save v] :: list) (élément ( 1) de [A v] :: list))
remplacer l'élément ( 1) de la liste [Save v] par (regroupe (élément ( 1) de [Save v] :: list) ((C) / (10)))
montrer la liste [Save v]

Dans ce cas là, on finit avec 1523, donc dans le décryptage, on fait:

mettre [ B] à (lettre (1) de Save)
remplacer l'élément (1) de la liste [ A] par (lettre (2) de Save)
mettre [ C] à (lettre (3) de Save)
mettre [ C] à (regroupe (C) (lettre (4) de Save))
mettre [ C] à ((C)*(10))

Eh oui, puisqu'on a divisé dans le cryptage, on multiplie dans le décryptage!
N'oubliez pas qu'ici, c'est un exemple simple, pour un petit jeu avec peu de variables, donc une petite sauvegarde.
Vous pourrez peut-être, si vous bossez ENORMEMENT, vous retrouvez avec une sauvegarde du genre: 12IntensoPower1235965222, ce qui peut être incompréhensible!
Donc il vous fauidra bien réfléchir à vos variables.

Voilà, c'est fini, si vous n'avez pas compris, commentez, si ça vous a aidé, commentez, si vous avez des conseils, commentez,si vous a… bon, bref COMMENTEZ!

Je vous laisse, salut, et à la prochaine!

when this sprite clicked
repeat until <I did it!>
Enjoy
Like
Comment
Remix
Sub
end
Thanks!
ambre789
Scratcher
1000+ posts

Faire un système de sauvegarde sur Scratch!

woah super


Kp_sept
Scratcher
33 posts

Faire un système de sauvegarde sur Scratch!

pourrais tu faire un script complet SVP
Bouboufez
Scratcher
1000+ posts

Faire un système de sauvegarde sur Scratch!

Merci de ne pas ressortir d'anciens projets. De plus, ce script est complet, je ne vois pas ce que tu veux ajouter
Règles du forum

t0to
Scratcher
100+ posts

Faire un système de sauvegarde sur Scratch!

salut

Bouboufez wrote:

Merci de ne pas ressortir d'anciens projets. De plus, ce script est complet, je ne vois pas ce que tu veux ajouter
Règles du forum
c'est un tuto (bien utile d’ailleurs) donc si il remonte dans le forum français ce n'est pas grave

Bouboufez
Scratcher
1000+ posts

Faire un système de sauvegarde sur Scratch!

Oui, mais ce sujet est déjà cité dans les questions courantes, un sujet fixé, alors inutile de le remonter !

Kp_sept
Scratcher
33 posts

Faire un système de sauvegarde sur Scratch!

Bouboufez wrote:

Oui, mais ce sujet est déjà cité dans les questions courantes, un sujet fixé, alors inutile de le remonter !
si tu préfères un exemple 
quand le drapeau vert pressé
etc
Bouboufez
Scratcher
1000+ posts

Faire un système de sauvegarde sur Scratch!

Bah tu rajoutes juste
quand le drapeau vert pressé
Au dessus des scripts. Et après ça s'adapte en fonction de ton projet

Extremguy
Scratcher
100+ posts

Faire un système de sauvegarde sur Scratch!

J'en ai déja fait un. Voici quelque exemples

Le chat: https://scratch.mit.edu/projects/127507236/ . Par contre ya beaucoup de mot censuré

Le “MMO” enfaite ca fait qu'enregistrer ou son les gens: https://scratch.mit.edu/projects/127135844/

Extremguy le ptit tannant qui fait des gros petit projets avec Scratch depuis 2012.

Envie de créer tes propres jeux 2d a monde ouvert plus facilement. Viens utiliser dès maintenant mon projet!

el15617
Scratcher
1000+ posts

Faire un système de sauvegarde sur Scratch!

Extremguy wrote:

J'en ai déja fait un. Voici quelque exemples

Le chat: https://scratch.mit.edu/projects/127507236/ . Par contre ya beaucoup de mot censuré

Le “MMO” enfaite ca fait qu'enregistrer ou son les gens: https://scratch.mit.edu/projects/127135844/

tkt pas quasi tt le monde ici en a déja fait mdr (t'as l'air de débarquer mdrrr)


Vendeur de brouettes depuis 1895 :p
t0to
Scratcher
100+ posts

Faire un système de sauvegarde sur Scratch!

Bouboufez wrote:

Oui, mais ce sujet est déjà cité dans les questions courantes, un sujet fixé, alors inutile de le remonter !
je vois pas en quoi c'est problématique de remonter un tuto

Bouboufez
Scratcher
1000+ posts

Faire un système de sauvegarde sur Scratch!

D'autres sujets méritent d'être vus, alors que celui-ci encombre tout l'espace

littlekitykat
Scratcher
100+ posts

Faire un système de sauvegarde sur Scratch!

oki j'en prends note pour les sauvegardes éventuelles de mon jeu :

https://scratch.mit.edu/projects/140143740/

C'est toujours utiles des sauvegarde dans un jeu de plateforme

Quelques projets en cours !!

____________

Powered by DjangoBB

Standard | Mobile