re-bonjour,
encore un point d'interrogation lors de la création des scores sur ma TI-83 premium ( ) :
comment faire les premier scores sachant que la personne qui utiliseras pour la première fois le jeu n'auras pas les lises là ?
merci d'avance
JK
ps: j'utilise les listes !!! ^^
premier score
-
FjFk
Niveau 11: LV (Légende Vivante)- Messages: 282
- Images: 18
- Inscription: 01 Mai 2018, 15:59
- Genre:
- Calculatrice(s):→ MyCalcs profile
- Classe: T STL
Re: premier score
Tu peux faire au début du programme un menu "première utilisation" où si l'utilisateur sélectionne première utilisation tu définis toute tes listes nécessaires
-
randlogAmbianceur
Niveau 16: CC2 (Commandeur des Calculatrices)- Messages: 567
- Inscription: 05 Sep 2015, 16:23
- Genre:
- Calculatrice(s):→ MyCalcs profile
- Classe: Supoptique
Re: premier score
ça dépend comment tu t'y prends ;
si à chaque partie tu ajoute un score, alors ça va être compliqué.
Sinon tu peux créer une liste à la première utilisation du programme (ça te demandera d'utiliser une variable que tu n'utiliseras qu'au début du programme pour vérifier si le programme a déjà été utilisé, par exemple un Z, s'il vaut autre chose que 56 (une valeur qu'il ne risque pas d'avoir), alors tu lui assignes la valeur 56 et tu crées une liste composée uniquement de 0, par exemple 10 fois 0. tu peux appeler cette liste LSCORE (avec un petit L, indiquant que c'est une liste). Cette méthode n'est pas parfaite, si un petit malin supprime la liste SCORE alors le programme aura des erreurs.
LSCORE(1) sera le score record, LSCORE(2) le deuxième meilleur etc ... A la fin d'une partie, tu pourrais tester avec une boucle for si le score est supérieur à un élément de LSCORE. S'il est supérieur à LSCORE(5) mais inférieur à LSCORE(4), la méthode consisterais à délacer tous les éléments de LSCORE entre 5 et 9 un élément en dessous, et enfin à mettre le score de la partie dans LSCORE(5). Ca se fait avec une boucle mais c'est un peu long, je l'admet
Il doit y avoir une méthode plus simple
si à chaque partie tu ajoute un score, alors ça va être compliqué.
Sinon tu peux créer une liste à la première utilisation du programme (ça te demandera d'utiliser une variable que tu n'utiliseras qu'au début du programme pour vérifier si le programme a déjà été utilisé, par exemple un Z, s'il vaut autre chose que 56 (une valeur qu'il ne risque pas d'avoir), alors tu lui assignes la valeur 56 et tu crées une liste composée uniquement de 0, par exemple 10 fois 0. tu peux appeler cette liste LSCORE (avec un petit L, indiquant que c'est une liste). Cette méthode n'est pas parfaite, si un petit malin supprime la liste SCORE alors le programme aura des erreurs.
LSCORE(1) sera le score record, LSCORE(2) le deuxième meilleur etc ... A la fin d'une partie, tu pourrais tester avec une boucle for si le score est supérieur à un élément de LSCORE. S'il est supérieur à LSCORE(5) mais inférieur à LSCORE(4), la méthode consisterais à délacer tous les éléments de LSCORE entre 5 et 9 un élément en dessous, et enfin à mettre le score de la partie dans LSCORE(5). Ca se fait avec une boucle mais c'est un peu long, je l'admet
Il doit y avoir une méthode plus simple
-
loupiotProgrammeur
Niveau 14: CI (Calculateur de l'Infini)- Messages: 158
- Images: 4
- Inscription: 30 Oct 2015, 13:23
- Genre:
- Calculatrice(s):→ MyCalcs profile
- Classe: 2A ENS Lyon maths
Re: premier score
C'est un très bon exercice d'algorithmique sur les listes que d'apprendre à insérer un élément au bon endroit dans une liste classée... et la méthode que tu suggères, loupiot, est la bonne (on peut améliorer la recherche en faisant une recherche dichotomique s'il y a une TRES grande liste... mais ça n'améliorera pas les performances globales puisqu'il faudra tout décaler de toute façon).
En Python, en revanche, ça prendrait une ligne...
En Python, en revanche, ça prendrait une ligne...
-
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)- Messages: 5665
- Inscription: 11 Mar 2008, 00:00
- Localisation: Lyon
- Genre:
- Calculatrice(s):→ MyCalcs profile
Re: premier score
loupiot a écrit:ça dépend comment tu t'y prends ;
si à chaque partie tu ajoute un score, alors ça va être compliqué.
Sinon tu peux créer une liste à la première utilisation du programme (ça te demandera d'utiliser une variable que tu n'utiliseras qu'au début du programme pour vérifier si le programme a déjà été utilisé, par exemple un Z, s'il vaut autre chose que 56 (une valeur qu'il ne risque pas d'avoir), alors tu lui assignes la valeur 56 et tu crées une liste composée uniquement de 0, par exemple 10 fois 0. tu peux appeler cette liste LSCORE (avec un petit L, indiquant que c'est une liste). Cette méthode n'est pas parfaite, si un petit malin supprime la liste SCORE alors le programme aura des erreurs.
LSCORE(1) sera le score record, LSCORE(2) le deuxième meilleur etc ... A la fin d'une partie, tu pourrais tester avec une boucle for si le score est supérieur à un élément de LSCORE. S'il est supérieur à LSCORE(5) mais inférieur à LSCORE(4), la méthode consisterais à délacer tous les éléments de LSCORE entre 5 et 9 un élément en dessous, et enfin à mettre le score de la partie dans LSCORE(5). Ca se fait avec une boucle mais c'est un peu long, je l'admet
Il doit y avoir une méthode plus simple
pour le passage du premier au 2 eme si le nouveau est plus grand ect: c'est fait.
moi, c'est comment aire pour insérer au début un score (30 par exem) sans qu'il ce remette a 30 quand la partie recommence .
-
FjFk
Niveau 11: LV (Légende Vivante)- Messages: 282
- Images: 18
- Inscription: 01 Mai 2018, 15:59
- Genre:
- Calculatrice(s):→ MyCalcs profile
- Classe: T STL
Re: premier score
La méthode la plus simple est de transferer la liste (au format .8xl) avec les .8xp, initialement à 0.
-
puppy65
Niveau 9: IC (Compteur Infatigable)- Messages: 313
- Images: 0
- Inscription: 09 Nov 2017, 19:26
- Genre:
- Calculatrice(s):→ MyCalcs profile
- Classe: 2nde
Re: premier score
Je ne comprends pas bien ce que tu veux faire.
Il y a bien évidemment deux variables à considérer : une variable qui compte le score de la partie en cours, et une autre variable (une liste, en l'occurrence) qui enregistre les meilleurs scores.
Bien évidemment aussi, tu réinitialises ta variable compte le score à chaque nouvelle partie... mais tu ne réinitialises pas la lise des meilleurs scores.
Il y a bien évidemment deux variables à considérer : une variable qui compte le score de la partie en cours, et une autre variable (une liste, en l'occurrence) qui enregistre les meilleurs scores.
Bien évidemment aussi, tu réinitialises ta variable compte le score à chaque nouvelle partie... mais tu ne réinitialises pas la lise des meilleurs scores.
-
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)- Messages: 5665
- Inscription: 11 Mar 2008, 00:00
- Localisation: Lyon
- Genre:
- Calculatrice(s):→ MyCalcs profile
Re: premier score
Dans la liste à transférer (disons LSCOR), il y aura
Le programme principal fera :
(N est le score de la partie en cours)
Le premier score est ainsi enregistré
- Code: Tout sélectionner
{0 ; 1}
Le programme principal fera :
- Code: Tout sélectionner
If LSCOR(2)=1
Then
N->LSCOR(1)
0->LSCOR(2)
End
(N est le score de la partie en cours)
Le premier score est ainsi enregistré
-
puppy65
Niveau 9: IC (Compteur Infatigable)- Messages: 313
- Images: 0
- Inscription: 09 Nov 2017, 19:26
- Genre:
- Calculatrice(s):→ MyCalcs profile
- Classe: 2nde
Re: premier score
Désolé j'ai pas compris. J'ai fait le code pour récupérer le "premier" score, et pas le meilleur score
C'est simple alors, on fait un programme "INSTALL" qui crée une liste (LSCOR) avec 3 scores (tous 0) à ne lancer que pour installer le jeu, et à la fin de chaque partie (N état le score), on fait :
Après si tu veux 10 meilleurs scores c'est pas chose facile...
C'est simple alors, on fait un programme "INSTALL" qui crée une liste (LSCOR) avec 3 scores (tous 0) à ne lancer que pour installer le jeu, et à la fin de chaque partie (N état le score), on fait :
- Code: Tout sélectionner
If N>LSCOR(1)
Then
LSCOR(2)->LSCOR(3)
LSCOR(1)->LSCOR(2)
N->LSCOR(1)
Else
If N->LSCOR(2)
Then
LSCOR(2)->LSCOR(3)
N->LSCOR(2)
Else
If N>LSCOR(3)
Then
N->LSCOR(3)
End
End
End
Après si tu veux 10 meilleurs scores c'est pas chose facile...
-
puppy65
Niveau 9: IC (Compteur Infatigable)- Messages: 313
- Images: 0
- Inscription: 09 Nov 2017, 19:26
- Genre:
- Calculatrice(s):→ MyCalcs profile
- Classe: 2nde
Re: premier score
Mais si, c'est facile...
Je donne l'exemple avec une liste contenant P valeurs :
C'est même plus court que ton cas particulier...
Je donne l'exemple avec une liste contenant P valeurs :
- Code: Tout sélectionner
For I,1,P
If N>LSCOR(I)
Then
Break
End
End
For J,P-1,I,-1
LSCOR(J)→LSCOR(J+1)
End
N→LSCOR(I)
C'est même plus court que ton cas particulier...
-
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)- Messages: 5665
- Inscription: 11 Mar 2008, 00:00
- Localisation: Lyon
- Genre:
- Calculatrice(s):→ MyCalcs profile
24 messages
• Page 1 sur 3 • 1, 2, 3
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 25 invités