Posté le 21/11/2019 19:59
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 266 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
Citer : Posté le 21/11/2019 20:02 | #
Il faut que tu expliques ce que tu veux, car il y a plusieurs façons de comparer une liste avec une variable.
• Tu veux vérifier que tous les éléments de la liste sont égaux à la variable ?
• Tu veux savoir si la valeur de la variable est présente dans la liste ?
• Tu veux trouver l'indice de la première occurrence de la valeur de la variable ?
• Tu veux trouver les indices de toutes les occurrences de la valeur de la variable ?
Est-ce que c'est acceptable de changer l'ordre de la liste en même temps qu'on enlève les doublons ?
Citer : Posté le 21/11/2019 20:06 | #
ma liste stocke toute les coordonnées et types des objets posés sur la map, donc le changement de l'ordre n'a aucune importance. j'ai besoin d'avoir tout le nombre car je stocke comme ceci : 2(type d'objet),3(coo en Y)16(coo en X) ou 2.316
Citer : Posté le 21/11/2019 20:19 | #
Voilà un code qui élimine tous les doublons de la liste 1.
• Je suppose que la liste 2 est disponible pour calculer.
• Je suppose que 0 est une valeur qui n'apparaît pas dans la liste 1 (et toutes les valeurs sont positives).
SortA(List 1)
Augment(List 1,{0})→List 2
Augment({0},List 1)→List 1
List 1≠List 2→List 2
List 1×List 2→List 1
SortD(List 1)
Seq(List 1[X],X,1,Sum List 2-1,1)→List 1
// List 1={8,7,6,5,4,1}
Citer : Posté le 21/11/2019 20:22 | #
et si les 26 listes sont prises ?
Citer : Posté le 21/11/2019 20:26 | #
L->Dim List 2 //Create temp list with the same size as one we are testing
Fill(A,List 2 //A is the variable you're testing
List 1=List 2
Sum List Ans->N//This tells you have many times your variable appears in the list
//This is if you want the location of that number in the list
Seq(X,X,1,L,1->List 2
List 2List Ans
Sum List Ans->P //This tells you the Postion of the number, but wont work if there is multiple instances of that number
If your list is only 5 long or so, going through each element with a for loop might be faster
Citer : Posté le 21/11/2019 20:29 | #
Juste pour clarifier, le code de Redcmd ci-dessus cherche la valeur de A dans la liste, ce qui est différent de mon code.
et si les 26 listes sont prises ?
Et bien ça marche quand même !
SortA(List 1)
Augment(List 1,{0})
List Ans×(List Ans≠Augment({0},List 1))→List 1
SortD(List 1)
Seq(List 1[X],X,1,Sum (List 1≠0),1)→List 1
// List 1={8,7,6,5,4,1}
Edit: amélioré le temps de calcul en utilisant la liste Ans.
Citer : Posté le 21/11/2019 20:30 | #
bon et bien je vais essayer ça je vois si ça boost mon jeu...
Ajouté le 21/11/2019 à 20:32 :
https://www.planet-casio.com/Fr/programmes/voir_un_programme_casio.php?showid=3969
sinon tu peux le télécharger et me dire si ça passera ? (si ce n'est pas trop demander)
Ajouté le 02/12/2019 à 19:22 :
Re ça ne convient pas à mon jeu ! Désolé d'être cash mais je vais essayer de reformuler extrêmement clairement précisément ce que je voulais comme application (maintenant que j'ai des listes) :
Notre personnage voyage sur la carte quand il voit un magnifique diamant devant lui. Il le mine et rajoute dans la liste ceci : 0,513 (0 est le type, 5 la profondeur et 13 sur l'axe x)
Mais lorsque notre perso fait un aller retour pour aller vendre ce précieux, il voit le diamant réapparaître et disparaître juste ensuite !
(car il extrait de la liste la co du diamant, puis du vide fait par la pioche)
Et ce que je veux, c'est que cette hallucination disparaisse...
Citer : Posté le 02/12/2019 19:25 | #
C'est un problème dans ton programme ça, pas un problème de listes. D'abord, traduis ça en le problème associé sur la liste, et la solution sera plus claire.
Citer : Posté le 02/12/2019 20:31 | #
Mais je ne vois pas comment ?
Citer : Posté le 02/12/2019 20:33 | #
Hé hé, je ne sais jamais répondre à cette question... c'est trop naturel pour moi...
Ton programme ne "marche pas bien" car il autorise le diamant à rester dans la liste. Si j'ai bien compris, tu ne fais que mettre du vide dessus, alors que la vérité c'est qu'il n'y a plus de diamant du tout.
Donc, il me semble que ton problème c'est que tu as inséré dans ta liste un objet disant "fais comme si le diamant n'était pas là" au lieu de supprimer le diamant pour de vrai.
Ça c'est un problème sur les listes, tu vois.
Citer : Posté le 02/12/2019 20:45 | #
Oui c'est vrai mais si j'ai une liste de 10 minerais, je dois vérifier si les co sont déjà comprises à chaque frame... Et ça peut monter jusque plusieurs douzaine de coordonnées a vérifier...
Citer : Posté le 02/12/2019 21:00 | #
Si les "co" ? Je ne vois pas pourquoi tu aurais besoin de le faire à chaque frame, plutôt que juste quand on crée ou détruit des minerais.
Citer : Posté le 02/12/2019 21:15 | #
Oui c'est ce que je voulais dire mais c'est lent de faire ça...
Sinon je peux essayer de le post mtn...
Citer : Posté le 02/12/2019 21:54 | #
Qu'est-ce qui serait lent exactement ? Écris-le de façon claire, tu verras, ça résoud la moitié du problème.
(Je suis à peu près sûr que quoi que tu essaies de faire, je sais le faire efficacement, mais faut bien poser le problème.)
Citer : Posté le 03/12/2019 06:52 | #
Supprimer le diamant de la liste serait encore plus simple, met la valeur à 0 et teste au début de ton code de dessin la valeur (si valeur supérieure à 0 dessiner diamant).
Si ça ne te convient toujours pas, et pour tes prochaines questions, donne le problème, pas la solution que tu penses avoir et n'arrives pas à implémenter
Citer : Posté le 03/12/2019 06:57 | #
Quand je mine sur la carte, je pars et que je reviens, tout apparaît au fur et à mesure comme une histoire...
Citer : Posté le 03/12/2019 07:15 | #
1) Ne supprime pas le topic, c'est horrible de tout faire sur la page d'un programme.
2) Que se passe-t-il concrètement quand tu "mines" sur la carte ?
À quoi sert la variable à comparer ?
Citer : Posté le 03/12/2019 07:45 | #
Chaque fois que la pioche ou l'échelle est utilisée, il stocke le type et le coordonnées de celui ci avec les minerais qui ont été générée dans une liste dédié à un "écran" car ma méthode est de générer de la terre partout (des 1 dans la matrice) et puis de lire dans la liste ce qui a été changé et le placer (9 à la place de 1 pour le diamant par exemple)
La solution que j'avais serai que si on revient dans un "écran" déjà visité, il efface les ancienne coordonnées des minerais pour le remplacer par du vide ou des échelles...
Citer : Posté le 03/12/2019 07:47 | #
Chaque fois que la pioche ou l'échelle est utilisée, il stocke le type et le coordonnées de celui ci avec les minerais qui ont été générée dans une liste dédié à un "écran" car ma méthode est de générer de la terre partout (des 1 dans la matrice) et puis de lire dans la liste ce qui a été changé et le placer (9 à la place de 1 pour le diamant par exemple)
La solution que j'avais serai que si on revient dans un "écran" déjà visité, il efface les ancienne coordonnées des minerais pour le remplacer par du vide ou des échelles...
Étant donné que tu n'as que 6 écrans de 21×7, pourquoi ne pas tout stocker dans une matrice ? Ce n'est pas économe en mémoire mais tu peux la supprimer à la sortie du jeu et c'est rapide.
Citer : Posté le 03/12/2019 07:54 | #
Non car je vais augmenter progressivement vers une map gigantesque