Posté le 26/05/2012 18:52
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 93 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 26/05/2012 19:52 | #
Non, il faut que tu crées la fonction toi-même.
{18,22,36,14,58}->List 1
Dim List 1->D
"ELEMENT A SUPPRIMER"?->B
For B->B To D //On décale les éléments suivants de l'élément à supprimer
List 1[B+1->List 1[B
Next
For 1->B To D-1
List 1[B->List 2[B //On copie la Liste 1 dans la Liste 2 sauf la dernière case
Next
ClrList 1 //On nettoie la Liste 1
List 2->List 1 //On copie la Liste 2 dans la Liste 1
ClrList 2 //On nettoie la Liste 2
C'est le premier code qui me soit sorti de la tête, il y a peut-être plus simple.
Vitesse des fonctions en Basic Casio | 7 days CPC | Casio Universal Wiki | Tutoriel Basic Casio
>>> Give me a click Brother <<< >>> Teste mon générateur de mots nouveaux <<<
>>> Random Youtube Video <<<
Citer : Posté le 26/05/2012 19:58 | #
et oui casio ne nous aide vraiment pas alors on doit tout faire nous même et donc ça devient treeees lent
(ps: totoyo SC2 tu le fais en C ou en basic?)
Jouez à 6 sur une seule calto : Curve Fever
Un die and retry qui vous fera bieeeen rager Test Andropov
un très bon sokoban
le seul vrai jeu de foot en basic : FIFA 12
Ca c'est ce que j'appelle un jeu de reflexion jewel master
Qui vaincra l'intelligence artificielle de cet othello
Le célèbre pacman
Et tant d'autres BTL's games
Le jeu du mois de Novembre et award du jeu le plus dur de l'année 2013 MultiTask, testez-le
Citer : Posté le 26/05/2012 20:08 | #
@Btl : Lien
Citer : Posté le 26/05/2012 21:13 | #
Domage, j'avais déjà fait une méthode plus optimisée que ce que tu proposes Totoyo, mais ça reste toujours lent...
Merci.
Sinon, il n'y a pas non plus de moyen de changer la dimension d'une liste sans changer les valeurs de cette liste ?
Citer : Posté le 26/05/2012 21:19 | #
Ton code est très bien Totoyo !
Je voyais plus la chose comme ceci, en une seule boucle :
? -> A //A = case à supprimer
Dim List 1 -> B // B = nombre de cases de la List 1
B-1 -> Dim List 2 // Création d'une liste comportant B-1 case
For 1 -> C To B-1 // La boucle s’exécute B-1 fois
C -> D
C >= A => Isz D
List 1[D -> List 2[C
Next // Fin de la boucle
List 2 -> List 1 // Transfère le contenu de la List 2 dans la List 1, ce qui efface automatiquement la List 1
ClrList 2 // Efface la List 2
Mais les deux se valent !
La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
Citer : Posté le 27/05/2012 10:06 | #
Tu peux augmenter le nombre de cases d'une liste en ajoutant de nouvelles cases.
Par exemple, ta Liste 1 fait 4 cases. Tu fais 0->List 1[5] et ta liste fait désormais 5 cases.
Par contre, tu ne peux pas passer de 4 cases à 6 cases directement de cette façon : 0->List 1[6] car il manque la case 5.
Tu dois utiliser la fonction Augment() qui permet de fusionner deux listes ou deux matrices.
Augment(List 1,{0,0,0->List 1
Tu ajoutes 3 cases à ta liste.
Vitesse des fonctions en Basic Casio | 7 days CPC | Casio Universal Wiki | Tutoriel Basic Casio
>>> Give me a click Brother <<< >>> Teste mon générateur de mots nouveaux <<<
>>> Random Youtube Video <<<
Citer : Posté le 27/05/2012 10:20 | #
J'ai oublié de préciser, c'est pour réduire la dimension d'une liste.
Merci, je ne connaisais pas l'astuce avec le dernier+1
Citer : Posté le 27/05/2012 10:27 | #
Pour réduire une liste, on ne connait pas mieux comme technique...
Vitesse des fonctions en Basic Casio | 7 days CPC | Casio Universal Wiki | Tutoriel Basic Casio
>>> Give me a click Brother <<< >>> Teste mon générateur de mots nouveaux <<<
>>> Random Youtube Video <<<
Citer : Posté le 27/05/2012 11:52 | #
Au pire tu mets un 0 dans la case à supprimer, et dans l'algo qui lit la liste, si la case est égale à 0 tu passes à la case suivante.
Ne0tux, tu peux optimiser ton algo :
C>=A->Isz D
donne :
Escape prison
Bloxorz
Free wheel
QR code
Nombre en or
RayCasting Engine
Mario Party
Zelda
et Planète Casio
Citer : Posté le 27/05/2012 13:02 | #
Au pire tu mets un 0 dans la case à supprimer, et dans l'algo qui lit la liste, si la case est égale à 0 tu passes à la case suivante.
J'ai faillit le proposer,. C'est un technique comme une autre qui a l'avantage de conserver la même taille de List tout au long du programme.
Ne0tux, tu peux optimiser ton algo :
C>=A->Isz D
donne :
Exact.
Je ne suis pas à l'aise avec les conditions sous cette forme. J'ai préféré ne pas embrouiller notre ami et ne pas dire de bêtises...
Ceci dit, merci à toi !
La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
Citer : Posté le 27/05/2012 13:17 | #
Pas possible avec le zero, puisque c'est des listes que j'utilise avec drawstat.
Merci quand même.
Ne t'en fais pas pour moi. J'ai déjà plusieurs années derrière moi
Citer : Posté le 27/05/2012 13:34 | #
Pas possible avec le zero, puisque c'est des listes que j'utilise avec drawstat.
Merci quand même.
Mets un nombre très grand alors !
Escape prison
Bloxorz
Free wheel
QR code
Nombre en or
RayCasting Engine
Mario Party
Zelda
et Planète Casio
Citer : Posté le 27/05/2012 14:05 | #
Non, dans mon jeu, il y a un déplacement latérale de la caméra, et les immeubles sont crées alétoirement au fur et à mesure, de même ceux qui sortent de l'écran sont effacés, donc le but c'est d'avoir une liste qui correspond uniquement aux immeubles présents sur l'écran afin de ne pas surcharger en mémoire et d'avoir un jeu fluide.
Citer : Posté le 27/05/2012 14:11 | #
Dans ce cas, tu devrais remplacer les coordonnées des immeubles sortants par celles des immeubles entrants.
C'est un peu le principe de mon jeu => lien.
Malheureusement le scrolling horizontal est assez lent en basic.
Escape prison
Bloxorz
Free wheel
QR code
Nombre en or
RayCasting Engine
Mario Party
Zelda
et Planète Casio
Citer : Posté le 27/05/2012 14:18 | #
Si tu recherche la fluidité, pour effectuer le déplacement latéral de la caméra, change le ViewWindow plutôt que de changer les coordonnées des Lists !
Je n'e sais pas si l'adaptation de cette méthode est possible pour ton jeu mais je te la conseille vivement.
En effet, l'affichage d'un graphisme par le Drawstat est relativement rapide. Ce qui l'est moins, c'est "l'adressage" des coordonnées parfois très nombreuses dans les Lists correspondantes. L'astuce consiste donc à supprimer le temps correspondant à cet adressage, en remplissant les Lists une bonne fois pour toute, et en changeant les paramètres du ViewWindow, afin de décaler l'élément graphique.
J'espère que cela pourra t'aider, même si j'ai l'impression que tu ne pourras pas l'utiliser pour ton jeu actuel.
Sinon, en résumé, voici le code pour supprimer une valeur d'une liste (Merci Puro' pour l'optimisation) :
Dim List 1->B
B-1 -> Dim List 2
For 1->C To B-1
C+(C>=A->D
List 1[D->List 2[C
Next
List 2->List 1
ClrList 2
La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
Citer : Posté le 27/05/2012 14:59 | #
Pour décaler le drawstat tu peux aussi faire :
List 1 - 2 -> List 1
C'est aussi très rapide.
Escape prison
Bloxorz
Free wheel
QR code
Nombre en or
RayCasting Engine
Mario Party
Zelda
et Planète Casio
Citer : Posté le 27/05/2012 15:01 | #
Purobaz, je vais voir, pour changer, ca risque d'être pire étant donné que l'espace, la hauteur et la largeur de chaque batiment est aléatoire.
Ne0tux, j'ai déjà fait avec le ViewWindow
EDIT :
List 1 - 2 List 1
C'est aussi très rapide.
Je dois faire ça pour les trois listes (batiment, ennemis, tir) donc c'est pour cela que j'ai fait avec le viewwindow.
Deplus avec ViewWindow on peut faire des zooms
Citer : Posté le 29/05/2012 18:24 | #
c'est une adaptation de Canabalt ? (les immeubles aléatoires...)
Citer : Posté le 29/05/2012 19:54 | #
Peut être, je ne connais pas mdr.
Mais j'ai laché ce projet, ce n'était qu'un entraînement, je suis en train de faire un Age of Empire.