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 :
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 :
Dans l'autre sens, ça se fait de manière un tout petit peu plus complexe :
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 :
- 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))
- 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)
- 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>> thenmoi
viens voir mon profil et mes projets !
end
- Medericoder
- Scratcher
100+ posts
CHAT EN LIGNE - Scripts
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)
- link-potter
- Scratcher
500+ posts
CHAT EN LIGNE - Scripts
Ça ne marche pas car comme l'a dit SBissay le pseudo ne peut pas faire plus de 20 caractères._.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)
- bidulule
- Scratcher
1000+ posts
CHAT EN LIGNE - Scripts
Ce sont probablement d'anciens projets qui ne fonctionnent plus (et qui utilisaient une whitelist) 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…
- 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
hum oui et non mdrmettre [☁ chat v] à (réponse)
NilsTheChair | 5 years on Scratch | 4000+ posts | former wiki editor | 332nd FPC | CoR founder
- Medericoder
- Scratcher
100+ posts
CHAT EN LIGNE - Scripts
Juste pour information, les Variables Cloud ne peuvent pas contenir de lettres, donc ta technique va avoir (un peu) de mal à fonctionner… mdrmettre [☁ chat v] à (réponse)
- morlante
- Scratcher
100+ posts
CHAT EN LIGNE - Scripts
non tu peut aller voir, il n'y a vraiment pas de whitelist, mais c'est vraie que s sont des vieu…Ce sont probablement d'anciens projets qui ne fonctionnent plus (et qui utilisaient une whitelist) 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>> thenmoi
viens voir mon profil et mes projets !
end
- yvesmartin
- Scratcher
1 post
CHAT EN LIGNE - Scripts
vous pouvez tous jouez a pente cool
en plus ses cool
en plus ses cool
- Debility_Kheops
- Scratcher
1000+ posts
CHAT EN LIGNE - Scripts
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 ^^ vous pouvez tous jouez a pente cool
en plus ses cool
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???
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
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 ^^ 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???
~ Wiki FR ~ Wiki EN ~
Besoin d'aide ? Des questions sur le forum francophone ou ses règles ? N'hésitez pas à demander !
- clement2_0
- Scratcher
2 posts
CHAT EN LIGNE - Scripts
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
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)
conditions d'utilisation de Scratch, car ils ne peuvent pas être modérés.Ah d'accord, merci, je ne savais pas Je rappelle que les chats en ligne sont interdits par les
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.