Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

MARIO EN SDL


Information sur la source

Catégorie :Jeux Classé sous : Mario, SDL, SDLttf, ndubien Niveau : Débutant Date de création : 06/02/2008 Date de mise à jour : 06/02/2008 15:06:19 Vu / téléchargé: 7 795 / 774

Note :
8 / 10 - par 2 personnes
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (15)
Ajouter un commentaire et/ou une note


Description

Cliquez pour voir la capture en taille normale
Voici un Mario en C++ utilisant SDL…

Quelques explications :
- J’ai choisi de ne pas utiliser SDL_image pour dessiner Mario et ses ennemis afin de pouvoir personnaliser les couleurs des personnages. Ainsi on peut choisir la couleur de Mario…
(très utiles si on adapte le jeu en multijoueurs)
- Les classes sont dans des fichiers .h et pas dans des fichiers .cpp comme l’on a l’habitude de le faire : mais l’intérêt d’un code  est avant tout qu’il fonctionne.

Soyez indulgents, il s’agit de ma première source utilisant SDL.
Vos commentaires, idées d’innovations, critiques… sont les bienvenues afin d’améliorer cette source le plus possible.

Pour informations, on peut très facilement ajouter un Mario pour en faire un jeu multijoueurs.

Besoin d’aide : Si quelqu’un sait comment faire des jeux de PS afin que je l’adapte sur console merci de me l’indiquer.
 

Source

  • // L'exécutables est dans le ZIP : .ex_
  • // 9 niveaux sont déjà disponibles...
// L'exécutables est dans le ZIP : .ex_
// 9 niveaux sont déjà disponibles...

Conclusion

Contrôles du personnages...
- TABULATION basculer en mode plein écran
- ESPACE tirer une fléchette
- gauche, droite, haut ou bas diriger le Mario
- ECHAP menu principal
- C retour au dernier CheckPoint
- R retour à la case départ

Un exécutables est dans le ZIP : .ex_.

Sur ce, amusez-vous bien!!! ;)
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

06 février 2008 15:06:19 :
Correction d'une faute d'orthographe

Commentaires et avis

signaler à un administrateur
Commentaire de mogwai93 le 06/02/2008 15:51:04

1) pourquoi ne pas séparer le code des déclarations pour les .h ?

2) tu peux réduire la taille des exe :
Projet / Options du Projet
Onglet Compilation
Editeur de liens
==> retirer les symboles = yes
il passe à 400ko :-)

signaler à un administrateur
Commentaire de CCJ le 06/02/2008 22:36:54

Tres complet ! :D
Je n'ai jeté qu'un petit coup d'oeil mais l'enssemble est assé "souple" , je pensse aussi que l'implementation d'un mode multi-joueurs est largement possible.
Comme je l'ai dis je nai jetté qu'un oeil mais la seule chose qui a l'air manquante c'est du son , et pourquoi ne pas gerer les evenements avec un thread ? Ca pourrait etre interessant de voir comment faire tourner le jeu avec des evenement s non synchronisés avec l'affichage...
Bref pour le moment je ne peu pas en dire plus , mon pinguin s'est "coupé un doigt" ,il a du mal a compilé .
Je reviendrais voir ca en details plus tard et tu auras ta note ;)

signaler à un administrateur
Commentaire de max12 le 07/02/2008 20:20:26 administrateur CS

Tient : http://www.palib.info/wikifr/doku.php?id=day1

Avec le Kit on peut faire des jeux de Nintendoom DS/GBA mais aussi de PSP je crois. J'ai fait une petit jeux de tetris sur NDS et sa marchait assez bien.

happy prog

signaler à un administrateur
Commentaire de ndubien le 08/02/2008 18:27:17

Salut Max12 merci pour le site...

// POUR CEUX QUI SOUHAITENT L'ADAPTER EN MULTIJOUEURS : voici ce qu'il faut faire

Pour l'adaptation multijoueurs:
- mettre deux Marios dans vector lesMarios (pour informations on peut changer la couleur du Mario avec SetCouleur(r,g,b) ;))
- deux ARROWS dans GererMarios
- puis on change la fonction eventsModeJeu:

void eventsModeJeu( SDL_Event event ) {
    int i;
    switch( event.type ) {
        // Si on veut quitter, done = 1 suffira (car celà fini la boucle)
        case SDL_QUIT:
             done = 1;
             break;
        case SDL_KEYDOWN:
             if( event.key.keysym.sym == SDLK_ESCAPE ) {
                 JeuEnCours = 0;
                 for( i=0 ; i!= GererMarios.size() ; ++i ) {
                      if( i < lesMarios.size() ) lesMarios[ i ].PauseChrono( true );
                      GererMarios[ i ].gauche = false;
                      GererMarios[ i ].droite = false;
                      GererMarios[ i ].haut = false;
                      GererMarios[ i ].bas = false;
                      GererMarios[ i ].tirer = false;
                 }
                 SDL_ShowCursor( SDL_ENABLE );
             } else if( event.key.keysym.sym == SDLK_TAB ) {
                 if( affichagePleinEcran == true ) {
                     SDL_FreeSurface( screen );
                     screen = SDL_SetVideoMode( WIDTH, HEIGHT, 32, SDL_DOUBLEBUF | SDL_HWSURFACE );
                     SDL_ShowCursor( SDL_ENABLE );
                     affichagePleinEcran = false;
                 } else {
                     SDL_FreeSurface( screen );
                     screen = SDL_SetVideoMode( WIDTH, HEIGHT, 32, SDL_DOUBLEBUF | SDL_HWSURFACE | SDL_FULLSCREEN );
                     SDL_ShowCursor( SDL_DISABLE );
                     affichagePleinEcran = true;
                 }
                 if( screen == NULL ) done = 1;
                 DessinerCarte();
             } else if( event.key.keysym.sym == SDLK_r ) {
                    for( i=0 ; i!= lesMarios.size() ; ++i ) { lesMarios[ i ].RetourCaseDepart( i+1 ); }
                    ActualiserCarte();
                    for( i=0 ; i != lesEnnemis.size() ; ++i ) { lesEnnemis[ i ].Initialiser(); }
                    for( i=0 ; i != lesBoulets.size() ; ++i ) { lesBoulets[ i ].Initialiser(); }
             }
            
     /*POUR 2 JOUEURS*/
            
             else if( event.key.keysym.sym == SDLK_LEFT ) GererMarios[ 0 ].gauche = true;
             else if( event.key.keysym.sym == SDLK_RIGHT ) GererMarios[ 0 ].droite = true;
             else if( event.key.keysym.sym == SDLK_UP ) GererMarios[ 0 ].haut = true;
             else if( event.key.keysym.sym == SDLK_DOWN ) GererMarios[ 0 ].bas = true;
             else if( event.key.keysym.sym == SDLK_RETURN ) GererMarios[ 0 ].tirer = true;
             else if( event.key.keysym.sym == SDLK_DELETE ) lesMarios[ 0 ].RetourCheckPoint();
             else if( event.key.keysym.sym == SDLK_q ) GererMarios[ 1 ].gauche = true;
             else if( event.key.keysym.sym == SDLK_d ) GererMarios[ 1 ].droite = true;
             else if( event.key.keysym.sym == SDLK_z ) GererMarios[ 1 ].haut = true;
             else if( event.key.keysym.sym == SDLK_s ) GererMarios[ 1 ].bas = true;
             else if( event.key.keysym.sym == SDLK_SPACE ) GererMarios[ 1 ].tirer = true;
             else if( event.key.keysym.sym == SDLK_a ) lesMarios[ 1 ].RetourCheckPoint();
            
             break;
        case SDL_KEYUP:

             /* POUR 2 JOUEURS */
            
             if( event.key.keysym.sym == SDLK_LEFT ) GererMarios[ 0 ].gauche = false;
             else if( event.key.keysym.sym == SDLK_RIGHT ) GererMarios[ 0 ].droite = false;
             else if( event.key.keysym.sym == SDLK_UP ) GererMarios[ 0 ].haut = false;
             else if( event.key.keysym.sym == SDLK_DOWN ) GererMarios[ 0 ].bas = false;
             else if( event.key.keysym.sym == SDLK_RETURN ) GererMarios[ 0 ].tirer = false;
             else if( event.key.keysym.sym == SDLK_q ) GererMarios[ 1 ].gauche = false;
             else if( event.key.keysym.sym == SDLK_d ) GererMarios[ 1 ].droite = false;
             else if( event.key.keysym.sym == SDLK_z ) GererMarios[ 1 ].haut = false;
             else if( event.key.keysym.sym == SDLK_s ) GererMarios[ 1 ].bas = false;
             else if( event.key.keysym.sym == SDLK_SPACE ) GererMarios[ 1 ].tirer = false;
            
             break;
        default:
             break;
    }
}

J'espère ne pas mettre trompé dans la fonction, mais normalement celà devrait marcher correctement...

Sur ce au revoir et merci pour vos commentaires.

signaler à un administrateur
Commentaire de SAKingdom le 08/02/2008 23:59:56

else if
else if
else if
....

Dans ce cas si, switch case génèrera un code plus optimisé.

signaler à un administrateur
Commentaire de cali70 le 10/02/2008 10:36:34 10/10

Excellent, quelques éléments à revoir comme cité plus haut mais j'admire le travail!
Ca me rappelle mon enfance ^^

signaler à un administrateur
Commentaire de ndubien le 14/02/2008 14:52:42

Merci pour le 10 ;)

Salut Sakingdom,

le switch est-il vraiment plus rapide que:
if
else if
else if
...
?

Si oui, il est vrai qu'il serait mieux de l'utiliser...

Merci.
A bientôt...

signaler à un administrateur
Commentaire de angel2880 le 15/02/2008 10:14:32 6/10

beau travail. j'ai des commentaires à faire sur le jeur pas son implémentation ^^. Est ce qu'il serait possible d'ajouter une commande pour faire courir Mario ??

signaler à un administrateur
Commentaire de ndubien le 15/02/2008 19:39:51

oui, je pense qu'il serait possible d'ajouter une telle commande sans beaucoup de problèmes.
A+

signaler à un administrateur
Commentaire de SAKingdom le 15/02/2008 21:57:44

Oui sera plus rapide dans ce cas ci.

Quand une variable peut avoir beaucoup de valeurs et qu'il faille les tester pour exécuter le bout de code en conséquence, le switch case devient obligatoire tant pour la lisibilité du code que pour sa vitesse d'exécution.

Génère un listing d'un code avec une série de else if et un autre avec un switch case. Tu verras bien la différence.

signaler à un administrateur
Commentaire de networe le 24/02/2008 19:15:48

Je recois l'érreur:
Cannot find -ISDL_Mixer
Que faire?

signaler à un administrateur
Commentaire de Mal_au_DOS le 29/03/2008 19:43:49

Salut !
Excellent ce programme la source et ultra-commentée et l'orienté objet est plus facile à comprendre par quelqu'un d'autre. Je vais donc l'étudier attentivement.

signaler à un administrateur
Commentaire de ndubien le 15/04/2008 12:01:52

Merci pour le commentaire, MAL_AU_DOS

signaler à un administrateur
Commentaire de ndubien le 16/04/2008 11:01:52

Bonjour,

J'ai une question:
Pourquoi mon Mario ne fonctionne t'il pas sur mon Windows Vista (il le fait redémarrer...)?
Si quelqu'un a une idée merci de me la transmettre.

Sur ce, au revoir...

signaler à un administrateur
Commentaire de maroxe le 04/08/2008 01:22:36

je crois que nous deux projet se ressemble, sauf que lemien est en C++ (j'utilise la sfml et fmod): http://www.cppfrance.com/codes/MANGA-FNATIAISIE-MARIO-LIKE_47390.aspx

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Jeu mario avec SDL (problème) [ par dmontavon ] bonjour, je suis en train de fair un super mario avec SDL... J'en suis qu'au d&#233;but, j'ai d&#233;ja r&#233;ussi &#224; le faire&nbsp;avancer &#224 Librairie SDL ==> SDL_Mixer [ par Marceleeuuh ] Salut ter tous, petite question sur la librairie SDL. Comment lire un son grace &#224; SDL_Mixer????? Pas moyen de trouver un exemple simple sur le n Deplacement Mario [ par CaptainChoc ] Bonjour, voil&#224; j'aurai besoin de vos conseils sur le comment faire le saut d'un jeu (comme mario) : vous savez, quand on appui un petit coup ca s createprocess [ par JCShaolan ] Bonjour tout le monde, je d&#233;veloppe actuellement une application (jeu d'&#233;chec) avec une librairie qui s'appelle SDL. Et en fait, lorsqu'une [SDL] Alternation d'une image [ par hoxid ] Salut !Bon voila j'ai un probleme avec SDL :je veux par exemple faire un gars qui marche (image "bonome.bmp") et que cette image se change en "bonomeq [SDL] Defilement de l'ecran [ par hoxid ] Ben voila je voulais savoir comment faire defiler l'ecran, avec SDL.J'y arrive, mais quand le perso arrive au milieu, il bloque. De plus, quand il va [SDL/WxWidgets] Events [ par djardjar ] Bonjour ! Comment on gere les &#233;venements de la SDL dans une fen&#234;tre WxWidgets ?En fait, je voudrais placer ceci dans une fen&#234;tre WxWid [SDL] Obtenir la couleur d'un pixel dans une SDL_Surface [ par Rouliann ] Bonjour tout le monde!Voil&#224; je cherche une fonction capable de lire la couleur d'un pixel dans une SDL_Surface, j'ai cherch&#233; dans SDL_video. SDL en statique [ par shenron666 ] Bonjour, je ne suis pas particuli&#232;rement fan des librairies "externes" (.dll) mais SDL &#233;tant une bonne librairie en open source j'aimerai sa SDL : linker error [ par bigben89 ] Ca fais &#224; peine quelques mois que j'fais de la programmation (en C) et j'aimerais faire un peu de 2d et de 3d avec SDL. Je regarde des tutoriaux


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,608 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.