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 Hors ligne Administrateur Points: 24574 Défis: 170 Message

Citer : 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)
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 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: 24574 Défis: 170 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. >_<
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 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: 24574 Défis: 170 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
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Hackcell Hors ligne Maître du Puzzle Points: 1531 Défis: 11 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
Lephenixnoir Hors ligne Administrateur Points: 24574 Défis: 170 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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Hackcell Hors ligne Maître du Puzzle Points: 1531 Défis: 11 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
Lepianoteur Hors ligne Membre Points: 217 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: 24574 Défis: 170 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 ?
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 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: 217 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: 24574 Défis: 170 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 !

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 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: 24574 Défis: 170 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 !
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 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 Maître du Puzzle Points: 1531 Défis: 11 Message

Citer : Posté le 11/11/2018 16:39 | #


La transparence alpha est pas déjà expliqué dans les tutos du C-engine ??
Lephenixnoir Hors ligne Administrateur Points: 24574 Défis: 170 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 !
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 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: 217 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: 24574 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)

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