Discuss Scratch

SBissay
Scratcher
500+ posts

CHAT EN LIGNE - Scripts

Boh, ça va encore…

Imaginons donc qu'on stoke un score par variable cloud, donc les 10 meilleurs scores, et que chaque variable doive contenir à la fois le nom du Scratcher et son score. Et pour faire ça bien, imaginons qu'on utilise la technique des noms de costumes pour reconnaître les majuscules des minuscules.

Ainsi, chaque lettre peut être quelque-chose entre a et z, A et Z, - et _. Soit 54 caractères possibles. Si on les numérote a = 1, … z = 26, A = 27, … Z = 52, - = 53, _ = 54, c'est stockable sur 2 chiffres (et il faut impérativement stocker “01” au lieu de “1” pour utiliser 2 chiffres même pour les valeurs inférieures à 10).

Maintenant, il faut trouver un moyen de séparer le codage du nom et le score (qui lui peut être stocké tel quel, c'est déjà un nombre).
Là, plusieurs méthodes :
  1. On stocke la longueur du pseudo au départ. Prend 2 chiffres (la limite des pseudos Scratch est de 20 caractères (je viens de vérifier))
  2. On utilise une valeur jamais utilisée dans le codage pour marquer la fin du pseudo (exemple : “00”, ou “55”, ou “99”, …), prend encore une fois 2 chiffres.

Mais on peut faire mieux que ça et n'utiliser qu'un seul chiffre !
En effet, si on code les caractères du pseudo en base 9 (*), on va jusqu'à 60 (= 54 en base 10), donc on n'utilise toujours que 2 chiffres par lettre, mais le chiffre 9 n'est jamais utilisé, et peut donc servir de délimiteur.

Ainsi on code le pseudo sur 40 chiffres maximum (2 par caractère, 20 caractères max), puis 1 chiffre de délimitation. Soit un score qui peut s'étendre sur 128 - 41 chiffres : 87 chiffres !
Bref, il y a de la marge…

Du coup, on peut même imaginer stocker plusieurs scores par variable, mais ça demande encore quelques astuces de délimitation…


(*) : notre écriture des nombres est basée sur le système décimal. Chaque chiffre correspond à un multiplicateur d'une puissance de 10.
Par exemple, 124 = 4 * 10^0 + 2 * 10^1 + 1 * 10^2 = 4 * 1 + 2 * 10 + 1 * 100.
On peut en fait créer une infinité d'autres systèmes numériques, basés sur tous les entiers supérieurs (strictement) à 1.
Le binaire est bien connu car utilisé pour le stockage de données numériques :
1101 = 1 * 2^0 + 0 * 2^1 +1 * 2^2 + 1 * 2^3 = 1* 1 + 0 * 2 + 1 * 4 + 1* 8 = 13.
L'hexadécimal est pas mal utilisé aussi, c'est un système en base 16, avec A = 10, B = 11, … F = 15 :
B5 = 5 * 16^0 + (B = 11) * 16^1 = 5 * 1 + 11 * 16 = 181.
Du coup, on peut utiliser un système en base 9 sur le même principe :
1234 = 4 * 9^0 + 3 * 9^1 + 2 * 9^2 + 1 * 9^3 = 4 * 1 + 3 * 9 + 2 * 81 + 1 * 729 = 922.

Donc convertir de la base 9 vers la base 10 (notre système habituel) est simple :
définir base 9 vers base 10 (n)
mettre [i v] à (longueur de (n))
mettre [mult v] à [1]
mettre [résultat v] à [0]
répéter (longueur de (n)) fois
ajouter à [résultat v] ((mult) * (lettre (i) de (n)))
ajouter à [i v] (-1)
mettre [mult v] à ((9) * (mult))
end

Dans l'autre sens, ça se fait de manière un tout petit peu plus complexe :
définir base 10 vers base 9 (n)
mettre [temp v] à (n)
mettre [résultat v] à []
répéter jusqu’à <(temp) = [0]>
mettre [résultat v] à (regroupe ((temp) modulo (9)) (résultat))
mettre [temp v] à ([plancher v] de ((temp) / (9)) :: operators)
end

Last edited by SBissay (Nov. 14, 2018 09:25:05)


Generative art :              Pivot  :               Sudoku :
morlante
Scratcher
100+ posts

CHAT EN LIGNE - Scripts

intéressants tous ça! mais vous avez dit que les chats cloud sont interdit, ok mais il n'y a qu'a tapé “chat cloud” pour se rendre compte que il y en a beaucoup, et beaucoup qui sont fonctionnel et ou des gens se rendent souvent… donc je ne sais pas trop au final…

if <<tu aime mes conseils> and <tu veux voir se que je fais>> then
viens voir mon profil et mes projets !
end
moi
Medericoder
Scratcher
100+ posts

CHAT EN LIGNE - Scripts

link-potter wrote:

Faut juste espérer qu'il ne fasse pas un score de 30 mètres long^^
THE PLATFORMER :
CONGARTULATIONS, YOUR SCORE IS :
((999999999999999999999999999999999999999999999999999999999999999999999):: variables)
YOUR USERNAME IS :
([LeSuperBGdu93pikathebest1206delacitésamèreC++Pro]:: variables)
YOUR RANK IS :
((1):: variables)

Last edited by Medericoder (Nov. 14, 2018 15:59:24)


○•-••○••-•••○•••-••••○••••MY BEST PROJECTS••••○••••-•••○•••-••○••-•○

- - - -Mii Maker 2- - - - -Find the Odd One Out- - -Messages Windows- - -Selection Square- - - - - - -Master Mind - - - -
○•-••○••-•••○•••-••••○••••-•••••○•••••-•-•-•••••○•••••-••••○••••-•••○•••-••○••-•○

link-potter
Scratcher
500+ posts

CHAT EN LIGNE - Scripts

2005200439 wrote:

link-potter wrote:

Faut juste espérer qu'il ne fasse pas un score de 30 mètres long^^
THE PLATFORMER :
CONGARTULATIONS, YOUR SCORE IS :
((999999999999999999999999999999999999999999999999999999999999999999999):: variables)
YOUR USERNAME IS :
([LeSuperBGdu93pikathebest1206delacitésamèreC++Pro]:: variables)
YOUR RANK IS :
((1):: variables)
Ça ne marche pas car comme l'a dit SBissay le pseudo ne peut pas faire plus de 20 caractères._.
bidulule
Scratcher
1000+ posts

CHAT EN LIGNE - Scripts

morlante wrote:

intéressants tous ça! mais vous avez dit que les chats cloud sont interdit, ok mais il n'y a qu'a tapé “chat cloud” pour se rendre compte que il y en a beaucoup, et beaucoup qui sont fonctionnel et ou des gens se rendent souvent… donc je ne sais pas trop au final…
Ce sont probablement d'anciens projets qui ne fonctionnent plus (et qui utilisaient une whitelist)

Try5t4n
Scratcher
100+ posts

CHAT EN LIGNE - Scripts

mdr
mettre [☁ chat v] à (réponse)

point towards ((3d::#999)+(100% pen::#125)+(games::#148)+(tests::#589)::custom)::hat pen
create::list

MATHEMATHICS




















NilsTheBest
Scratcher
1000+ posts

CHAT EN LIGNE - Scripts

Try5t4n wrote:

mdr
mettre [☁ chat v] à (réponse)
hum oui et non

NilsTheChair | 5 years on Scratch | 4000+ posts | former wiki editor | 332nd FPC | CoR founder
Medericoder
Scratcher
100+ posts

CHAT EN LIGNE - Scripts

Try5t4n wrote:

mdr
mettre [☁ chat v] à (réponse)
Juste pour information, les Variables Cloud ne peuvent pas contenir de lettres, donc ta technique va avoir (un peu) de mal à fonctionner…

○•-••○••-•••○•••-••••○••••MY BEST PROJECTS••••○••••-•••○•••-••○••-•○

- - - -Mii Maker 2- - - - -Find the Odd One Out- - -Messages Windows- - -Selection Square- - - - - - -Master Mind - - - -
○•-••○••-•••○•••-••••○••••-•••••○•••••-•-•-•••••○•••••-••••○••••-•••○•••-••○••-•○

morlante
Scratcher
100+ posts

CHAT EN LIGNE - Scripts

bidulule wrote:

morlante wrote:

intéressants tous ça! mais vous avez dit que les chats cloud sont interdit, ok mais il n'y a qu'a tapé “chat cloud” pour se rendre compte que il y en a beaucoup, et beaucoup qui sont fonctionnel et ou des gens se rendent souvent… donc je ne sais pas trop au final…
Ce sont probablement d'anciens projets qui ne fonctionnent plus (et qui utilisaient une whitelist)
non tu peut aller voir, il n'y a vraiment pas de whitelist, mais c'est vraie que s sont des vieu…

if <<tu aime mes conseils> and <tu veux voir se que je fais>> then
viens voir mon profil et mes projets !
end
moi
yvesmartin
Scratcher
1 post

CHAT EN LIGNE - Scripts

vous pouvez tous jouez a pente cool

en plus ses cool
Debility_Kheops
Scratcher
1000+ posts

CHAT EN LIGNE - Scripts

yvesmartin wrote:

vous pouvez tous jouez a pente cool

en plus ses cool
Bonjour et bienvenue sur le forum francophone de scratch. Tu viens de remonter un topic datant d'il y a 2 ans, et c'est interdit ici ^^

En plus de cela, tu viens de faire de la pub ; il y a un topic pour ça (fais un tour sur l'acueil, tout en haut de la page)

Need help? I'm here
Emeric74
New Scratcher
4 posts

CHAT EN LIGNE - Scripts

bonjour!
j'aimerais que un de mes sprite reste a un endroit sur mon arriere plan (qui est un sprite) mais il me suis.
Comment faire pour arranger ça???
Emeric74
New Scratcher
4 posts

CHAT EN LIGNE - Scripts

je suis désespéré

Last edited by Emeric74 (Sept. 30, 2023 18:29:17)

wilhelm43
Scratcher
1000+ posts

CHAT EN LIGNE - Scripts

Emeric74 wrote:

bonjour!
j'aimerais que un de mes sprite reste a un endroit sur mon arriere plan (qui est un sprite) mais il me suis.
Comment faire pour arranger ça???
Salut ! Si tu pouvais partager ton projet et me donner son lien, en plus de m'expliquer de manière détaillée ce que tu veux, ça serait parfait ^^


~ Wiki FR ~ Wiki EN ~

Besoin d'aide ? Des questions sur le forum francophone ou ses règles ? N'hésitez pas à demander !
Greetings, I'm wilhelm43, a French Scratcher.
clement2_0
Scratcher
2 posts

CHAT EN LIGNE - Scripts

SBissay wrote:

Ceci dit, je vais quand même tenter de répondre aux questions techniques, dans un but didactique.

N'ayant pas accès à ta fonction convertir, je vais partir du postulat qu'elle fonctionne correctement.

Alors la principale source de problème qui vient à l'esprit est : quelle est la longueur du nombre renvoyé par la conversion ?
En effet, les variables cloud ont été limitées à 128 chiffres, au-delà elles n'écrivent tout simplement pas.

D'autre part, tu vérifies juste que la i-ème lettre de la réponse correspond à la i-ème lettre de ta liste.
Il va te falloir 2 variables de compteur : une pour la liste en cours, et une pour la lettre à vérifier.

Le but est, pour chaque lettre, de regarder toute la liste pour vérifier si elle est dedans (ce que tu ne fais pas actuellement, vu que tu ne regardes que la position qui correspond à celle de la lettre dans le mot).

Par exemple :
mettre [1i v] à [1]
répéter (longueur de (réponse)) fois
mettre [i2 v] à [1]
répéter jusqu’à <<(élément (i2) de [Lettres v] :: list) = (lettre (i1) de (réponse))> ou <(i2) > (longueur de [Lettres v] :: list)>>
ajouter à [i2 v] (1)
end
si <(i2) < (longueur de [Lettres v] :: list)> alors
insérer (élément (i2) de [Chiffres v] :: list) en position (1 v) de la liste [Convertir v]
end
ajouter à [i1 v] (1)
end
mettre [☁ chat v] à (Convertir :: list)
clement2_0
Scratcher
2 posts

CHAT EN LIGNE - Scripts

SBissay wrote:

Ceci dit, je vais quand même tenter de répondre aux questions techniques, dans un but didactique.

N'ayant pas accès à ta fonction convertir, je vais partir du postulat qu'elle fonctionne correctement.

Alors la principale source de problème qui vient à l'esprit est : quelle est la longueur du nombre renvoyé par la conversion ?
En effet, les variables cloud ont été limitées à 128 chiffres, au-delà elles n'écrivent tout simplement pas.

D'autre part, tu vérifies juste que la i-ème lettre de la réponse correspond à la i-ème lettre de ta liste.
Il va te falloir 2 variables de compteur : une pour la liste en cours, et une pour la lettre à vérifier.

Le but est, pour chaque lettre, de regarder toute la liste pour vérifier si elle est dedans (ce que tu ne fais pas actuellement, vu que tu ne regardes que la position qui correspond à celle de la lettre dans le mot).

Par exemple :
mettre [1i v] à [1]
répéter (longueur de (réponse)) fois
mettre [i2 v] à [1]
répéter jusqu’à <<(élément (i2) de [Lettres v] :: list) = (lettre (i1) de (réponse))> ou <(i2) > (longueur de [Lettres v] :: list)>>
ajouter à [i2 v] (1)
end
si <(i2) < (longueur de [Lettres v] :: list)> alors
insérer (élément (i2) de [Chiffres v] :: list) en position (1 v) de la liste [Convertir v]
end
ajouter à [i1 v] (1)
end
mettre [☁ chat v] à (Convertir :: list)

Medericoder wrote:

SBissay wrote:

Je rappelle que les chats en ligne sont interdits par les conditions d'utilisation de Scratch, car ils ne peuvent pas être modérés.
Ah d'accord, merci, je ne savais pas


Pour le script, j'ai déjà essayé strictement le même, le problème est que quand je donne à la variable la valeur d'une liste, un espace s'ajoute entre chaque éléments, et apparemment, les espaces sont considérés comme des lettres puisqu'un message s'affiche “Les variables Cloud ne peuvent contenir que des chiffres tatati tatata”…

J'ai essayé ensuite de faire avec

(regroupe (regroupe (regroupe (regroupe (élément (1 v) de [list v] :: list):: operators) (élément (2 v) de [list v] :: list) ) (élément (3 v) de [list v] :: list) ) [etc...])

Mais ça lague terriblement !…
LOUREATOUT
Scratcher
500+ posts

CHAT EN LIGNE - Scripts

Attention à bien écrire des messages après le quote. Aussi attention à ne pas nécroposter (nouveau verbe débloquer), et je sais que tu ne sais pas forcément ce que ça veut dire, donc lit les règles du forum.

Salut, tu t'ennuies ? Regardes au moins un des projets en-dessous.
Cat platformer Spooky night Real intro FUNNY MINI-GAMES
Donnez moi vos avis dans les commentaires de ces projets.
Nouveau compte de tuto, LOUREATOUT_tutor.

Powered by DjangoBB