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 » Scrolling de matrice [résolu]
Matt36230 Hors ligne Membre Points: 1888 Défis: 0 Message

Scrolling de matrice [résolu]

Posté le 26/01/2015 19:34

Salut à tous !

Je fait un petit jeu qui arrive bientot. Pour ce faire, j'avait besoin d'un "scrolling" de matrice. Je m'explique, il fallait que la case 2 remplace la 1, la 3 remplace la 2 etc jusqu'à la 17 qui remplace la 16. J'avait fait
de cette manière
Cliquer pour enrouler
For 1→A to 16//Les cases de la liste
For 1→P To 4//les 4 colonnes de la liste
Mat A[P,A+1]→Mat A[P,A]//On fait "scroller" les colonnes
Next
Next
. Mais c'est un chouilla lent et j'aimerai réduire la vitesse le plus possible.

Remiweb a mis en pièce jointe un petit exemple très bien commenté que je vous invite à aller voir en page 1.

Un énorme merci à toi !


Matt36230 Hors ligne Membre Points: 1888 Défis: 0 Message

Citer : Posté le 26/01/2015 21:28 | #


@Remiweb : Un petit programme serait pas de refus stp

@Lephe : D'accord merci et les liste je ne peux pas les placer ou je veux
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 26/01/2015 21:29 | #


Matt36230 a écrit :
@Lephe : D'accord merci et les liste je ne peux pas les placer ou je veux

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

Citer : Posté le 26/01/2015 21:33 | #


Ou je veux dans la matrice
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 26/01/2015 21:53 | #


Ben, est-ce que tu as essayé quelque chose comme ça ?
Remiweb a écrit :
For 1->K to 16
Mat->List(A,K+1) -> List K
Next
4->Dim list 17
List->Mat(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17)->Mat A

Je ne vois guère que ça sinon...
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Remiweb Hors ligne Membre de CreativeCalc Points: 1040 Défis: 32 Message

Citer : Posté le 26/01/2015 22:16 | #


Regardez mon programme à la page d'avant, je ne fais que mettre les nouvelles valeurs dans la matrice (sans la décaler donc) ce qui est super rapide

Ce que tu fais avec ta méthode c'est virer la colonne qui n'est plus affichée à l'écran (puisque le décor avance), et en rajouter une nouvelle (partie du décor qui apparaît).
Donc on vire la plus ancienne colonne et on en rajoute un nouvelle, le nombre est toujours le même.

En supprimant l'ancienne qui est à gauche dans la matrice et rajoutant la nouvelle à droite ça donne ça :
1 2 3 4 5 6 -> 2 3 4 5 6 7 -> 3 4 5 6 7 8

Mais avec ma méthode on remplace juste la plus ancienne par la nouvelle (on l'écrase) :
1 2 3 4 5 6 -> 7 2 3 4 5 6 -> 7 8 4 5 6 7

Si on regarde les valeurs ce sont les mêmes, c'est simplement qu'elles ne sont pas organisées de la même manière.
Cette organisation nécessitait de faire "tourner" ta matrice et c'est ce qui rendait le programme lent...

Avec ta méthode c'était facile : la valeur à supprimer est à gauche, la nouvelle à droite.
Avec ma méthode c'est un peu plus compliquée puisqu'il faut savoir où est la colonne à virer, mais au moins on évite les déplacements inutiles et lents.
Pour les formules qui permettent de faire ça c'est les MOD(...) dans mon programme à la page précédente.

Il faudrait que tu te créer un matrice pour tester et essayer à la main avec X=1, puis X=2 etc... pour voir comment ça agit
Tweaks : ||||| ||||
Purobaz Hors ligne Membre d'honneur Points: 2690 Défis: 110 Message

Citer : Posté le 26/01/2015 22:21 | #


C'est la méthode de Remiweb qu'il faut utiliser. Tu ne modifies qu'une colonne de ta matrice à chaque itération.
C'est le même principe pour les jeux de snake...
I'll be back !
pour plus de fun
mes programmes fun
de technique
mes projets
et de Swag
les projets que je soutiens
Matt36230 Hors ligne Membre Points: 1888 Défis: 0 Message

Citer : Posté le 27/01/2015 19:02 | #


Merci à vous tous ! J'ai adapté l'exemple de Remiweb et cela fonctionne plus que bien :thx:.

Ajouté le 27/01/2015 à 19:08 :
Le seul soucis c'est que j'ai pas compris comment le modulo permettait de trouver le résultat (ça doit être tout bête en plus ). Mais bon ça fonctionne alors je me plains pas
-florian66- Hors ligne Ancien rédacteur Points: 2383 Défis: 20 Message

Citer : Posté le 27/01/2015 19:09 | #


le modulo sert à savoir le reste de la division euclidienne de a par b
In Arch, I trust ! And you ?
Matt36230 Hors ligne Membre Points: 1888 Défis: 0 Message

Citer : Posté le 27/01/2015 19:10 | #


Je savais ca mais comment ce résultat permet de savoir l'emplacement de la bonne hitbox dans la matrice ?
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 27/01/2015 19:10 | #


Le modulo de A par B est le reste de la division entière (euclidienne) de A par B.
Exemple : MOD(7,2) = 1 car 7 = 2 * 3 + 1. De même, MOD(112,17) = 10 car 112 = 17 * 6 + 10.

Suis-je clair ?
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 98 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