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 » Kirby's dream land
Fife86 Hors ligne Membre Points: 830 Défis: 0 Message

Kirby's dream land

Posté le 11/01/2016 19:49

Bienvenue dans le monde des rêves de Kirby. Votre but atteindre la fin du niveau et de sauver la terre.



............. Version 1.0 ..............
   100%


............. Version 2.0 ..............
   50%







Fichier joint


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

Citer : Posté le 12/01/2016 18:02 | #


/me télécharge manuellement la vidéo puisqu'évidemment il ne peut pas la regarder directement comme tout le monde...

Eh bien, ça a l'air pas mal ! En tous cas au niveau des graphismes et de l'animation, c'est-à-dire ce dont on peut juger d'après la vidéo. Ah oui, j'oublie aussi le saut, qui est vraiment pas mal !

À part le coup de la caméra (c'est presque du détail, je pense), j'aimerais bien voir aussi quel niveau de facilité de code offre le C-Engine pour arriver à un tel résultat, et à quel prix en terme de souplesse (variété du gameplay, j'entends).

Par ailleurs tous les syscalls sont compatibles SH4 normalement, y compris sur la gestion du temps donc tu ne devrais pas avoir de problèmes à condition d'utiliser la bonne syntaxe.
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Fife86 Hors ligne Membre Points: 830 Défis: 0 Message

Citer : Posté le 12/01/2016 19:56 | #


Justement pour la compatibilité des syscalls je me demandai comment vous faites pour les placer dans un fichier Asm et comment vous linkez le fichier Asm au projet.

Sinon pour le niveau de facilité du code regarde par toi même :

main.cpp


#include "..\C-Engine\CHeader.hpp"

#include "Script.hpp"

int main()
{

#include "Sprite.hpp" // Inclusion des sprites.


//*****************Creation des objects******************

Object Kirby;
Kirby.OTransforms->SetXY(0, 17);
Kirby.ORender->SetRender(A_Kirby , 4);
Kirby.ORigibody = new Rigibody(&Kirby);
Kirby.ORigibody->SetMass(1);

Object Ours1;
Ours1.OTransforms->SetXY( 110 , 17);
Ours1.ORender->SetRender(A_Ours);

Object Ours2;
Ours2.OTransforms->SetXY( 1000 , 17);
Ours2.ORender->SetRender(A_OursBis);

Control Kirby_Script;
IaOurs Ours_Script1;
IaOurs Ours_Script2;

Kirby.AffectScript(Kirby_Script);
Ours1.AffectScript(Ours_Script1);
Ours2.AffectScript(Ours_Script2);

//***********Creation de la map***************

Map Niveau1;
Niveau1.SetMap(Tileset1 , map1 , TileProp , 16 , 16 , 81 ,7);


//**************Assignation des objects************

    Engine Game;

    Game.AddObject( & Kirby);
    Game.AddObject( & Ours1);
    Game.AddObject( & Ours2);

    Game.AffectMap( &Niveau1);

    Niveau1.AffectEngine( &Game);

    Game.Game();

    return 1;

}



Script.h

class IaOurs: public Script
{
    public:
    void Start();
    void Update();
    void UpdateEverySecond();

    private:
        bool direction;
};

void IaOurs::Start()
{
    direction = true;
}

void IaOurs::UpdateEverySecond()
{
    if(direction == true) direction = false;
    else direction = true;
}

void IaOurs::Update()
{
    OConteneur->ORender->ReverseRender( direction);
    if(direction == true)OConteneur->OTransforms->SetX( OConteneur->OTransforms->GetX() - 1);
    else OConteneur->OTransforms->SetX( OConteneur->OTransforms->GetX() + 1);
}

class Control: public Script
{
    public:
    void Update();

    private:

    bool isground;
    bool isdo;
};

void Control::Update()
{

    OConteneur->Conteneur->MiddleScreen( OConteneur->OTransforms->GetX() , (OConteneur->OTransforms->GetY() + 16));

    if( OConteneur->ORigibody->CollisionDecor( OConteneur->OTransforms->GetX() , (OConteneur->OTransforms->GetY() - 1 )) == 1) isground = true;
    else isground = false;

    isdo = false;

    if(input_press(K_RIGHT))
        {
            OConteneur->ORender->SetIt(1);

            OConteneur->ORender->ReverseRender( false);

            isdo = true;

            OConteneur->ORigibody->Move( 1 , 0 );
        }

    if(input_press(K_LEFT))
        {
            OConteneur->ORender->SetIt(1);

            OConteneur->ORender->ReverseRender( true);

            isdo = true;

             OConteneur->ORigibody->Move( -1 , 0 );
        }

    if(input_press(K_UP) && isground == true)
        {
            OConteneur->ORender->SetIt(0);

            isdo = true;

            OConteneur->ORigibody->AddForce( 0 , 38);
        }

    if(input_press(K_SHIFT) && isground == true)
        {
            OConteneur->ORender->SetIt(2);
        }

    if(isground == false)
    {
        OConteneur->ORender->SetIt(3);
    }
    else if( isdo == false)
    {
        OConteneur->ORender->SetIt(0);
    }


    if( OConteneur->OTransforms->GetY() < 0)
    {
       OConteneur->OTransforms->SetXY(0, 17);
    }
}


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 >
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 12/01/2016 20:09 | #


T'as encore mis du code dans un header >.<
Et d'où tu inclus un header dans une fonction, oh... x)
Je ne parlerai pas de l'indentation par ailleurs, comment peux-tu coder un gros projet comme ça ? Je ne saisis pas...
Mais bref, ça on s'en fout un peu.

Je dois avouer que la clarté est là... c'est carrément simple à utiliser, bien joué.
Par contre pourquoi tu affectes le moteur au niveau ? Tu devrais plutôt avoir engine.startLevel(), c'est bien plus logique je pense.
Est-ce que la structure du moteur permet d'ajouter manuellement, en-dehors du moteur de jeu lui-même, des mécaniques de jeu exotiques, type passages secrets / sorties de maps / téléportations / ennemis ayant différentes formes / scripts d'évènements et/ou d'animations / éditions de la map ou est-on « restreint » à l'interface qu'il offre ?
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Fife86 Hors ligne Membre Points: 830 Défis: 0 Message

Citer : Posté le 12/01/2016 20:18 | #


La téléportation est possible d’ailleurs dans la vidéo on est tp au début de la map si on tombe dans le vide. Pour des mécaniques de jeu exotiques je pense que c'est possible après avoir les quelles. Script d'événement c'est le Script.h avec la fonction Update() appelé chaque frame.
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 >
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 12/01/2016 20:29 | #


Fife86 a écrit :
Script d'événement c'est le Script.h avec la fonction Update() appelé chaque frame.

Je parle de scripts qui sont utilisées une seule fois, par exemple quand on appuie sur un bouton, ce qui affecte l'état de la map

N'y a-t-il vraiment pas d'interfaçage possible avec un programme personnalisé ?
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Dark storm En ligne Labélisateur Points: 11631 Défis: 176 Message

Citer : Posté le 12/01/2016 20:31 | #


Yep, c'est en effet pas mal coté utilisateur (coté code, c'est juste immonde), mais si on peut personnaliser assez facilement le moteur ça serai pas plus mal.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Fife86 Hors ligne Membre Points: 830 Défis: 0 Message

Citer : Posté le 13/01/2016 07:04 | #


Dans l update tu peu par exemple vérifier si le bouton est appuyé. Sinon il y a d autre fonction comme start executé au départ ou endanim executé à la fin d une animatuon du personnage.
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 >
Eltoredo Hors ligne Modérateur Points: 4301 Défis: 35 Message

Citer : Posté le 13/01/2016 12:04 | #


Lephenixnoir Malade a écrit :
T'as encore mis du code dans un header >.<
Et d'où tu inclus un header dans une fonction, oh... x)
Je ne parlerai pas de l'indentation par ailleurs, comment peux-tu coder un gros projet comme ça ? Je ne saisis pas...
Mais bref, ça on s'en fout un peu.


Depuis quand le grand Lephenixnoir se permet de dire que l'on se fout de l'indentation et d'autres erreurs comme celles-ci ?

Je ne reconnais plus notre Phenix là
La procrastination est une vertu. (voir ma description pour comprendre mon raisonnement)
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 14/01/2016 19:42 | #


ElToredo a écrit :
Depuis quand le grand Lephenixnoir se permet de dire que l'on se fout de l'indentation et d'autres erreurs comme celles-ci ?

J'estimais que Fife86 savait gérer son projet, même si ces remarques me font quand même douter du code résultant... x)

Parce que oui quand tu codes un moteur comme ça je pense que tu mérites qu'on ne t'emmerde que par principe avec le code. Pas comme toi par exemple... :3
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Fife86 Hors ligne Membre Points: 830 Défis: 0 Message

Citer : Posté le 14/01/2016 19:49 | #


J ai toujours appris en auto didacte donc je ne connais pas trop les normes des écoles. Mais lorsqu on mz fait une remarque j essaye dans prendre compte.
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 >
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 14/01/2016 19:55 | #


C'est pas des normes d'écoles, c'est du consensus général C'est des genres de choses qu'on ne fait tout simplement pas en C, comme le goto.
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Fife86 Hors ligne Membre Points: 830 Défis: 0 Message

Citer : Posté le 14/01/2016 19:56 | #


Goto sa exsiste ???? Xd
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 >
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

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


Non, ça n'existe pas

(Bref.)
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Eltoredo Hors ligne Modérateur Points: 4301 Défis: 35 Message

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


Je vois Sinon, je tiens quand même à encore te féliciter pour ce programme, peut-être qu'un jour tu arriveras à faire ce genre d'applications mais universelles et non liées à la calculatrice ! En tout cas, étant adepte de ce genre de programmes, je ne peux qu'admirer et j'ai hâte que ça sorte sur SH4 encore une fois, poste ton problème ici si tu n'arrives pas à le résoudre
La procrastination est une vertu. (voir ma description pour comprendre mon raisonnement)
Ninestars Hors ligne Membre Points: 2461 Défis: 24 Message

Citer : Posté le 15/01/2016 10:38 | #


D'ailleurs j'ai regardé le code, ce n'est peut-être pas à jour, mais je te déconseille d'inclure tes sprites aussi simplement comme celà.
Passe plutôt par une base de données. Tu as un fichier .c qui contient tout tes sprites et des fonctions pour y accéder.
Comme ça pour obtenir un sprite tu fais un truc du genre :
bdd_sprite_personnage(3, 2, 0, 2)
avec un prototype
(const unsigned char)* bbd_sprite_personnage(int id, int direction, int chute, int pattern);
-florian66- Hors ligne Ancien rédacteur Points: 2383 Défis: 20 Message

Citer : Posté le 15/01/2016 12:37 | #


Le goto existe en C mais il est très peu utilisé (et heureusement) Un petit lien pour savoir que ça existe
In Arch, I trust ! And you ?
Fife86 Hors ligne Membre Points: 830 Défis: 0 Message

Citer : Posté le 22/01/2016 13:57 | # | Fichier joint


!!!!! Kirby est compatible SH4 !!!!!


Venez des maintenant l'essayer, le jeu est dans la pièce jointe...... :aaah:


Touche replay pour se déplacer et Alpha pour Quitter.
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 >
Matt36230 Hors ligne Membre Points: 1888 Défis: 0 Message

Citer : Posté le 22/01/2016 19:50 | #


Oh mon dieu je teste !

Ajouté le 22/01/2016 à 19:59 :
Donc, déjà c'est très sympa et c'est joli

Mais, parce qu'il faut un mais, on ne voit pas on on va quand on est sur une plateforme plus haute que ce qu'il y a en dessous Donc descendre un peu la caméra serait beaucoup plus agréable.
Aussi quand on saute et qu'on se met contre un mur, kirby ne descend pas.

Sinon pas grand chose d'autre à dur à part que les graphismes sont très agréable, bien joué sur ce coup !
Fife86 Hors ligne Membre Points: 830 Défis: 0 Message

Citer : Posté le 24/01/2016 08:57 | #


La problème de la caméra va bientôt être réglé, je fini juste de coder la partie qui permet a kirby de voler. Pour ce qui de la collision avec le décor, c est encore très simple. Lorsque l object touche un cube du décor il s arrète.
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 >
-florian66- Hors ligne Ancien rédacteur Points: 2383 Défis: 20 Message

Citer : Posté le 24/01/2016 10:02 | #


Oo je teste le SH4 !
@Fif : Sound4Calc ne se mettra pas tous de suite dans C-Engine
In Arch, I trust ! And you ?
Ti64CLi Hors ligne Membre Points: 629 Défis: 65 Message

Citer : Posté le 25/01/2016 13:32 | #


Franchement, bien joué
J'ai hâte qu'il sois fini

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