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 - Projets de programmation


Index du Forum » Projets de programmation » libAnim: un petit projet utile (j'espère)
Adbook Hors ligne Membre Points: 1050 Défis: 19 Message

libAnim: un petit projet utile (j'espère)

Posté le 13/12/2011 22:24

J'ai souvent galéré (en faisant Dead Labs notamment), dans mes jeux, avec les animation: "comment je fais pour changer là ?", "comment j'affiche ça 3 fois, puis ça ensuite ?", "comment j'empeche ça de s'afficher tant que ceci n'est pas fini ?", etc...
J'ai accumulé pas mal d'idées, et je me suis dit  hier soir que ce serait sympa de faire une petite lib pour simplifier tout ça et aider ceux qui en auraient besoin.
Je vous présente donc... libAnim  (nom de merde  :mmm: ), une lib qui simplifiera vos graphismes !

Description#Masquer
Cliquez pour recouvrir
 LibAnim
La lib est basé sur une structure: les "objets"

typedef struct objet objet;
struct objet{
coords* c; //structure de coordonnées de l'objet + taille des sprites
char nb; //taille du tableau de séquences (voir après)
char locked; //vous indique si une animation n'a pas été entierement exécutée
char current; //id de la séquence en cours
char n; //id du bitmap dans la sequence en cours
seq* *s; //tableau de séquences (voir ci dessous)
};

Un objets contient un tableau de pointeurs de seq (séquences):
Une séquence représente en fait une animation possible de l'objet (notez que la seq à l'index 0 du tableau est exécuté par défaut).

struct seq{
char n; //nombre de bitmaps dans la séquence
char isTemp; //savoir si l'animation est exécutable une fois ou en boucle
char* id; //nom de la séquence
unsigned char* *bitmap; //tableau de pointeurs de bitmaps
};

Fonctions:
Je vous présenterais les fonctions d'initialisation apres.
LibAnim a pour objectif de proposer le minimum de fonctions pour en faciliter l'utilisation.
drawCurrent et updateCurrent sont deux fonctions à appeler l'une après l'autre. L'une affiche l'animation et l'autre l'actualise.
triggerAnim est LA fonction de la lib.
Elle déclenche une animation chez un objet 
char triggerAnim(objet* o, char* id, char priority);
id est le nom de la séquence (ex: "walk")
Priority n'est pas utilisé pour le moment.

Fonctions d'initialisation

//renvoie un pointeur vers le seq créé. les arguments correspondent aux attributs de la structure. Ne pas oublier de libérer toutes les seq créées
seq* initSeq(char n, char isTemp, char* id, unsigned char* *bitmap);

//renvoie un pointeur vers l'objet créé. les arguments correspondent aux attributs de la structure. Ne pas oublier de libérer tous les objets créés
objet* initObjet(seq* *s, char nb, char x, char y, char sizeX, char sizeY);

Fonctions de libération:

//Pour libérer une séquence
seq* freeSeq(seq* s);

//Libère un objet
objet* freeObjet(objet* o);

//Libère un objèt + toutes les séquences qu'il contient (Ne pas utiliser si vous utilisez les memes séquences pour plusieurs objets)
objet* freeObjetR(objet* o);


Je poste en fichier joint les sources, dont le .h abondamment commenté qui remplacera mes explications pour le moment, ainsi qu'un petit code de test, qui vous expliquera comment utiliser les fonctions.
J'ai essayé de faire le plus pro possible, mais c'est pas encore tout à fait ça.
Je suis ouvert à toutes questions, suggestions, critiques, etc...


Fichier joint


Cartix Hors ligne Membre Points: 2748 Défis: 98 Message

Citer : Posté le 02/03/2012 17:44 | #


Gestion de la caméra ?
c'est à dire ?
Adbook Hors ligne Membre Points: 1050 Défis: 19 Message

Citer : Posté le 02/03/2012 17:57 | #


Ben tu ajoutes une caméra pour afficher l'objet par rapport à la caméra plutôt que par rapport à l'écran (ça permet par exemple de gérer des niveaux plus grands que l'écran ou autres...). Avant, l'objet était uniquement affiché par rapport à l'écran, ce qui n'est pas pratique pour les jeux qui justement utilisent une caméra (exemples: orton, dead labs...)
--------------------------------------------------

Calculatrice: Graph 35+ (modifiée 75) + graph 75
Dead Labs est sorti ! N'hésitez pas à l'essayer et à voter !!!
Cartix Hors ligne Membre Points: 2748 Défis: 98 Message

Citer : Posté le 02/03/2012 18:00 | #


ok, du scrolling, c'est ça ? Je pensais que tu parlais de camera 3d (isométrique)
Adbook Hors ligne Membre Points: 1050 Défis: 19 Message

Citer : Posté le 02/03/2012 18:44 | #


Ah non
Je parle bien de scrolling
--------------------------------------------------

Calculatrice: Graph 35+ (modifiée 75) + graph 75
Dead Labs est sorti ! N'hésitez pas à l'essayer et à voter !!!
Siapran Hors ligne Membre Points: 3248 Défis: 17 Message

Citer : Posté le 02/03/2012 18:52 | #


à quand une lib pour la 3D?

sinon epic gg Adbook
ça va être vachment utile pour *chut*
Fife86 Hors ligne Membre Points: 830 Défis: 0 Message

Citer : Posté le 27/12/2014 17:11 | #


Je n'arrive pas a compiler ta libraire sous le SDK de casio.
It's Show Time !!!
Mes Jeux :
- Street Fighter : Pour les accrocs du free-fight.
- Kirby's DreamLand : Gobe , Gobe , Gobe !!!
- L'invasion Seanchans : Détruit la flotte ennemis a bord du "Danseur des vagues".


< Le recoin du C-Engine >
Purobaz Hors ligne Membre d'honneur Points: 2690 Défis: 110 Message

Citer : Posté le 28/12/2014 03:05 | #


Précise où ça plante ? C'est le premier projet que tu compiles ?
I'll be back !
pour plus de fun
mes programmes fun
de technique
mes projets
et de Swag
les projets que je soutiens
Fife86 Hors ligne Membre Points: 830 Défis: 0 Message

Citer : Posté le 29/12/2014 16:04 | #


Voila l'erreur de compil:

** L2310 (E) Undefined external symbol "_initSeq" referenced in "C:\******_Street Fighter1.00\Debug\StreetF.obj"
It's Show Time !!!
Mes Jeux :
- Street Fighter : Pour les accrocs du free-fight.
- Kirby's DreamLand : Gobe , Gobe , Gobe !!!
- L'invasion Seanchans : Détruit la flotte ennemis a bord du "Danseur des vagues".


< Le recoin du C-Engine >

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