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 » UnderCasio
Lepianoteur Hors ligne Membre Points: 217 Défis: 0 Message

UnderCasio

Posté le 05/11/2018 21:16

Voilà je me lance dans le projet de refaire le fameux jeu UNDERTALE sur casio Je suis loin d'être un pro mais je pense que je vais gagner de l'expérience au fur et à mesure et que je pourrais réussir à recréer en parti le jeu Mais pour ça je pense avoir besoins de pas mal d'aide

Pour ce qui connaisse pas UNDERTALE *hm se serais louper quelque chose* c'est un RPG un peu du style des premiers Zelda.

Le programme est en C, j'utilise le C-engine :


Personnage + déplacement + collision
   100%



Map
   10%



Ennemi
   0%



Scénario
   0%


Fichier joint


Lephenixnoir En ligne Administrateur Points: 24639 Défis: 170 Message

Citer : Posté le 13/11/2018 20:11 | #


As-tu essayé de faire un quadrillage en damier pour le cercle noir, plutôt que de le remplir entièrement de noir ? Comme la couleur originale est plus claire, ça pourrait être plus fidèle.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Lepianoteur Hors ligne Membre Points: 217 Défis: 0 Message

Citer : Posté le 13/11/2018 20:34 | #


oh pas mal comme idée d'amélioration j'y avais pas pensé je vais revoir toute la partie map parce qu'elle ne met plais pas d'ailleurs x) c'est simple de faire ça donc autant que ce sois bien fais

Le plus dur reste à venir je pense, la boite de dialogue, l'affichage du texte dedans + l'interface de combat avec toute les caractéristique qu'elle peut comporter, telle que les attaques des différents ennemi, la collision pour les dégâts, l'attaque du joueur.. etc

Plutôt compliqué je doute de moi d'ailleurs pour tout ça parce que je n'ai qu'une vague idée de comment je vais faire
*pat pat pat pat pat pat tap tap pat* je pianote
Lephenixnoir En ligne Administrateur Points: 24639 Défis: 170 Message

Citer : Posté le 13/11/2018 20:40 | #


Si tu as un doute, n'hésite pas à coder quelque chose d'un peu crade puis à demander comment l'améliorer : ce sera pour toi une bonne façon d'apprendre et ça t'évitera de partir avec des choses trop sales (qui te gêneront plus tard dans le développement).
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Lepianoteur Hors ligne Membre Points: 217 Défis: 0 Message

Citer : Posté le 13/11/2018 21:00 | #


ok très bien je vais m'en sortir comme je peux et si j'ai un gros blocage je demanderais de l'aide je vais surement pas coder tout ça dans les règles de l'art mais oui je vais apprendre au fur et à mesure

Ajouté le 14/11/2018 à 14:23 :
L'avancement du projet est indiqué et sera modifié dans le Topic pour l'instant plus tard ça le sera dans le jeu posté
*pat pat pat pat pat pat tap tap pat* je pianote
Drak Hors ligne Rédacteur Points: 1925 Défis: 40 Message

Citer : Posté le 14/11/2018 19:50 | #


Lephenixnoir a écrit :
Si tu as un doute, n'hésite pas à coder quelque chose d'un peu crade puis à demander comment l'améliorer : ce sera pour toi une bonne façon d'apprendre et ça t'évitera de partir avec des choses trop sales (qui te gêneront plus tard dans le développement).


Ouaip, et n'hésite pas à poser des questions, même spécifiques, sur comment faire ceci ou cela. La communauté saura te donner des pistes !
Eon the Dragon : version 1.2
Let's have a look!
Marre de ces RPGs qui t'imposent des classes, des compétences et des sorts ? Crée tes propres capacités sur Eon the Dragon ! Des monstres, des dragons et des combats aussi épiques que difficiles t'attendent !
Un RPG unique et immense t'attend ! Joue dès maintenant à Aventura, le Royaume Poudingue !
Vous aussi, soyez swag et rejoignez Planète Casio !
Lepianoteur Hors ligne Membre Points: 217 Défis: 0 Message

Citer : Posté le 14/11/2018 23:00 | #


Drak a écrit :
Lephenixnoir a écrit :
Si tu as un doute, n'hésite pas à coder quelque chose d'un peu crade puis à demander comment l'améliorer : ce sera pour toi une bonne façon d'apprendre et ça t'évitera de partir avec des choses trop sales (qui te gêneront plus tard dans le développement).


Ouaip, et n'hésite pas à poser des questions, même spécifiques, sur comment faire ceci ou cela. La communauté saura te donner des pistes !


Oui et d'ailleurs j'en profite c'est pas tout le temps qu'on a le droit d'avoir ça avec des réponses aussi précise Le faite que ce sois une communauté restreinte permet d'être focalisé sur les quelques poste qui sort et moi je trouve ça génial, c'est aussi pour cette raison que j'ai décidé de m'investir dans tout ça parce que j'ai trouvé ça cool et j'avais envie de commencer la programmation sur calculatrice sérieusement donc voilà je me suis lancé

Ajouté le 15/11/2018 à 01:36 :
__________________________________________________________________________________________________

Je cherche à faire une boite de dialogue, mais je ne sais pas quel technique adopter et par ou commencer

Si je crée un sprite d'une boite de dialogue pour afficher du texte dedans, à cause de l'Alpha de la boite je ne pourrais pas ou alors on peut s'y prendre d'une autre manière pour afficher ça ?

Je voudrais juste des conseils avant de m'engager dans quelque chose qui n'aboutie pas ce qui est déjà le cas en fait, c'est plutôt ne pas aboutir encore une fois
*pat pat pat pat pat pat tap tap pat* je pianote
Lephenixnoir En ligne Administrateur Points: 24639 Défis: 170 Message

Citer : Posté le 15/11/2018 06:54 | #


Tu peux, en fait ! As-tu remarqué que les pixels blancs à l'intérieur de ton sprite ne sont pas transparents ?

La technique du masque alpha permet de rentre transparents les pixels de ton choix, ceux qui sont à la fois noirs sur le masque et blancs sur l'image. Tu peux donc parfaitement réaliser ta boîte de dialogue !
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Lepianoteur Hors ligne Membre Points: 217 Défis: 0 Message

Citer : Posté le 15/11/2018 10:36 | #


très bien je vais essayer de faire ça ça
*pat pat pat pat pat pat tap tap pat* je pianote
Lepianoteur Hors ligne Membre Points: 217 Défis: 0 Message

Citer : Posté le 17/11/2018 19:56 | # | Fichier joint


J'ai un petit problème, encore avec l'alpha de la boite de dialogue x) ça va peut être être une question bête mais bon :

        ML_bmp_and(Dialogue_Alpha , 10 , 30, 106 , 29);
        ML_bmp_or(Dialogue , 10 , 30, 106 , 29);



ça donne :




Les sprites se complète bien mais ça n'efface pas ce qu'il y a dessus >< un idée de pourquoi ?
*pat pat pat pat pat pat tap tap pat* je pianote
Lephenixnoir En ligne Administrateur Points: 24639 Défis: 170 Message

Citer : Posté le 17/11/2018 20:21 | #


C'est que dans Dialogue_Alpha, le milieu de la boîte devrait être blanc.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Lepianoteur Hors ligne Membre Points: 217 Défis: 0 Message

Citer : Posté le 17/11/2018 20:49 | #


Je l'ai fais mais toujours pas

const unsigned char Dialogue[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0
,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40
,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40
,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40
,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40
,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40
,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40
,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40
,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40
,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40
,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40
,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40
,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40
,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40
,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40
,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40
,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40
,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40
,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40
,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40
,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40
,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40
,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40
,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40
,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40
,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40
,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40
,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40
,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0};

const unsigned char Dialogue_Alpha[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};


Si je suis ce que tu as dis les sprites devrais être bon


        ML_bmp_and(Dialogue_Alpha , 10 , 30, 106 , 29);
        ML_bmp_or(Dialogue , 10 , 30, 106 , 29);


Je n'ai pas changé le code, toujours le même résultat après le changement de sprite
*pat pat pat pat pat pat tap tap pat* je pianote
Lephenixnoir En ligne Administrateur Points: 24639 Défis: 170 Message

Citer : Posté le 17/11/2018 21:06 | #


Ce que tu as fait sur la boîte de dialogue est valide, es-tu sûr que tu ne redessines pas la map par-dessus ensuite ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Lepianoteur Hors ligne Membre Points: 217 Défis: 0 Message

Citer : Posté le 17/11/2018 21:39 | #


ah ça je ne sais pas j'utilise le C engine et niveau map j'ai juste suivi le tutoriel, mais ça vient peut être de là oui

Sur le fichier intégré du C engine, dans sprite.cpp là ou tu m'avais indiqué comment afficher le personnage avec l'alpha j'ai trouvé ça :

void Sprite::DrawSprite( int x , int y , int d)
{
    switch(d)
    {
        case 90: if(size_y % 2  == 0)y -=1; break;
        case 180: if(size_y % 2  == 0)y -=1; if(size_x % 2  == 0)x -=1; break;
        case 270: if(size_x % 2  == 0)x -=1; break;
    }

    if(Beta != NULL)
    {
        if(Alpha != NULL)
        {
            ML_bmp_or_rotate((const unsigned char*) this->Alpha, x + b_x, y + b_y, this->size_x , this->size_y , d); // Affichage du canal alpha
            ML_bmp_and_rotate((const unsigned char*) this->Beta, x +b_x, y +b_y, this->size_x , this->size_y ,d); // Affichage du sprite en entier
        }
        else
        {
            ML_bmp_or_rotate((const unsigned char*) this->Beta, x +b_x , y +b_y, this->size_x , this->size_y , d); // Affichage du sprite en entier
        }

    }
}


C'est peut être ma solution au problème mais n'arrive pas à déchiffrer " int d" et si ça peut vraiment afficher le sprite que l'on souhaite.
*pat pat pat pat pat pat tap tap pat* je pianote
Lephenixnoir En ligne Administrateur Points: 24639 Défis: 170 Message

Citer : Posté le 17/11/2018 21:42 | #


Non, c'est juste un paramètre de rotation. Je suppose que tu as fait quelque chose qui n'est pas prévu par le C-Engine.

Tu as affiché le sprite toi-même ? Tu es sûr que tu peux ?

As-tu regardé dans les jeux de Fife86 comment il affichait ce genre de choses ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Lepianoteur Hors ligne Membre Points: 217 Défis: 0 Message

Citer : Posté le 17/11/2018 21:53 | #


Le sprite de la boite de dialogue oui c'est moi et tu as vu le résultat du coup.

Oui, le problème c'est qu'il n'a fais que des jeux de plateforme à part un ou il n'y a que du décor solide ou d'autre qui n'on pas d'alpha.

Je vais cherché est dans le pire des cas je demanderais à fife par mail, je cherche et je te tiendrais au courant.
*pat pat pat pat pat pat tap tap pat* je pianote
Lepianoteur Hors ligne Membre Points: 217 Défis: 0 Message

Citer : Posté le 18/11/2018 19:44 | # | Fichier joint


J'ai enfin trouvé la solution je me sens bête parce que je l'avais déjà fais sans m'en rendre compte auparavant x)
Il fallait créer un "objet", une fonction dans le C-engine que j'avais utilisé pour le personnage.
On peut commander l'objet grâce à un script ( ce que j'avais fais pour le personnage ).

Voilà le résultat :



Je vais surement l'agrandir par la suite

Par contre j'ai une question, pour l'affichage du texte il vaut mieux faire :

Si cordonné du personnage = x , y
Alors afficher le texte

ou alors :

collision du personnage avec "un objet"
Alors affichage du texte

Merci d'avance pour la réponse
*pat pat pat pat pat pat tap tap pat* je pianote
Lephenixnoir En ligne Administrateur Points: 24639 Défis: 170 Message

Citer : Posté le 18/11/2018 20:19 | #


À mon avis, pour que le tout soit résistant aux changements, il vaut mieux créer un objet fixe et invisible.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Lepianoteur Hors ligne Membre Points: 217 Défis: 0 Message

Citer : Posté le 18/11/2018 20:24 | #


D'accord merci je vais faire ça

Ajouté le 18/11/2018 à 23:56 :
Petite question surement simpliste excusez moi je n'ai pas vraiment les bases

J'ai créé ces deux variables dans mon fichier principal du jeu :

int x = 70;
int y = 60;


et j'aimerais les testé dans un autre fichier, mais il me dit que je ne les ai pas déclaré, j'en déduis qu'il ne peut pas lire.
J'aimerais savoir command faire
*pat pat pat pat pat pat tap tap pat* je pianote
Lephenixnoir En ligne Administrateur Points: 24639 Défis: 170 Message

Citer : Posté le 19/11/2018 07:23 | #


Le TDM 07 : Écrire des programmes C avec plusieurs fichiers, est fait pour toi !
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Lepianoteur Hors ligne Membre Points: 217 Défis: 0 Message

Citer : Posté le 19/11/2018 15:42 | #


Merci ce tutoriel tombe bien

Ajouté le 22/11/2018 à 23:42 :
Bon.. je vais l'avouer je suis sécher par pas mal de truc, une petite représentation de mon sentiment :

Mes nuits à essayer de programmer.


Je n'arrive plus à avancer

Petit résumé :

Tout d'abord, encore et toujours cette boite de dialogue avec ses problèmes interminable.
Je l'ai montré dans le dernier screen, j'avais réussi à afficher la boite de dialogue avec son alpha grâce au C-engine.
Cependant, une fois l'objet créé il faut que je face en sorte de placer la boite ou je le souhaite.
Je vais donc d'abord expliquer le fonctionnement :

Object * Dia = new Object; //on crée l'objet "Dia" ( la boite de dialogue )
Dia->GetTransforms()->SetXY( 10 , 10 ); // on le place dans la map
Dia->GetRender()->SetRender(A_DialgueV1, 2); //on affecte le sprite défini au préalable


Alors dis comme ça, ou est le problème ?
Et bien le problème vient de
SetXY( 10 , 10 ); // on le place dans la map

Oui j'ai bien pris en compte le " on le place dans la map " car c'est la chose qui me dérange le plus !
Pour placer la boite de dialogue il me faudrait une fonction permettant de le placer par rapport au coordonné de l'écran.. et non de la map !
----------------------------------------------------------------------------------------------------------------------------------

A ce moment là je me suis dis, autant contourner le problème, tu va faire la boite de dialogue par rapport au coordonné du joueur.
Mais là encore un problème.. je ne sais pas comment récupérer les coordonnés du joueur


Explication :

Pour créer le joueur, c'est la même chose que la boite de dialogue :

Object * Perso = new Object;
Perso->GetTransforms()->SetXY(x,y);
Perso->GetRender()->SetRender(A_Perso , 6);


et en plus de ça un script est rattaché à l'objet au joueur :

nt p = 0; //variable pour connaitre les positions du joueur haut / bas / gauche / droite

void Control::Update()
{
    bool isdo = false; //variable pour savoir si le joueur effectue une action

{    

    //*************Horizontal**************//
    
    if(input_press(K_RIGHT) and (isdo == false))
    {
        Move(2,0);                                            // ( c'est une fonction du C-engine ) l'objet rattaché au script bouge de 2 pixel vers la droite
        SetIt(1);                                            // animation de sprite qui marche vers la droite qui se lance
        GetObject()->GetRender()->ReverseRender(true);        //indique qu'il faut afficher le sprite en miroir ( il est de base tourner vers la gauche c'est un gain de place
        isdo = true;                                        //il est entrain de faire quelque chose
        p = 1;
    }

     if(input_press(K_LEFT) and (isdo == false))
    {
        Move(-2,0);
        SetIt(1);
        GetObject()->GetRender()->ReverseRender(false);
        isdo = true;
        p = 2;
    }
    
    if(input_press(K_DOWN )  and (isdo == false))
    {
        Move(0,-2);
        SetIt(2);
        GetObject()->GetRender()->ReverseRender(false);
        isdo = true;
        p = 3;
    }
    
    if(input_press(K_UP) and (isdo == false))
    {
        Move(0,2);
        SetIt(4);
        n = 2;
        GetObject()->GetRender()->ReverseRender(false);
        isdo = true;
        p = 4;
    }
    



      
if(isdo == false) {
    
    
    if (p == 1)SetIt(0);    //quand le personnage s'arrête le sprite qui ne bouge pas est défini par le dernier sens du joueur
    if (p == 2)SetIt(0);
    if (p == 3)SetIt(3);
    if (p == 4)SetIt(5);
    }

}
    


    if (input_press(K_EXIT))GetEngine()->StopGame();

    GetEngine()->MiddleScreen(GetX() + 6 , GetY() + 6); //place la caméra de la map en cours pour centre le personnage
}



J'ai un peux expliqué le code pour qu'on comprenne mieux.
Je ne sais donc pas comment récupérer les coordonné du personnage car l'objet bouge grâce à la fonction " Move ".

Apres avoir fais quelque tentative et teste échoué, j'ai décider de faire le tour vers les tuto du C-engine pour voir si je n'était pas passé à coté de quelque chose d'important !

Dans la deuxieme vidéo tuto, Fife86 explique seulement qu'il affiche le personnage grâce à, exemple :

Perso->GetTransforms()->SetXY(x,y);


Il affiche grâce à " SetXY (x,y) " et il explique que cette fonction utilise la position "ABSOLU" ( position absolu = la position par rapport à la map ).

Je me suis donc dis, si il dit ça, il doit forcement exister une autre fonction pour l'affichage par rapport à l'écran !
Je me met donc à fouiller dans les fichier du C-engine et je fini par trouvé ça :


void SetXY(double vx ,double vy);
    void SetRelativeXY(double vx ,double vy);
    void SetReelXY(double vx ,double vy);



    Vec2 positionreel; // en m
    Vec2 positionabsolu; // en pixel
    Vec2 positionrelative; // en pixel



Je me suis alors dis " Wow c'est bon tu as trouvé la solution il faut utiliser SetReelXY(double vx ,double vy);
Je test donc et là.. non toujours pas, il affiche l'objet en fonction..de la map...

Je tien à dire que si j'utilise MonochromeLib, je ne peux pas afficher le sprite avec l'alpha car la map ce redessine dessus et désactive l'effet

Je ne sais pas si vous avez des solutions à proposer, ou alors des alternatives je ne sais pas, j'ai passé sous silence plusieurs essaies de technique raté sinon se serais bien trop long et sans intérêt, si je ne trouve pas de solution, je me contenterais d'une case toute noir, plus de problème d'alpha mais se ne serais pas super comme résultat







Ajouté le 22/11/2018 à 23:48 :
( J'ai aussi essayé d'effectuer un changement de salle mais le système me parait complexe et n'es pas expliqué dans les tuto, je vais donc devoir regarder le fonctionnement, ça me prendra du temps mais je pense y arriver )

Oui beaucoup de problème dans ce projet je sais
*pat pat pat pat pat pat tap tap pat* je pianote
Lephenixnoir En ligne Administrateur Points: 24639 Défis: 170 Message

Citer : Posté le 23/11/2018 07:17 | #


Ouh, c'est pas joli-joli tout ça. Tu devrais avoir un framework dans le C-Engine pour modifier le HUD, mais je n'ai pas trouvé grand-chose dans les sources. Tu es donc obligé de détourner des fonctionnalités existantes, on dirait.

D'abord, afficher un objet à une position relative de ton sprite est peut-être acceptable, si tu es sûr que le sprite est toujours au milieu de l'écran. Je pense que toutes les autres solutions ou presques seront trop du hack pour être viables.

Vois ici pour savoir comment il fait le rendu : src/Object/Render.cpp:166

Je pense que SetRelativeXY() est plus approprié, du coup. Tu as essayé ça ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)

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