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


1, 2 Suivante
Ninestars Hors ligne Membre Points: 2462 Défis: 24 Message

Citer : Posté le 29/02/2016 18:36 | #


Très bien, je suis tes tutos
Fife86 Hors ligne Membre Points: 839 Défis: 0 Message

Citer : Posté le 29/02/2016 18:53 | #


Merci Sortie du prochain 10 min.
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 >
Casio-jawa Hors ligne Membre Points: 138 Défis: 0 Message

Citer : Posté le 29/02/2016 18:57 | #


génial tu sort enfin des tuto !!!!!!!!!
oui ça se voit je suis heureux
le C-Engine c'est fantastique
Fife86 Hors ligne Membre Points: 839 Défis: 0 Message

Citer : Posté le 29/02/2016 18:59 | #


Yep, maintenant que le 2 ème trimestre est fini, je peu faire beaucoup plus de chose. Le 3 ème tuto fut écrit en devoir d'histoire car je m'ennuyait 8) .
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 >
Casio-jawa Hors ligne Membre Points: 138 Défis: 0 Message

Citer : Posté le 29/02/2016 19:00 | #


l'histoire justifie les moyens

le C-Engine c'est fantastique
Eltoredo Hors ligne Modérateur Points: 4301 Défis: 35 Message

Citer : Posté le 01/03/2016 15:36 | #


Ah oui, c'est vrai que le troisième trimestre sert à rien Je suis aussi tes tutoriels, j'essayerai de sortir un jeu quand je pourrais, voir si c'est plus pratique que de coder normalement
La procrastination est une vertu. (voir ma description pour comprendre mon raisonnement)
Dark storm En ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 01/03/2016 20:10 | #


Est-ce que tu peux renommer tes tutos [C-engine] tout court ? Là ça fait vraiment lourd…
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Fife86 Hors ligne Membre Points: 839 Défis: 0 Message

Citer : Posté le 01/03/2016 20:11 | #


Ok
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 >
Dark storm En ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 01/03/2016 20:14 | #


Merci
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Suruq game Hors ligne Membre de CreativeCalc Points: 621 Défis: 20 Message

Citer : Posté le 09/04/2016 16:10 | #


je suis en train de tester le c-engine et apres avoir respecter tte les etape le built result me met une erreur car le code renvoie 1
comment coriger ca et pourquoi ca le fait?
There is only one thing that makes a dream impossible to achieve : the fear of failure
Fife86 Hors ligne Membre Points: 839 Défis: 0 Message

Citer : Posté le 09/04/2016 16:18 | #


Soit plus précis sur l'erreur que tu a eu pls.
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 >
Suruq game Hors ligne Membre de CreativeCalc Points: 621 Défis: 20 Message

Citer : Posté le 09/04/2016 16:19 | #


le sdk donne ca:
sdk a écrit :
ERROR: Process failed with return code: 1
Build was not successful.

There is only one thing that makes a dream impossible to achieve : the fear of failure
Fife86 Hors ligne Membre Points: 839 Défis: 0 Message

Citer : Posté le 09/04/2016 16:23 | #


Il doit y avoir autre chose d'écrit au dessus.
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 >
Suruq game Hors ligne Membre de CreativeCalc Points: 621 Défis: 20 Message

Citer : Posté le 09/04/2016 16:24 | #


sdk a écrit :
Executing Hitachi SH C/C++ Compiler/Assembler phase

set SHC_INC=C:\Program Files\CASIO\fx-9860G SDK\OS\SH\include
set PATH=C:\Program Files\CASIO\fx-9860G SDK\OS\SH\bin
set SHC_LIB=C:\Program Files\CASIO\fx-9860G SDK\OS\SH\bin
set SHC_TMP=C:\Users\dell\Desktop\projet c-engine\essai\Debug
"C:\Program Files\CASIO\fx-9860G SDK\OS\SH\bin\shc.exe" -subcommand=C:\Users\dell\AppData\Local\Temp\hmk67AE.tmp
C:\Users\dell\Desktop\projet c-engine\essai\essai.cpp(17) : C5020 (E) Identifier "SetXY" is undefined
C:\Users\dell\Desktop\projet c-engine\essai\essai.cpp(17) : C5053 (E) Expected a ":"
C:\Users\dell\Desktop\projet c-engine\essai\essai.cpp(18) : C5020 (E) Identifier "SetRender" is undefined
C:\Users\dell\Desktop\projet c-engine\essai\essai.cpp(18) : C5053 (E) Expected a ":"

HMAKE MAKE UTILITY Ver. 1.1
Copyright (C) Hitachi Micro Systems Europe Ltd. 1998
Copyright (C) Hitachi Ltd. 1998

ERROR: Process failed with return code: 1
Build was not successful.

There is only one thing that makes a dream impossible to achieve : the fear of failure
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 09/04/2016 16:25 | #


Création d'un personnage
Cakeisalie5 En ligne Ancien administrateur Points: 1960 Défis: 11 Message

Citer : Posté le 09/04/2016 16:26 | #



C:\Users\dell\Desktop\projet c-engine\essai\essai.cpp(17) : C5020 (E) Identifier "SetXY" is undefined
C:\Users\dell\Desktop\projet c-engine\essai\essai.cpp(17) : C5053 (E) Expected a ":"
C:\Users\dell\Desktop\projet c-engine\essai\essai.cpp(18) : C5020 (E) Identifier "SetRender" is undefined
C:\Users\dell\Desktop\projet c-engine\essai\essai.cpp(18) : C5053 (E) Expected a ":"

Voici tes erreurs, Suruq x) (sans le code source, on pourra difficilement t'aider plus)

EDIT: Well, les flèches ont été transformées en → lignes 17 et 18 dans le code source de test. Il faut les remplacer par un tiret suivi du signe supérieur : "- >", sans l'espace.
Respirateur d'air, BDFL de Cahute, des utilitaires de communication pour calculatrices CASIO.


Mon blogMes autres projets
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 09/04/2016 17:06 | #


Etape 1 : Définition d'une animation

Que ceux qui connaissent la réponse lèvent la main

c'est exacte

ensemble de sprite misent bout à bout

animéer un objet est très facile

différents composants qui existent


J'ai plus la force de continuer
Fenysk Hors ligne Membre Points: 286 Défis: 0 Message

Citer : Posté le 19/04/2016 13:50 | #


Heu... Où ajoute-t-on le code ? (je suis un putain de noob)

Ajouté le 19/04/2016 à 14:28 :
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 };

Animation A_Perso( S_Perso , 2 , 200 );

Object * Perso = new Object;

Perso->GetTransform()->SetXY(20,11);
Perso->GetRender()->SetRender(A_Perso);

==========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 !
Fenysk Hors ligne Membre Points: 286 Défis: 0 Message

Citer : Posté le 19/04/2016 14:33 | # | Fichier joint


voilà le fichier
==========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 !
Lephenixnoir En ligne Administrateur Points: 24581 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)
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 140 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