CODINGSDCC TUT'S PAR STEPHBB75 ★ Animation par couleur ★

Sdcc - 14 - Animation Par CouleurCoding Sdcc Tut's Par Stephbb75

Animation par couleur

Pour faire une animmation avec cycle de couleur, en fait le plus compliqué et le plus long c'est de faire l'image.
Je vais même ici vous proposer des programme BASIC pour le faire, effectivement cela se fait très simplement en BASIC, vous en faire pas, on vas faire du C aussi ;-)
Voici l'animation que j'ai trouvé sur le net, c'est un simple GIF animée, il se prète très bien a ce que l'on veut faire :

Bien sur se gif est bien trop grand pour le CPC, sa taill est de 640x640, on vas faire un crop déjà pour ne plus avoir de bordure noir.
Ensuite, l'animation fait 31 images, on vas la réduir à 8 (dans un premier temp je l'est fait en 15 images, donc 15 couleurs, mais cela ne donne pas trop bien du fait de la réduction de taille).
Après on donne à chaque image du GIF une couleur, dans notre cas, on auras 8 couleurs (+ le fond).
Pour vas le réduir à une taille de 160x200 (oui, la résolution du mode 0) et mettre toutes les images sur un seul calque pour n'avoir qu'une seule image que voici :

Pour faire cela j'ai utilisé GIMP 2 sous Windows, mais bien sur vous pouvez utiliser n'importe quelle logiciel de dessin pourvue qu'il lise le GIF animée.
Dans GIMP, quand vous charger un GIF animé, il vous met chaque images dans un calque, ce qui est bien pratique pour ensuite attribuer chage couleurs.

Pour faire une image un peut plus belle, comme on utilise que 8 couleurs, j'aurais put faire un petit dégradé, mais non, je ne l'est pas fait, mais vous vous pouvez le faire!

Il faut maintenant mettre cette image au format CPC, pour cela j'ai utilisé le logiciel ConvImgCpc. il faut mettre les couleur dans le bonne ordre pour que quand on changeras les couleur cela fonctionne...
Voici le résultat de l'image sur CPC :

On peut constaté que l'image est déformé vis a vis de l'originale, cela est du au fait que le mode 0 du CPC n'a pas des pixel carrés mais rectangulaire...
Il aurais aussi fallut retoucher un peut l'image aussi, mais bon, je l'est pas fait ;-)
Mais cela vas faire l'affaire pour nous !

Mais pour le moment on a pas d'animation, l'image avec ces couleurs est même moche, oui, j'ai aussi un gout très pronocé pour le mélange des couleurs, cela vas avec mon talent de graphiste :-)
Voici donc le programme basic pour faire l'animation, il est relativement simple, on charge l'image (ligne 20), on met toutes les couleurs à noire sauf la 1er (lignes 30 à 180), une petite tempo (ligne 210 à 223) puis on fait le cycle de couleur (ligne 230 à 260) puis on recommance grace au goto de la ligne 270.


1 ' animation par cycle de couleur
2 curcoul=1
10 mode 0
20 load"05m0.scr",49152
30 ink 0,0 'couleur de fond
40 ink 1,26 '1er couleur blanche
50 ink 2,0,0 ' toutes les autres a noir
60 ink 3,0,0
70 ink 4,0,0
80 ink 5,0,0
90 ink 6,0,0
100 ink 7,0,0
110 ink 8,0,0
120 ink 9,0,0 ' ces couleurs ne sont pas utilise dans l image
130 ink 10,0,0
140 ink 11,0,0
150 ink 12,0,0
160 ink 13,0,0
170 ink 14,0,0
180 ink 15,0,0
200 ' Passage a la couleur suivante a blanc totomatique
210 t=INT(TIME) + 30
220 while INT(TIME) < t
221 a$=inkey$
222 if a$<>"" then goto 300
223 wend
230 ink curcoul,0
240 curcoul = curcoul + 1
250 if curcoul > 8 then curcoul = 1
260 ink curcoul, 26
270 goto 200

300 ' une touche ....
310 mode 1
315 ink 0,1:ink 1,24
320 end


Cela donne donc ceci à l'écran du CPC :

Aller, on vas se faire cela en C, pas de grande dificulté, on utilise les fonctions que l'on a déjà vue, chargement, changer la couleur, récupéré le timer donc je vous met ici juste le main, le reste est dans le zip.

void main()
{
int i;
unsigned char curCoul = 1;
unsigned int nTime = 0;
unsigned int nTime2 = 0;

//SCR_SET_MODE 0
SCR_SET_MODE0_s;

// on vas mettre toutes les couleurs à 0
for (i = 0; i<16; i++)
SetColor_s( i, 0 );

// on charge l'image
ReadFileBin( "05m0.scr", 49152);

// on fait le cycle des couleurs
while( 1 )
{
SetColor_s( curCoul++, 0 );

if ( curCoul > 8 )
curCoul = 1;

SetColor_s( curCoul, 26 );

// petite tempo
nTime = GetTime_s() + 30;
do
{
nTime2 = GetTime_s();
}
while ( nTime2 < nTime);
}
}


Voila, comme d'hab, le tout se trouve dans se ZIP, bonne animation ;-)

Si par hazard, l'un d'entre vous veut refarie l'image de l'anim, je suis preuneur :-)

stephbb75

★ ANNÉE: 2013
★ AUTEUR: Stephbb75

Page précédente : Sdcc - 13 - Animation Par Couleur et Scrool

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Coding » Sdcc - 19 - 3D - Optimisation
» Coding » Sdcc - 06 - Lire un Fichier
» Coding » Sdcc - 20 - 3D - Face Plaine
» Coding » Sdcc - 04 - Dessiner en Mode 1
» Coding » Sdcc - 18 - 3D - Fil de Fer
» Coding » Sdcc - 02 - Utilisation de Sdcc
Je participe au site:

» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 211 millisecondes et consultée 3503 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.