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 - Vos tutoriels et astuces


Index du Forum » Vos tutoriels et astuces » [C-Engine] n°2 : Création d'un personnage
Fife86 Hors ligne Membre Points: 839 Défis: 0 Message

[C-Engine] n°2 : Création d'un personnage

Posté le 29/02/2016 17:54

Si vous avez loupé le premier tutoriel sur l'installation c'est - ici -

Maintenant que vous avez installé le moteur de jeu, nous allons pouvoir créer notre premier jeu.

Oui je sais... un petit peu de patience... on y arrive

Etape 1 : Définition d'une animation

Qu'est qu'un animation ? Que ceux qui connaissent la réponse lèvent la main. Oui Jean-Mich... effectivement c'est exact.

Une animation est un ensemble de sprite mis bout à bout pour créer une impression de mouvement.

Un sprite se caractérise par une image et sa taille.

Aujourd'hui nous créerons notre tout premier personnage.

Pour cela je vous donne le code de l'image que nous allons utiliser:


const unsigned char I_Perso_1[]={0x1f, 0x8f, 0x20, 0x6f, 0x40, 0x3f, 0x72, 0xef, 0x9a, 0x1f, 0x99, 0x1f, 0x63, 0xef, 0x30, 0x4f, 0x4c, 0x8f, 0x86, 0x4f, 0x87, 0xcf, 0x46, 0xcf, 0x41, 0xcf, 0x20, 0x8f, 0x1f, 0xf, };

const unsigned char I_Perso_2[]={0x7, 0xce, 0x8, 0x31, 0x10, 0x9, 0x1c, 0xba, 0x26, 0x86, 0x26, 0x46, 0x18, 0xfc, 0x1c, 0x4, 0x22, 0x28, 0x71, 0x1e, 0x89, 0x69, 0x8b, 0xf1, 0x7f, 0xf2, 0x8f, 0xf2, 0x9f, 0x8c, 0x6e, 0x0, };



Ce code a été généré avec le Sprite Coder à partir de cette image.



Etape 2 : L'Animation.

Dans le C-Engine, animer un objet est très facile.

Pour commencer, copiez le code des images ( qui se trouve au dessus ) dans le code avant la ligne Engine Game;

Ensuite, nous allons définir la taille des 2 images pour créer des sprites en écrivant ceci:



Sprite S_Perso_1( I_Perso_1 , 12 , 15 );
Sprite S_Perso_2( I_Perso_2 , 16 , 16 );

Sprite S_Perso[]={ S_Perso_1 , S_Perso_2 };



Avec ce code, nous avons créé deux sprites que nous avons assemblés dans un tableau.

Puis, pour créer une animation il faut écrire.


Animation A_Perso( S_Perso , 2 , 200 );


Le constructeur d'animation nécessite:

- soit l'adresse d'un sprite
- soit un pointeur vers un tableau de sprites , le nombre de sprite du tableau et le temps entre l'affichage de 2 sprites en ms.

S_Perso est ici le pointeur vers le tableau de sprites.
2 est le nombre de sprite du tableau.
200 est le temps défini en ms.

Etape 3: L'objet

Maintenant que nous avons les images, nous pouvons créer l'objet joueur.

Petite définition:

Un objet est un ensemble de pointeur vers des composants, les composants de base sont un "Transforms" pour positionner sur l'écran l'objet et un "Render" pour afficher l'objet à l'écran.

Nous reviendront plus tard sur les différents composants qui existent dans le C-Engine.

Pour créer un objet il suffit d'écrire.



Object * Perso = new Object; // Ici nous déclarons l'objet "Perso" , comme nous déclarons une variable.



Ensuite pour positionner l’objet et lui affecter les images, il faut utiliser la fonction du Transforms "SetXY()" et la fonction du Render "SetRender()" .



Perso->GetTransforms()[b]->[/b]SetXY( 20 , [maroon]11[/maroon] ); [green]// Environ au milieu de l'écran , en x puis en y.[/green]
Perso->GetRender()[b]->[/b]SetRender( A_Perso ); [green]// A_Perso étant l[gray]'animation que l'[/gray]on veut assigner.[/green]




Vous pouvez compiler, puis lancer l' addin.

Et vous ne voyer rien.

C'est normal, nous n'avons pas demander au moteur "Game" de prendre en compte dans ses calculs l'objet "Perso".

Pour ce faire, après avoir déclaré le moteur de jeu avec Engine Game et avant de lancer le jeu avec Game.Game(). Ecrivez la ligne suivant :



Game.AddObject( Perso);



Compilez, et enfin, le perso est affiché à l'écran.

Voici le code que vous devriez avoir.
Voici le code que vous devriez avoir.



[brown]#include [gray]"..\C-Engine\CHeader.hpp"[/gray][/brown]

[purple]int[/purple] Jeu()
{
    const [purple]unsigned char[/purple] I_Perso_1[]={[maroon]0[/maroon]x1f, [maroon]0[/maroon]x8f, [maroon]0[/maroon]x20, [maroon]0[/maroon]x6f, [maroon]0[/maroon]x40, [maroon]0[/maroon]x3f, [maroon]0[/maroon]x72, [maroon]0[/maroon]xef, [maroon]0[/maroon]x9a, [maroon]0[/maroon]x1f, [maroon]0[/maroon]x99, [maroon]0[/maroon]x1f, [maroon]0[/maroon]x63, [maroon]0[/maroon]xef, [maroon]0[/maroon]x30, [maroon]0[/maroon]x4f, [maroon]0[/maroon]x4c, [maroon]0[/maroon]x8f, [maroon]0[/maroon]x86, [maroon]0[/maroon]x4f, [maroon]0[/maroon]x87, [maroon]0[/maroon]xcf, [maroon]0[/maroon]x46, [maroon]0[/maroon]xcf, [maroon]0[/maroon]x41, [maroon]0[/maroon]xcf, [maroon]0[/maroon]x20, [maroon]0[/maroon]x8f, [maroon]0[/maroon]x1f, [maroon]0[/maroon]xf, };
    const [purple]unsigned char[/purple] I_Perso_2[]={[maroon]0[/maroon]x7, [maroon]0[/maroon]xce, [maroon]0[/maroon]x8, [maroon]0[/maroon]x31, [maroon]0[/maroon]x10, [maroon]0[/maroon]x9, [maroon]0[/maroon]x1c, [maroon]0[/maroon]xba, [maroon]0[/maroon]x26, [maroon]0[/maroon]x86, [maroon]0[/maroon]x26, [maroon]0[/maroon]x46, [maroon]0[/maroon]x18, [maroon]0[/maroon]xfc, [maroon]0[/maroon]x1c, [maroon]0[/maroon]x4, [maroon]0[/maroon]x22, [maroon]0[/maroon]x28, [maroon]0[/maroon]x71, [maroon]0[/maroon]x1e, [maroon]0[/maroon]x89, [maroon]0[/maroon]x69, [maroon]0[/maroon]x8b, [maroon]0[/maroon]xf1, [maroon]0[/maroon]x7f, [maroon]0[/maroon]xf2, [maroon]0[/maroon]x8f, [maroon]0[/maroon]xf2, [maroon]0[/maroon]x9f, [maroon]0[/maroon]x8c, [maroon]0[/maroon]x6e, [maroon]0[/maroon]x0, };

    Sprite S_Perso_1( I_Perso_1 , [maroon]12[/maroon] , [maroon]15[/maroon] );
    Sprite S_Perso_2( I_Perso_2 , [maroon]16[/maroon] , [maroon]16[/maroon] );

    Sprite S_Perso[]={ S_Perso_1 , S_Perso_2 };

    Animation A_Perso( S_Perso , [maroon]2[/maroon] , [maroon]200[/maroon] );

    Object Perso;

    Perso.GetTransforms()[b]->[/b]SetXY( 50 , [maroon]25[/maroon] );
    Perso.GetRender()[b]->[/b]SetRender( A_Perso );

    Engine Game;

    Game.AddObject( &Perso);

    Game.Game();

    [b][blue]return[/blue][/b] 1;
}

extern [gray]"C"[/gray]
{
[purple]int[/purple] AddIn_main(int isAppli, unsigned short OptionNum)
{
    Jeu();
    [b][blue]return[/blue][/b] 1;
}


[brown]#pragma section _BR_Size[/brown]
unsigned long BR_Size;
[brown]#pragma section[/brown]


[brown]#pragma section _TOP[/brown]

[purple]int[/purple] InitializeSystem(int isAppli, unsigned short OptionNum)
{
    [b][blue]return[/blue][/b] INIT_ADDIN_APPLICATION(isAppli, OptionNum);
}

[brown]#pragma section[/brown]
}





Fichier joint


Lephenixnoir Hors ligne Administrateur Points: 24582 Défis: 170 Message

Citer : Posté le 19/04/2016 14:35 | #


Non mais tu peux pas mettre du code dans le vide, il faut le mettre dans une fonction et appeler cette fonction depuis AddIn_main() !

Sérieux...
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Fife86 Hors ligne Membre Points: 839 Défis: 0 Message

Citer : Posté le 19/04/2016 14:36 | #


Ce code doit être placé dans la fonction Jeu();
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 >
Fenysk Hors ligne Membre Points: 286 Défis: 0 Message

Citer : Posté le 19/04/2016 14:36 | #


aahhhh !!! OK !!! Merci
==========GAME & WATCH | Casio Edition==========

-Helmet : Traverse la cour sans te faire assommer par les objets !
-Octopus : Ramasse les ressources et ramène-les dans le bateau sans te faire dévorer par la pieuvre !
Hackcell En ligne Maître du Puzzle Points: 1531 Défis: 11 Message

Citer : Posté le 08/05/2016 18:58 | #


c'est bon j'ai enfin pu tester ton C-engine et j'ai réussi l’étape 1 et 2 avec tes tutoriels vidéo, c'est plutôt fun
Fife86 Hors ligne Membre Points: 839 Défis: 0 Message

Citer : Posté le 08/05/2016 22:42 | #


Merci
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 68 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