Forums Casio - Projets de programmation

Index du Forum > Projets de programmation > UnderCasio
Lepianoteur
Hors ligne
Membre
Points: 179
Défis: 0
Message
Posté le 05/11/2018 21:16

UnderCasio :

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
Hors ligne
Administrateur
Points: 13201
Défis: 136
Message
Dernier message de la page précédente :Posté le 11/11/2018 13:45 |
Hackcell a écrit :
Et tu utilises gint ou pas ?

Je précise que si vous utilisez gint (pour les prochains), la méthode est entièrement différente, il faut convertir avec fxconv et rien d'autre. Mais c'est aussi plus automatique (Makefile)
----------------------------------
Rise.



Pages: Précédente | 1, 2, 3, 4 | Suivante

Lepianoteur
Hors ligne
Membre
Points: 179
Défis: 0
Message
Citer : Posté le 11/11/2018 13:47 | #
mais du coup quelqu'un à la réponse de pourquoi il ne m'affiche pas le code de l'image ?
----------------------------------
*pat pat pat pat pat pat tap tap pat* je pianote
Lephenixnoir
Hors ligne
Administrateur
Points: 13201
Défis: 136
Message
Citer : Posté le 11/11/2018 13:48 | #
Je pense, oui... ça fait un moment qu'il ne marche pas bien. Et on n'a pas accès au code car le serveur est à Ziqumu. >_<
----------------------------------
Rise.
Lepianoteur
Hors ligne
Membre
Points: 179
Défis: 0
Message
Citer : Posté le 11/11/2018 13:59 | #
Ah d'accord xD j'ai trouvé un alternatif http://digole.com/tools/PicturetoC_Hex_converter.php qui marche bien bien sûr il n'est pas aussi complet niveau option mais ça fais l'affaire
----------------------------------
*pat pat pat pat pat pat tap tap pat* je pianote
Lephenixnoir
Hors ligne
Administrateur
Points: 13201
Défis: 136
Message
Citer : Posté le 11/11/2018 14:01 | #
Pas mal ! Attention si c'est pour PC il encode probablement le noir par 0 et le blanc par 1, soit le contraire de la calculatrice. Si c'est le cas, il te faudra inverser les bits en sortie
----------------------------------
Rise.
Hackcell
Hors ligne
Membre
Points: 900
Défis: 6
Message
Citer : Posté le 11/11/2018 14:06 | #
Lephenixnoir a écrit :

Je précise que si vous utilisez gint (pour les prochains), la méthode est entièrement différente, il faut convertir avec fxconv et rien d'autre. Mais c'est aussi plus automatique (Makefile)


C'est pour ça que j'avais demandé s'il utilisait gint

Ajouté le 11/11/2018 à 14:08 :
Par contre, il me semble que l'on a les sources du code de Ziqumu
----------------------------------
I usually spend meow time cosplaying as a diligent student...
So it can get pretty stressful.
That's exactly why PC is such a happy place for meow to be ⭐
Lephenixnoir
Hors ligne
Administrateur
Points: 13201
Défis: 136
Message
Citer : Posté le 11/11/2018 14:10 | #
Il y aussi un outil de Ninestars en Java pour faire ça... quelque part sur le forum.
----------------------------------
Rise.
Hackcell
Hors ligne
Membre
Points: 900
Défis: 6
Message
Citer : Posté le 11/11/2018 14:36 | #
En pièce jointe de ce topic, et au final, il semble que ce soit smashmaster l'auteur du code
----------------------------------
I usually spend meow time cosplaying as a diligent student...
So it can get pretty stressful.
That's exactly why PC is such a happy place for meow to be ⭐
Lepianoteur
Hors ligne
Membre
Points: 179
Défis: 0
Message
Citer : Posté le 11/11/2018 14:41 | #
Lephenixnoir a écrit :
Pas mal ! Attention si c'est pour PC il encode probablement le noir par 0 et le blanc par 1, soit le contraire de la calculatrice. Si c'est le cas, il te faudra inverser les bits en sortie


Tout à très bien fonctionné sans manipulation
----------------------------------
*pat pat pat pat pat pat tap tap pat* je pianote
Lephenixnoir
Hors ligne
Administrateur
Points: 13201
Défis: 136
Message
Citer : Posté le 11/11/2018 14:44 | #
Super ! Est-ce que tu as trouvé une solution pour le problème de taille des sprites, d'aileurs ?
----------------------------------
Rise.
Lepianoteur
Hors ligne
Membre
Points: 179
Défis: 0
Message
Citer : Posté le 11/11/2018 14:58 | # | Fichier joint
Oui c'est bon en fait j'ai préféré prendre une autre source qui avait mis le sprite de ce perso avec moins de pixel et ça m'a convenu Le déplacement marche bien, la map est importé c'est importé sans problème, j'ai ajouter les collisions qui fonctionne parfaitement, il me reste juste un bémol, la perspective pour le décor :

----------------------------------
*pat pat pat pat pat pat tap tap pat* je pianote
Lepianoteur
Hors ligne
Membre
Points: 179
Défis: 0
Message
Citer : Posté le 11/11/2018 14:59 | # | Fichier joint
si dessus tout fonctionne bien mais quand on superpose le décor et le personnage :



Je suppose donc qu'il faut que je dise que si il y a un pixel du persnnage en blanc sur le décor en noir, il devient blanc, mais je ne sais pas comment faire :/



----------------------------------
*pat pat pat pat pat pat tap tap pat* je pianote
Lephenixnoir
Hors ligne
Administrateur
Points: 13201
Défis: 136
Message
Citer : Posté le 11/11/2018 15:05 | # | Fichier joint
Alors, il y a une technique pour ça ! Ça consiste à dire qu'une partie des pixels de ton personnages est transparente. Avec MonochromeLib, on le modélise par un masque alpha (masque de transparence). Il te faut alors deux sprites pour ton personnage :


Quand tu veux afficher ton personnage, tu dessines d'abord celui de gauche avec ML_bmp_and_*(), ce qui a pour effet d'effacer tous les pixels blancs, puis te dessines par-dessus celui de droite avec ML_bmp_or_*() pour obtenir les pixels noirs !
----------------------------------
Rise.
Lepianoteur
Hors ligne
Membre
Points: 179
Défis: 0
Message
Citer : Posté le 11/11/2018 16:00 | #
Oui je comprend le systeme, cependant j'utilise le C-engine, je sais qu'on peut utiliser cette technique car j'ai vu dans un exemple de jeu un tile de sprite du perso avec l'alpha, si je ne me tropme pas on ne peux pas utiliser les commande que tu m'as prescrite non ?

Dans le C-engine on crée d'abord le sprite :

const unsigned char Perso_Normal[]={0xff, 0xff, 0xf8, 0x3f.....};


ensuite on le défini :

Sprite S_Perso1(Perso_Normal,17,29);


apres on crée l'animation (sur l'exemple que je donne il n'y a qu'un seul sprite mais il faut quand même faire l'animation pour l'utiliser ) :

Animation A_perso1 (S_Perso1);


on indique toute les animation que le perso peut utiliser :


Animation A_Perso[]={A_perso1 , A_Perso_Marche , A_Perso_Marche_bas , A_perso_bas1 , A_Perso_Marche_haut , A_perso_haut1};


et dans un autre .c on indique quand les utiliser :

    if(input_press(K_RIGHT) and (isdo == false))
    {
        Move(1,0);
        SetIt(1);
        GetObject()->GetRender()->ReverseRender(true);
        isdo = true;
        p = 1;
    }

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


J'ai un peu simplifié mais en gros c'est ça x)

donc ma question est comment et ou je dois indiquer qu'il faut utiliser l'alpha ?


----------------------------------
*pat pat pat pat pat pat tap tap pat* je pianote
Lephenixnoir
Hors ligne
Administrateur
Points: 13201
Défis: 136
Message
Citer : Posté le 11/11/2018 16:31 | #
Merci pour les explications sur le C-Engine ! Je ne connaissais pas trop le fonctionnement détaillé.

Où est-ce que tu mets l'apha ? Je n'en sais rien en principe, car je n'ai jamais utilisé le C-Engine. Par contre, j'ai été regarder dans les sources, et j'ai trouvé !

Je te mets là le lien vers le fichier Sprites.cpp, je pense que tu réussiras à trouver comment on fait !
----------------------------------
Rise.
Lepianoteur
Hors ligne
Membre
Points: 179
Défis: 0
Message
Citer : Posté le 11/11/2018 16:37 | #
J'ai mp fife86 par email ( le créateur du C-engine) et il m'a passé toute ses sources déjà *pas que ce qu'il y a dans le git d'ailleurs* c'est même ça qui m'as permis d'arriver jusque là sinon j'était perdu x) donc oui je vais regarder un peu le code, je voulais simplement éclaircir voir si il y avait une façon plus standard et direct mais bon j'ai du boulot x) merci de ton aide
----------------------------------
*pat pat pat pat pat pat tap tap pat* je pianote
Hackcell
Hors ligne
Membre
Points: 900
Défis: 6
Message
Citer : Posté le 11/11/2018 16:39 | #
La transparence alpha est pas déjà expliqué dans les tutos du C-engine ??
----------------------------------
I usually spend meow time cosplaying as a diligent student...
So it can get pretty stressful.
That's exactly why PC is such a happy place for meow to be ⭐
Lephenixnoir
Hors ligne
Administrateur
Points: 13201
Défis: 136
Message
Citer : Posté le 11/11/2018 16:41 | #
Qu'on se comprenne bien, il y a une façon très standard et très directe pour le faire, sans toucher au C-Engine ! Il faut juste modifier un tout petit peu ton code.

C'est juste plus marrant si tu trouves tout seul !
----------------------------------
Rise.
Lepianoteur
Hors ligne
Membre
Points: 179
Défis: 0
Message
Citer : Posté le 11/11/2018 17:10 | #
Hackcell a écrit :
La transparence alpha est pas déjà expliqué dans les tutos du C-engine ??


Je ne pense pas x) enfin je revérifierais

Lephenixnoir a écrit :
Qu'on se comprenne bien, il y a une façon très standard et très directe pour le faire, sans toucher au C-Engine ! Il faut juste modifier un tout petit peu ton code.

C'est juste plus marrant si tu trouves tout seul !


ahah compliqué je ne fais encore que apprendre mais oui je vais bien voir ce que je peux faire je vais déjà en apprendre plus sur comment utiliser les fonctions de MonochromeLib et je verrais par la suite comment je peux modifier tout ça je suis content ça avance plus vite que je ne le pensais mon projet une fois que j'aurais réglé tout les petits défaut et que j'aurais recréé le système de combat alors je le publierais et le mettrais à jour au fur et à mesure
----------------------------------
*pat pat pat pat pat pat tap tap pat* je pianote
Lepianoteur
Hors ligne
Membre
Points: 179
Défis: 0
Message
Citer : Posté le 13/11/2018 19:15 | # | Fichier joint
Nouvelles du projet :

J'ai réussi à trouver ce qu'il faut rajouter pour mettre l'alpha !

Donc maintenant,

-le déplacement est ok

-reproduction de la map : 1ere salle fini

-collision ok

-Alpha du personnage ok


Un petit aperçu par rapport au jeu original comparé à UnderCasio :



Je pense que la plupart des choses sont fait maintenant il faut que je gère la boite de dialogue et l'interface de combat

Voilà c'est tout pour les nouvelles du projet


Ajouté le 13/11/2018 à 19:56 :
Lephenixnoir a écrit :
Je te mets là le lien vers le fichier Sprites.cpp, je pense que tu réussiras à trouver comment on fait !


Merci grâce à cet indice j'ai trouvé comment faire
----------------------------------
*pat pat pat pat pat pat tap tap pat* je pianote
Lephenixnoir
Hors ligne
Administrateur
Points: 13201
Défis: 136
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.
----------------------------------
Rise.

Pages: Précédente | 1, 2, 3, 4 | Suivante

Index du Forum > Projets de programmation > UnderCasio

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2018 | Il y a 45 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire indépendant, géré bénévolement et n'est donc pas affilié à Casio | Toute reproduction de Planète Casio, même partielle, est interdite
Les fichiers, programmes et autres publications présents sur Planète Casio restent la propriété de leurs auteurs respectifs et peuvent être soumis à des licences ou des copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd