Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Autres questions


Index du Forum » Autres questions » [RÉSOLU] Question sur les meilleurs scores
Mooooooi Hors ligne Membre Points: 33 Défis: 0 Message

[RÉSOLU] Question sur les meilleurs scores

Posté le 12/01/2017 20:20

Bonjour a tous,

j'ai besoin de votre aide car je suis entrain de programmer un jeu et il est presque finis. Il me manque encore une chose c'est pour les meilleurs scores : je sais comment stocker les meilleurs score a l'aide d'une liste mais mon probléme est que je cherche un moyen pour stocker les noms des joueurs car on ne peux pas stocker de la variable texte dans une liste.
Auriez vous une solution a me proposée ?
Merci


Alexot Hors ligne Membre Points: 539 Défis: 18 Message

Citer : Posté le 12/01/2017 20:25 | #


Tu peux stocker les noms avec les chaînes de caractères.
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 En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 12/01/2017 20:26 | #


Tu peux stocker les noms dans des chaînes de caractères (Str) sur les modèles récents : vois le tutoriel de Totoyo.

Tu peux également stocker jusqu'à 8 caractères dans le nom d'une liste :

"NOM"→List 1[0]
// ou de manière équivalente
"NOM"→List 1

Edit : Cette technique est utile car elle te permet de faire référence à la liste par son nom après coup :

List "NOM"

C'est également utile pour éviter de donner le numéro d'une liste. Cela permet de ne pas écraser une liste existante, mais plutôt de laisser la calculatrice choisir une liste vide pour y stocker tes données.

{1,2,3}→List "MON-JEU"
4→List "MON-JEU"[2] // par exemple

Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Mooooooi Hors ligne Membre Points: 33 Défis: 0 Message

Citer : Posté le 12/01/2017 20:32 | #


oui je suis d'accord avec ça mais le probléme est que je vais devoir créer une liste par joueur donc ça me fera 5 liste. C'est pour ça que je cherche si il y a pas un autre moyen que celui ci. De plus j'ai de tableau des scores différents donc ça va me prendre dix liste. :/
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 12/01/2017 20:35 | #


En effet, le nom d'une liste n'est pas vraiment une bonne solution (je disais plus ça pour la forme en fait). De la même manière, utiliser 5 Str différentes n'est pas convaincant.

Alors on peut peut-être faire mieux et stocker les noms comme des entiers. Par exemple, tu décides que "A" s'écrit "01" et "Z" s'écrit "26", puis tu extrapoles. Par exemple pour "MOI", tu stockes la valeur 131509. Tu dois alors te limiter car le nombre de chiffres disponibles est limité ; en l'occurrence, tu peux mettre jusqu'à 5 lettres sans souci (c'est un peu limité mais c'est déjà pas mal).

Ensuite dans ta liste, tu mets deux cases par joueur : une case pour le nom, suivie d'une case pour le score, par exemple.

On peut concevoir un stockage plus rigoureux qui permet de faire passer 8 lettres sans problème.
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Mooooooi Hors ligne Membre Points: 33 Défis: 0 Message

Citer : Posté le 12/01/2017 21:42 | #


Je pense avoir trouver une solution avec une matrice de 5lignes*9colones. en gros dans les 8 premiéres cases de la ligne je stocke la place de la lettre et 0 si c'est finis et ensuite dans la 9e colonne je stocke le score ensuite je balaye ma ligne pour reconstituer le mot. Les deux seuls inconvenants sont que ça va me prendre a minimum 450 octet (10 octet par case) et que la personne va devoir taper son nom lettre par lettre. Avez des remarques sur cette solution ? Ou des autres proposition?
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 12/01/2017 21:45 | #


L'idée est tout à fait là. Tu peux stocker ton nombre en base 27 pour obtenir le résultat souhaité. Tu peux alors mettre de A à Z et des espaces, et tu peux placer 8 lettres dans un entier pour minimiser la place utilisée.

Au lieu de rajouter un 0 à la fin, tu peux remplir avec des espaces. À l'affichage, ça ne se verra pas

Avec cette méthode, pour 5 scores tu n'as besoin que de 120 octets, au lieu de 540 (c'est 12 octets par case, pour autant que je me souvienne).
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Mooooooi Hors ligne Membre Points: 33 Défis: 0 Message

Citer : Posté le 13/01/2017 11:01 | #


Je ne connais pas le système en base 27 ni les système en base sauf pour le binaire Et aussi es ce que la calculatrice et capable de gerer ça?
Et7f3 Hors ligne Membre Points: 176 Défis: 1 Message

Citer : Posté le 13/01/2017 11:04 | #


Si tu as compris le lien entre base 2 et base 10 la base 27 s'apprend facilement. la calto gère nativement base 16,8,10,2

"l'impossible n'est pas français", Je suis français je suis donc capable de tout.
Mooooooi Hors ligne Membre Points: 33 Défis: 0 Message

Citer : Posté le 13/01/2017 11:20 | #


Oui mais je n'arrive pas a comprendre l'utilité de le mettre en base 27 car imaginons c=3 (position dans l'alphabet) bah
3 en base 10 est égale a 3 en base 27. Peut etre que je me suis trompe ?
Et7f3 Hors ligne Membre Points: 176 Défis: 1 Message

Citer : Posté le 13/01/2017 11:27 | #


En base 27:
1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,
11,12,13,14,15,16,17,18,19,1a,1b,1c,1d,...
je vien de compter jusqu'a 40 si jamais tu as envie de stocker les accents. Sinon regarde du coté de la table ascii.
table ascii exemple
"l'impossible n'est pas français", Je suis français je suis donc capable de tout.
Mooooooi Hors ligne Membre Points: 33 Défis: 0 Message

Citer : Posté le 13/01/2017 11:33 | #


ok je suis d'accord mais avec ma calculatrice quand je vais faire mon algo pour convertir mon nombre en base 27 elle va pas mettre un O toute seul si ? vu que de base elle ne sais faire que des base 2 10 8 16
Et7f3 Hors ligne Membre Points: 176 Défis: 1 Message

Citer : Posté le 13/01/2017 11:34 | #


Non tu met plusieur if qui s'enchaine...
266703->A
0->I
while A!=0
IF Mod(a,27)=13
then locate I,1,"D"
ElseIF Mod(a,27)=14
then locate I,1,"E"
ElseIF Mod(a,27)=22
then locate I,1,"M"
ElseIF Mod(a,27)=24
then locate I,1,"O"
Else
ifend
ifend
ifend
ifend
(A-mod(A,27))/27->A
'on va donc recuperer la prochaine lettre
I+1->I
'On evite la sur ecriture
whileEnd

"l'impossible n'est pas français", Je suis français je suis donc capable de tout.
Mooooooi Hors ligne Membre Points: 33 Défis: 0 Message

Citer : Posté le 13/01/2017 11:53 | #


donc si je comprend bien si je tape sam traduit en base 27
s=19e position donc 19 en base 27=J
a=1er position donc 1 en base 27=1
m=13e position donc 13 en base 27=D
donc sam=j1d
le seul probléme c'est que si je stocke ça; je vais devoir le stocker en chaine de caractére sauf que moi je veux le pouvoir stocker dans une matrice ou dans une liste donc c'est problématique non?
Et7f3 Hors ligne Membre Points: 176 Défis: 1 Message

Citer : Posté le 13/01/2017 12:08 | #


"S" n'est pas disponible en base 27 mais en base 28(enfin je parle des bases conventionnelles c'est a dire qui commence par 1,2,3,4,5,6,7,8,9).
mais bon c'est toi qui code donc tu ne vas surement pas mettre un 1,2 ou 3 dans le nom
ce qui donne a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,-
a=1,b=2,...,m=13,...,s=19
donc sam=19*27^2+1*27^1+13*27^0=13891 en base 27 si tu choisi a=1 et "-"=27
c'est donc un nombre que tu peux tout à fait stocker
"l'impossible n'est pas français", Je suis français je suis donc capable de tout.
Mooooooi Hors ligne Membre Points: 33 Défis: 0 Message

Citer : Posté le 13/01/2017 12:20 | #


d'accord et pour le convertir dans l'autre sens commenton fais pour savoir l'ordre?
Et7f3 Hors ligne Membre Points: 176 Défis: 1 Message

Citer : Posté le 13/01/2017 12:25 | #


mod(A,27) te donneras la valeur de la dernière lettre donc mod(a,27)=13
puis tu fait de manière recursive (A-mod(a,27))/27-A
excplications tu enlèves la dernière lettre et tu divises par 27 pour "décaler" la tête de lecture.
mod(a,27) donnera donc 1
si tu veux tu peux lire mon antépénultième message j'ai un code de démo recopie le sur calto.
"l'impossible n'est pas français", Je suis français je suis donc capable de tout.
Mooooooi Hors ligne Membre Points: 33 Défis: 0 Message

Citer : Posté le 13/01/2017 12:34 | #


ah oui merci je n'avais pas compris mais la je viens de comprendre. Je te remercie du temps que tu as passé a m'expliquer :
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 13/01/2017 14:19 | #


Je ne sais pas s'il est toujours utile que je l'explique, mais l'idée de la base 27 c'est que tu as 27 caractères différents (26 lettres et l'espace), et tu identifies chaque caractère à un « digit en base 27 », à savoir des entiers de 0 à 26.

Ensuite tu stockes la valeur entière obtenue en ajoutant ces termes pour former un mot (tu sommes des termes de la forme lettre * 27^n, où la lettre est entre 0 et 26 et n la position de la lettre dans ton mot). L'intérêt c'est que la base 27 est le système de représentation d'un texte à 27 lettres qui donnera les plus petites valeurs entières, donc, pour un nombre utilisable maximal donné (ici aux alentours de 10^12, après la calculatrice fait des arrondis que l'on ne veut pas), le maximum de lettres.

Ça se généralise bien avec n'importe quel nombre de lettres, mais au fond que ce soit en base 27 ou non, c'est simplement la façon dont on l'interprète. On pourrait avoir le même nombre en base 5.
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)

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 v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 113 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