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 » Animer un sprite complexe de 15x15 pixels en mode graphique
Oradimi Hors ligne Membre Points: 42 Défis: 0 Message

Animer un sprite complexe de 15x15 pixels en mode graphique

Posté le 03/10/2018 19:11

Bonjour à tous !
Je cherche à animer, en mode graphique, un sprite assez complexe avec une vingtaine de points, pour qu'il aille de la gauche vers la droite de l'écran. Le problème est qu'il est très lent pour s'afficher, et clignote, ce qui donne une animation qui n'est pas agréable à regarder. J'ai utilisé le Multi Draw Stat pour dessiner le sprite.
Je voulais aussi afficher plusieurs de ces sprites allant vers la droite et d'autres vers la gauche.
Je sais qu'on est en Basic Casio, mais n'existerait-il pas une solution pour éviter que la calculatrice redessine depuis le début le sprite à chaque déplacement ?
Merci !


1, 2 Suivante
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 03/10/2018 19:24 | #


Malheureusement non, le plus proche que tu puisses avoir c'est un scrolling avec des pictures, mais c'est possible qu'horizontalement.
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Shadow15510 Hors ligne Administrateur Points: 5504 Défis: 18 Message

Citer : Posté le 03/10/2018 19:53 | #


Après la solution ultime c'est le... C je vois ta déception d'ici L'animation de sprites reste le gros point faible du BASIC
Par contre, tu peux jouer sur le ViewWindow si ton sprite ne change pas en cours d'animation tu dois avoir un topic qui en parle je ne me souviens plus du titre, mais c'est un truc comme "Utiliser le ViewWindow comme caméra"
En gros ton Xmin et Ymin sont définis par des lettres A, et B et les max par A+123 et B+63, tu obtiens un code comme

ViewWindow A,A+123,0,B,B+63,0


en faisant varier A et B, ton sprites se déplaceras à l'écran
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 03/10/2018 20:14 | #


Oui c un de mes topics, j'ai meme posté recemment un exemple qui affiche plus que 20 pixels (un gros dessin) et le deplace sans probleme de clignotement. Tu peut meme zoomer. Mais je ne pense pas que le zoom t'importe (ne grossit pas les traits !). Il est ici.
Oradimi Hors ligne Membre Points: 42 Défis: 0 Message

Citer : Posté le 03/10/2018 21:13 | #


Merci pour vos réponses très rapides !
J'aurais une autre question du coup : pour le sprite il s'agit en fait d'un avion pour la future mise à jour 1.2 de mon programme d'airstrike, KanColle AS sim.
Pour l'affichage des simulations, je voudrais remplacer le mode texte par le mode graphique, pour y mettre plus de choses et, vous l'aurez deviné, ajouter quelques graphismes simples.
Je pensais à mettre un certain nombre de sprites d'avions en fonction de la taille de la flotte aérienne alliée ou ennemie. Comme une animation de tout ça est impossible, quelle est la meilleure solution pour que tous ces sprites d'avions s'affichent rapidement de manière fixe ? Voici le sprite en question : Avion pixel-art
Lephenixnoir Hors ligne Administrateur Points: 24670 Défis: 170 Message

Citer : Posté le 03/10/2018 21:47 | #


Juste une note rapide : les grands programmes Basic de ce site n'ont pas été créés qu'avec de la technique de programmation pour accomplir des choses compliquées de façon rapide ; la plupart d'entre eux adoptent des codes qui plongent le joueur dans l'univers avec un répertoire réduit d'opérations. La meilleure réponse au problème serait donc de retransmettre le mouvement par un moyen moins coûteux en temps de calcul (je n'ai pas d'idée précise en tête mais ça inspirera peut-être quelqu'un).
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Redeyes Hors ligne Membre Points: 634 Défis: 7 Message

Citer : Posté le 03/10/2018 23:18 | #


Shadow15510 a écrit :

Par contre, tu peux jouer sur le ViewWindow si ton sprite ne change pas en cours d'animation tu dois avoir un topic qui en parle je ne me souviens plus du titre, mais c'est un truc comme "Utiliser le ViewWindow comme caméra"

Mais c'est excellent ça!

@Oradimi: A mon avis, essaye tout d'abord de tracer le sprite en un nombre de coordonnées Multi Drawstat aussi réduit que possible pour diminuer les étapes de génération du sprite.
Ensuite en fonction du nombre d'avions que tu veux afficher, tu peux peut-être utiliser une boucle for ou while qui les affichera pour des coordonnées A et B distinctes successivement (A+2 ou B+5 durant la boucle)
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 03/10/2018 23:36 | #


Pour optimiser le MDS, deux méthodes complémentaires : tracer un minimum de lignes, puis voir si y'a pas moyen d'optimiser encore plus avec le sprite optimizer (https://www.planet-casio.com/Fr/forums/topic15315-1--Tutoriel--Utiliser-le-Sprite-Optimizer.html)
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Hackcell Hors ligne Maître du Puzzle Points: 1532 Défis: 11 Message

Citer : Posté le 04/10/2018 07:52 | #


Le problème pour le ViewWindow camera, c'est que autant on peut déplacer un sprite en déplacent la caméra, et deux sprite qui se déplace de manière indépendante avec des formules compliqué de rotation et de zoom, mais pour plus cette solution n'est pas adaptée...
Lephenixnoir Hors ligne Administrateur Points: 24670 Défis: 170 Message

Citer : Posté le 04/10/2018 15:53 | #


C'est surtout que chaque fois que tu changes le ViewWindow ça efface l'écran !
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 04/10/2018 17:35 | #


Et c'est pour ça que le programme que j'ai réalisé avec cette astuce utilise le SuperDrawstat pour tracer l'image (composee de traits uniquement). Mais apres reflexion je ne pense pas que ca soit la bonne solution pour ton programme vu que l'astuce du WiewWindow comme camera deplace tout ce qui est affiché à l'ecran et vu que tu ne va pas afficher que ton sprite d'avion ce n'est pas très approprié... désolé de ne pouvoir t'aider la dessus
PS: le mieux c quand meme le C
Kikoodx Hors ligne Ancien labélisateur Points: 3039 Défis: 11 Message

Citer : Posté le 04/10/2018 18:07 | #


Finalement la technique du ViewWindows a pas l'air utile, même contre productive.
Quelqu'un peut me donner son avantage ?
Parce que là
ouais ouais
Oradimi Hors ligne Membre Points: 42 Défis: 0 Message

Citer : Posté le 04/10/2018 18:18 | #


Merci beaucoup pour vos solutions !
Le Sprite Optimiser a optimisé mon sprite à fond ! Quand je fais déplacer l'avion, j'obtiens une animation qui lague au lieu d'un diaporama ! Merci beaucoup Dark storm ! Je peux peut-être envisager de reduire la taille du sprite pour réaliser mes ambitions, ou alors je trouverai une solution pour accélérer l'affichage des sprites à chaque combat aérien !
Pour le C, je verrai peut-être une fois que mon programme actuel sera complètement fini, à ce moment là je développerai peut-être une version 2.0 en C.
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 04/10/2018 19:17 | #


@Kikoodx: Ben cette astuce a l'avantage, si on reflechis un peut de pouvoir afficher et deplacer un dessin en SuperDrawsat fluidement (dans la limite du possible bien sur) et sortant de l'ecran, sans problèmes.
Kikoodx Hors ligne Ancien labélisateur Points: 3039 Défis: 11 Message

Citer : Posté le 04/10/2018 19:27 | #


Disperseur a écrit :
@Kikoodx: Ben cette astuce a l'avantage, si on reflechis un peut de pouvoir afficher et deplacer un dessin en SuperDrawsat fluidement (dans la limite du possible bien sur) et sortant de l'ecran, sans problèmes.

A part dans quelques cas particuliers je ne vois pas vraiment l'intérêt, mais c'est vrai que pour un arrière plan par exemple ça peut être utile
ouais ouais
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 04/10/2018 20:30 | #


Il y a effectivement toujours un intérêt fais en bon usage
Lephenixnoir Hors ligne Administrateur Points: 24670 Défis: 170 Message

Citer : Posté le 04/10/2018 21:42 | #


Je pense que c'est plus efficace de rajouter un A+ et un B+ devant le Super DrawStat que de s'embêter avec le View Window...
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Ninestars Hors ligne Membre Points: 2462 Défis: 24 Message

Citer : Posté le 04/10/2018 22:05 | #


En quoi le sprite optimizer a amélioré ton dessin ?
Tu avais dessiné ton avion comment en MDS ?
Oradimi Hors ligne Membre Points: 42 Défis: 0 Message

Citer : Posté le 04/10/2018 22:09 | #


Je n'avais fait aucune ligne diagonale, pensant que ça ferait un carré (oui c'est con)
Le dessin en soit est toujours le même.
Shadow15510 Hors ligne Administrateur Points: 5504 Défis: 18 Message

Citer : Posté le 05/10/2018 08:09 | #


Kikoodx a écrit :

A part dans quelques cas particuliers je ne vois pas vraiment l'intérêt, mais c'est vrai que pour un arrière plan par exemple ça peut être utile

Le ViewWindow deviant interresant si on a une picture en BackGround : imaginons, que j'ai une escadrille d'avions qui vole au-dessus de petites îles, je met un fond avec des îles dessinés, je dessine disons trois ou quatre avions et je les fait bouger via les paramètres du ViewWindow
L'escadrille reste bien puisque les écarts entre les avions ne changent pas, j'ai un fond qui ne bouge pas non plus, et voila !
Le problème reste si l'on a deux escadrille en vol, ou si il y a une escadrille ennemi en face...
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 05/10/2018 11:26 | #


Ça ne serait peut-être pas très propre mais tu peu alterner les escadrilles a afficher... tu en mets une en BackGround et l'autre se deplace...et inversement...
1, 2 Suivante

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 112 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