MARIO EN SDL

mogwai93 Messages postés 362 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 4 novembre 2023 - 6 févr. 2008 à 15:51
ufukendu59 Messages postés 7 Date d'inscription samedi 23 mai 2009 Statut Membre Dernière intervention 20 juillet 2010 - 10 avril 2010 à 22:25
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/45648-mario-en-sdl

ufukendu59 Messages postés 7 Date d'inscription samedi 23 mai 2009 Statut Membre Dernière intervention 20 juillet 2010
10 avril 2010 à 22:25
Tu te complique pour rien ...
ndubien Messages postés 557 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 10 mai 2014 4
28 août 2009 à 17:28
De mémoire: le problème vient du fait que SDL n'est pas intégralement compatible avec Windows Vista... Désolé !
MADHK32 Messages postés 5 Date d'inscription mercredi 26 août 2009 Statut Membre Dernière intervention 28 août 2009
28 août 2009 à 04:13
C'est ce que j'ai fait et quand je lance le .exe; ecran bleu sous vista. As-tu une solution ?
ndubien Messages postés 557 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 10 mai 2014 4
27 août 2009 à 22:58
Il vous suffit, de changer le ".ex_" en ".exe".
MADHK32 Messages postés 5 Date d'inscription mercredi 26 août 2009 Statut Membre Dernière intervention 28 août 2009
27 août 2009 à 01:10
Bonjour, étant retourner sur mon pc win comment executer un fichier .ex_ ?
MADHK32 Messages postés 5 Date d'inscription mercredi 26 août 2009 Statut Membre Dernière intervention 28 août 2009
27 août 2009 à 01:01
bonjour je possede mac os x mais j ne peux pas executer le .exe avez vous une solution ?
maroxe Messages postés 2 Date d'inscription mercredi 18 juin 2008 Statut Membre Dernière intervention 4 août 2008
4 août 2008 à 01:22
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
ndubien Messages postés 557 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 10 mai 2014 4
16 avril 2008 à 11:01
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...
ndubien Messages postés 557 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 10 mai 2014 4
15 avril 2008 à 12:01
Merci pour le commentaire, MAL_AU_DOS
Mal_au_DOS Messages postés 39 Date d'inscription samedi 3 juin 2006 Statut Membre Dernière intervention 28 octobre 2008
29 mars 2008 à 19:43
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.
networe Messages postés 4 Date d'inscription vendredi 22 septembre 2006 Statut Membre Dernière intervention 24 février 2008
24 févr. 2008 à 19:15
Je recois l'érreur:
Cannot find -ISDL_Mixer
Que faire?
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
15 févr. 2008 à 21:57
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.
ndubien Messages postés 557 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 10 mai 2014 4
15 févr. 2008 à 19:39
oui, je pense qu'il serait possible d'ajouter une telle commande sans beaucoup de problèmes.
A+
angel2880 Messages postés 2 Date d'inscription jeudi 3 janvier 2008 Statut Membre Dernière intervention 2 mars 2008
15 févr. 2008 à 10:14
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 ??
ndubien Messages postés 557 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 10 mai 2014 4
14 févr. 2008 à 14:52
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...
cali70 Messages postés 71 Date d'inscription mercredi 29 septembre 2004 Statut Membre Dernière intervention 19 mars 2008
10 févr. 2008 à 10:36
Excellent, quelques éléments à revoir comme cité plus haut mais j'admire le travail!
Ca me rappelle mon enfance ^^
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
8 févr. 2008 à 23:59
else if
else if
else if
....

Dans ce cas si, switch case génèrera un code plus optimisé.
ndubien Messages postés 557 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 10 mai 2014 4
8 févr. 2008 à 18:27
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.
cs_max12 Messages postés 1491 Date d'inscription dimanche 19 novembre 2000 Statut Modérateur Dernière intervention 7 juillet 2014
7 févr. 2008 à 20:20
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
CCJ Messages postés 565 Date d'inscription mercredi 19 mai 2004 Statut Membre Dernière intervention 30 avril 2008 1
6 févr. 2008 à 22:36
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 ;)
mogwai93 Messages postés 362 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 4 novembre 2023
6 févr. 2008 à 15:51
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 :-)
Rejoignez-nous