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 !

APPRENDRE SDL AVEC MARIO


Information sur la source

Catégorie :Jeux Classé sous : mario SDL, jeu mario, programmer mario, apprendre SDL, jeu SDL Niveau : Débutant Date de création : 11/08/2008 Date de mise à jour : 03/09/2008 13:53:53 Vu / téléchargé: 5 510 / 345

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

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


Description

Cliquez pour voir la capture en taille normale
ce petit programme vient dans le cadre d'apprentissage de la SDL avec le C++, sur ce programme j'utilise pas la notion de classe, et je traite pas les collisions, vous pouvez l'améliorer, c'est enrichissant pour les débutants, n'hésiter pas à me contacter sur "migon.31@hotmail.fr".
 

Source

  • //Les fichiers d'entête
  • #include "SDL/SDL.h"
  • #include "SDL/SDL_image.h"
  • #include <string>
  • //Les attributs de l'écran (640 * 480)
  • const int SCREEN_WIDTH = 640;
  • const int SCREEN_HEIGHT = 480;
  • const int SCREEN_BPP = 32;
  • //Les attributs de la feuille de sprites de mario
  • const int SHEET_WIDTH = 382;
  • const int SHEET_HEIGHT = 1131;
  • //Les attributs de la feuille de sprites de mario
  • const int SHEET_WIDTH2 = 60;
  • const int SHEET_HEIGHT2 = 25;
  • //Les surfaces
  • SDL_Surface *faces = NULL;
  • SDL_Surface *arriere_plan = NULL;
  • SDL_Surface *enemis = NULL;
  • SDL_Surface *screen = NULL;
  • //La structure d'événements
  • SDL_Event event;
  • //les premiers coordonées de mario
  • int posx=100,posy=415;
  • //le numero de l'image à afficher
  • int anim=0;
  • //proprité de l'enemie
  • int posx_e=0,posy_e=430, anim_e=0;
  • //les images de mario
  • SDL_Rect clip[ 10 ];
  • //les images des enemis
  • SDL_Rect clip2[ 5 ];
  • //charger une image
  • SDL_Surface *load_image( std::string filename, int *R=NULL, int *G=NULL, int *B=NULL)
  • {
  • //L'image qui est chargée
  • SDL_Surface* loadedImage = NULL;
  • //L'image optimisée qu'on va utiliser
  • SDL_Surface* optimizedImage = NULL;
  • //Chargement de l'image
  • loadedImage = IMG_Load( filename.c_str() );
  • //Si l'image est chargée
  • if( loadedImage != NULL )
  • {
  • //Création de l'image optimisée
  • optimizedImage = SDL_DisplayFormat( loadedImage );
  • //Libération de l'ancienne image
  • SDL_FreeSurface( loadedImage );
  • //Si la création de l'image optimisée s'est bien passée
  • if( optimizedImage != NULL )
  • {
  • Uint32 colorkey = SDL_MapRGB( optimizedImage->format, *R, *G, *B);
  • SDL_SetColorKey( optimizedImage, SDL_RLEACCEL | SDL_SRCCOLORKEY,colorkey);
  • }
  • }
  • //On retourne l'image optimisée
  • return optimizedImage;
  • }
  • /*
  • avant je faisais une fonction de chargement pour chaque couleur de transparence ce qui n'été pas une bonne méthode ;)
  • //charger une image sans le vert
  • SDL_Surface *load_image( std::string filename )
  • {
  • //L'image qui est chargée
  • SDL_Surface* loadedImage = NULL;
  • //L'image optimisée qu'on va utiliser
  • SDL_Surface* optimizedImage = NULL;
  • //Chargement de l'image
  • loadedImage = IMG_Load( filename.c_str() );
  • //Si l'image est chargée
  • if( loadedImage != NULL )
  • {
  • //Création de l'image optimisée
  • optimizedImage = SDL_DisplayFormat( loadedImage );
  • //Libération de l'ancienne image
  • SDL_FreeSurface( loadedImage );
  • //Si la création de l'image optimisée s'est bien passée
  • if( optimizedImage != NULL )
  • {
  • Uint32 colorkey = SDL_MapRGB( optimizedImage->format, 48, 169, 66);
  • SDL_SetColorKey( optimizedImage, SDL_RLEACCEL | SDL_SRCCOLORKEY,colorkey);
  • }
  • }
  • //On retourne l'image optimisée
  • return optimizedImage;
  • }
  • //charger une image sans le blanc
  • SDL_Surface *load_image2( std::string filename )
  • {
  • //L'image qui est chargée
  • SDL_Surface* loadedImage = NULL;
  • //L'image optimisée qu'on va utiliser
  • SDL_Surface* optimizedImage = NULL;
  • //Chargement de l'image
  • loadedImage = IMG_Load( filename.c_str() );
  • //Si l'image est chargée
  • if( loadedImage != NULL )
  • {
  • //Création de l'image optimisée
  • optimizedImage = SDL_DisplayFormat( loadedImage );
  • //Libération de l'ancienne image
  • SDL_FreeSurface( loadedImage );
  • //Si la création de l'image optimisée s'est bien passée
  • if( optimizedImage != NULL )
  • {
  • Uint32 colorkey = SDL_MapRGB( optimizedImage->format, 255, 255, 255);
  • SDL_SetColorKey( optimizedImage, SDL_RLEACCEL | SDL_SRCCOLORKEY,colorkey);
  • }
  • }
  • //On retourne l'image optimisée
  • return optimizedImage;
  • }*/
  • void apply_surface( int x, int y, SDL_Surface* source, SDL_Surface* destination, SDL_Rect* clip = NULL )
  • {
  • SDL_Rect offset;
  • offset.x = x;
  • offset.y = y;
  • //On blitte la surface
  • SDL_BlitSurface( source, clip, destination, &offset );
  • }
  • bool init()
  • {
  • //Initialisation de tous les sous-systèmes de SDL
  • if( SDL_Init( SDL_INIT_EVERYTHING ) == -1 )
  • {
  • return false;
  • }
  • //Mise en place de l'écran
  • screen = SDL_SetVideoMode( SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, SDL_SWSURFACE|SDL_FULLSCREEN );
  • //S'il y a une erreur lors de la mise en place de l'écran
  • if( screen == NULL )
  • {
  • return false;
  • }
  • //Mise en place de la barre caption
  • SDL_WM_SetCaption( "JV_ ABDOU", NULL );
  • //Si tout s'est bien passé
  • return true;
  • }
  • bool load_files()
  • {
  • //Chargement de la feuille de sprite
  • int r=48, g=169, b=66;
  • faces = load_image( "mario.png", &r, &g, &b );
  • arriere_plan = load_image( "nature.png", &r, &g, &b);
  • r=255; g=255; b=255;
  • enemis= load_image( "enemis.png", &r, &g, &b);
  • //Si tout s'est bien passé
  • return true;
  • }
  • void clean_up()
  • {
  • //On libère la feuille de sprites
  • SDL_FreeSurface( faces );
  • SDL_FreeSurface( enemis );
  • SDL_FreeSurface( arriere_plan );
  • SDL_FreeSurface( screen );
  • //On quitte SDL
  • SDL_Quit();
  • }
  • //decouper la feuille de mario
  • void decoupage ()
  • {
  • //On coupe la partie en haut à gauche (premier sprite)
  • clip[ 0 ].x = SHEET_WIDTH/25;
  • clip[ 0 ].y = 20+2*SHEET_HEIGHT/27;
  • clip[ 0 ].w = SHEET_WIDTH/15;
  • clip[ 0 ].h = SHEET_HEIGHT/30;
  • //On coupe la partie en haut à droite (second sprite)
  • clip[ 1 ].x = SHEET_WIDTH/25+SHEET_WIDTH/15;
  • clip[ 1 ].y = 20+2*SHEET_HEIGHT/27;
  • clip[ 1 ].w = SHEET_WIDTH/15;
  • clip[ 1 ].h = SHEET_HEIGHT/30;
  • //On coupe la partie en bas à gauche (troisième sprite)
  • clip[ 2 ].x = SHEET_WIDTH/25+2*(SHEET_WIDTH/15);
  • clip[ 2 ].y = 20+2*SHEET_HEIGHT/27;
  • clip[ 2 ].w = SHEET_WIDTH/15-5;
  • clip[ 2 ].h = SHEET_HEIGHT/30;
  • clip[ 3 ].x = SHEET_WIDTH/25+3*(SHEET_WIDTH/15)-5;
  • clip[ 3 ].y = 20+2*SHEET_HEIGHT/27;
  • clip[ 3 ].w = SHEET_WIDTH/15-6;
  • clip[ 3 ].h = SHEET_HEIGHT/30;
  • clip[ 4 ].x = SHEET_WIDTH/25+4*(SHEET_WIDTH/15)-10;
  • clip[ 4 ].y = 20+2*SHEET_HEIGHT/27;
  • clip[ 4 ].w = SHEET_WIDTH/15-6;
  • clip[ 4 ].h = SHEET_HEIGHT/30;
  • clip[ 5 ].x = SHEET_WIDTH/25+5*(SHEET_WIDTH/15)+3;
  • clip[ 5 ].y = 20+2*SHEET_HEIGHT/27;
  • clip[ 5 ].w = SHEET_WIDTH/15-2;
  • clip[ 5 ].h = SHEET_HEIGHT/30;
  • clip[ 6 ].x = SHEET_WIDTH/25+6*(SHEET_WIDTH/15)-20;
  • clip[ 6 ].y = 20+2*SHEET_HEIGHT/27;
  • clip[ 6 ].w = SHEET_WIDTH/15-3;
  • clip[ 6 ].h = SHEET_HEIGHT/30;
  • clip2[ 0 ].x = 0;
  • clip2[ 0 ].y = 0;
  • clip2[ 0 ].w = SHEET_WIDTH2/3;
  • clip2[ 0 ].h = SHEET_HEIGHT2;
  • clip2[ 1 ].x = SHEET_WIDTH2/3;
  • clip2[ 1 ].y = 0;
  • clip2[ 1 ].w = SHEET_WIDTH2/3;
  • clip2[ 1 ].h = SHEET_HEIGHT2;
  • clip2[ 2 ].x = 2*SHEET_WIDTH2/3;
  • clip2[ 2 ].y = 0;
  • clip2[ 2 ].w = SHEET_WIDTH2/3;
  • clip2[ 2 ].h = SHEET_HEIGHT2;
  • }
  • //traiter les evenements
  • void evenement()
  • {
  • //Obtenir les KeyStates
  • Uint8 *keystates = SDL_GetKeyState( NULL );
  • bool move= false;
  • if( keystates[ SDLK_UP ] )
  • {
  • posy-=3;
  • move= true;
  • }
  • //Si Bas est pressé (la fleche)
  • if( keystates[ SDLK_DOWN ] )
  • {
  • posy+=3;
  • move= true;
  • }
  • //Si Gauche est pressé (la fleche)
  • if( keystates[ SDLK_LEFT ] )
  • {
  • posx-=3;
  • if ( posx < 0 ) posx++;
  • move= true;
  • }
  • //Si Droite est pressé (la fleche)
  • if( keystates[ SDLK_RIGHT ] )
  • {
  • posx+=3;
  • if (posx >= SCREEN_WIDTH-15 ) posx--;
  • move= true;
  • }
  • if ( move == true ) anim++;
  • else anim = 6;
  • if ( anim == 7) anim = 0;
  • }
  • void evenement_enemis()
  • {
  • //cette fonction permet l'animation de l'enemis
  • apply_surface( posx_e, posy_e, enemis, screen, &clip2[anim_e] );
  • //changer la position de l'enemi
  • posx_e++;
  • //changé l'animation
  • anim_e++;
  • if ( posx_e == SCREEN_WIDTH ) posx_e=0;
  • if (anim_e == 2 ) anim_e=0;
  • }
  • int main( int argc, char* args[] )
  • {
  • //Ce qui va nous permettre de quitter
  • bool quit = false;
  • //Initialisation
  • if( init() == false )
  • {
  • return 1;
  • }
  • //Chargement des fichiers
  • if( load_files() == false )
  • {
  • return 1;
  • }
  • decoupage();
  • //Tant que l'utilisateur n'a pas quitter
  • while( quit == false )
  • {
  • //preparer l'arriere plan
  • apply_surface( 0, 0, arriere_plan, screen);
  • //traiter les evenement clavier
  • evenement();
  • //preparer le personnage mario
  • apply_surface( posx, posy, faces, screen, &clip[anim] );
  • //si l'enemi n'est pas toucher
  • evenement_enemis();
  • //afficher
  • SDL_Flip( screen);
  • //Tant qu'il y a un événement
  • while( SDL_PollEvent( &event ) )
  • {
  • switch (event.key.keysym.sym)
  • {
  • case SDLK_ESCAPE: /* Appui sur la touche Echap, on arrête le programme */
  • quit = true;
  • break;
  • }
  • }
  • }
  • //On libère les images et on quitte SDL
  • clean_up();
  • return 0;
  • }
//Les fichiers d'entête
#include "SDL/SDL.h"
#include "SDL/SDL_image.h"
#include <string>

//Les attributs de l'écran (640 * 480)
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
const int SCREEN_BPP = 32;

//Les attributs de la feuille de sprites de mario
const int SHEET_WIDTH = 382;
const int SHEET_HEIGHT = 1131;

//Les attributs de la feuille de sprites de mario
const int SHEET_WIDTH2 = 60;
const int SHEET_HEIGHT2 = 25;

//Les surfaces
SDL_Surface *faces = NULL;
SDL_Surface *arriere_plan = NULL;
SDL_Surface *enemis = NULL;
SDL_Surface *screen = NULL;

//La structure d'événements
SDL_Event event;

//les premiers coordonées de mario
int posx=100,posy=415;

//le numero de l'image à afficher
int anim=0;

//proprité de l'enemie
int posx_e=0,posy_e=430, anim_e=0;


//les images de mario
SDL_Rect clip[ 10 ];

//les images des enemis
SDL_Rect clip2[ 5 ];

//charger une image 
SDL_Surface *load_image( std::string filename, int *R=NULL, int *G=NULL, int *B=NULL)
{
    //L'image qui est chargée
    SDL_Surface* loadedImage = NULL;

    //L'image optimisée qu'on va utiliser
    SDL_Surface* optimizedImage = NULL;

    //Chargement de l'image
    loadedImage = IMG_Load( filename.c_str() );

    //Si l'image est chargée
    if( loadedImage != NULL )
    {
        //Création de l'image optimisée
        optimizedImage = SDL_DisplayFormat( loadedImage );

        //Libération de l'ancienne image
        SDL_FreeSurface( loadedImage );

        //Si la création de l'image optimisée s'est bien passée
        if( optimizedImage != NULL )
        {
          Uint32 colorkey = SDL_MapRGB( optimizedImage->format, *R, *G, *B);
          SDL_SetColorKey( optimizedImage, SDL_RLEACCEL | SDL_SRCCOLORKEY,colorkey);
        }
    }

    //On retourne l'image optimisée
    return optimizedImage;
}

/*
avant je faisais une fonction de chargement pour chaque couleur de transparence ce qui n'été pas une bonne méthode ;)

//charger une image sans le vert
SDL_Surface *load_image( std::string filename )
{
    //L'image qui est chargée
    SDL_Surface* loadedImage = NULL;

    //L'image optimisée qu'on va utiliser
    SDL_Surface* optimizedImage = NULL;

    //Chargement de l'image
    loadedImage = IMG_Load( filename.c_str() );

    //Si l'image est chargée
    if( loadedImage != NULL )
    {
        //Création de l'image optimisée
        optimizedImage = SDL_DisplayFormat( loadedImage );

        //Libération de l'ancienne image
        SDL_FreeSurface( loadedImage );

        //Si la création de l'image optimisée s'est bien passée
        if( optimizedImage != NULL )
        {
          Uint32 colorkey = SDL_MapRGB( optimizedImage->format, 48, 169, 66);
          SDL_SetColorKey( optimizedImage, SDL_RLEACCEL | SDL_SRCCOLORKEY,colorkey);
        }
    }

    //On retourne l'image optimisée
    return optimizedImage;
}

//charger une image sans le blanc
SDL_Surface *load_image2( std::string filename )
{
    //L'image qui est chargée
    SDL_Surface* loadedImage = NULL;

    //L'image optimisée qu'on va utiliser
    SDL_Surface* optimizedImage = NULL;

    //Chargement de l'image
    loadedImage = IMG_Load( filename.c_str() );

    //Si l'image est chargée
    if( loadedImage != NULL )
    {
        //Création de l'image optimisée
        optimizedImage = SDL_DisplayFormat( loadedImage );

        //Libération de l'ancienne image
        SDL_FreeSurface( loadedImage );

        //Si la création de l'image optimisée s'est bien passée
        if( optimizedImage != NULL )
        {
          Uint32 colorkey = SDL_MapRGB( optimizedImage->format, 255, 255, 255);
          SDL_SetColorKey( optimizedImage, SDL_RLEACCEL | SDL_SRCCOLORKEY,colorkey);
        }
    }

    //On retourne l'image optimisée
    return optimizedImage;
}*/

void apply_surface( int x, int y, SDL_Surface* source, SDL_Surface* destination, SDL_Rect* clip = NULL )
{
    SDL_Rect offset;

    offset.x = x;
    offset.y = y;

    //On blitte la surface
    SDL_BlitSurface( source, clip, destination, &offset );
}

bool init()
{
    //Initialisation de tous les sous-systèmes de SDL

    if( SDL_Init( SDL_INIT_EVERYTHING ) == -1 )
    {
        return false;
    }

    //Mise en place de l'écran
    screen = SDL_SetVideoMode( SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, SDL_SWSURFACE|SDL_FULLSCREEN );

    //S'il y a une erreur lors de la mise en place de l'écran
    if( screen == NULL )
    {
        return false;
    }

    //Mise en place de la barre caption
    SDL_WM_SetCaption( "JV_ ABDOU", NULL );

    //Si tout s'est bien passé
    return true;
}

bool load_files()
{
    //Chargement de la feuille de sprite
    int r=48, g=169, b=66;
    faces = load_image( "mario.png", &r, &g, &b );
    arriere_plan = load_image( "nature.png", &r, &g, &b);
    r=255; g=255; b=255;
    enemis= load_image( "enemis.png", &r, &g, &b);
    
    //Si tout s'est bien passé
    return true;
}

void clean_up()
{
    //On libère la feuille de sprites
    SDL_FreeSurface( faces );
    SDL_FreeSurface( enemis );
    SDL_FreeSurface( arriere_plan );
    SDL_FreeSurface( screen );
              
    //On quitte SDL
    SDL_Quit();   
}

//decouper la feuille de mario
void decoupage ()
{    
    //On coupe la partie en haut à gauche (premier sprite)
    clip[ 0 ].x = SHEET_WIDTH/25;
    clip[ 0 ].y = 20+2*SHEET_HEIGHT/27;
    clip[ 0 ].w = SHEET_WIDTH/15;
    clip[ 0 ].h = SHEET_HEIGHT/30;
    
    //On coupe la partie en haut à droite (second sprite)
    clip[ 1 ].x = SHEET_WIDTH/25+SHEET_WIDTH/15;
    clip[ 1 ].y = 20+2*SHEET_HEIGHT/27;
    clip[ 1 ].w = SHEET_WIDTH/15;
    clip[ 1 ].h = SHEET_HEIGHT/30;
     
    //On coupe la partie en bas à gauche (troisième sprite)
    clip[ 2 ].x = SHEET_WIDTH/25+2*(SHEET_WIDTH/15);
    clip[ 2 ].y = 20+2*SHEET_HEIGHT/27;
    clip[ 2 ].w = SHEET_WIDTH/15-5;
    clip[ 2 ].h = SHEET_HEIGHT/30;
    
    clip[ 3 ].x = SHEET_WIDTH/25+3*(SHEET_WIDTH/15)-5;
    clip[ 3 ].y = 20+2*SHEET_HEIGHT/27;
    clip[ 3 ].w = SHEET_WIDTH/15-6;
    clip[ 3 ].h = SHEET_HEIGHT/30;
    
    clip[ 4 ].x = SHEET_WIDTH/25+4*(SHEET_WIDTH/15)-10;
    clip[ 4 ].y = 20+2*SHEET_HEIGHT/27;
    clip[ 4 ].w = SHEET_WIDTH/15-6;
    clip[ 4 ].h = SHEET_HEIGHT/30;
    
    clip[ 5 ].x = SHEET_WIDTH/25+5*(SHEET_WIDTH/15)+3;
    clip[ 5 ].y = 20+2*SHEET_HEIGHT/27;
    clip[ 5 ].w = SHEET_WIDTH/15-2;
    clip[ 5 ].h = SHEET_HEIGHT/30;
    
    clip[ 6 ].x = SHEET_WIDTH/25+6*(SHEET_WIDTH/15)-20;
    clip[ 6 ].y = 20+2*SHEET_HEIGHT/27;
    clip[ 6 ].w = SHEET_WIDTH/15-3;
    clip[ 6 ].h = SHEET_HEIGHT/30;   
    
    clip2[ 0 ].x = 0;
    clip2[ 0 ].y = 0;
    clip2[ 0 ].w = SHEET_WIDTH2/3;
    clip2[ 0 ].h = SHEET_HEIGHT2;
    
    clip2[ 1 ].x = SHEET_WIDTH2/3;
    clip2[ 1 ].y = 0;
    clip2[ 1 ].w = SHEET_WIDTH2/3;
    clip2[ 1 ].h = SHEET_HEIGHT2;    
    
    clip2[ 2 ].x = 2*SHEET_WIDTH2/3;
    clip2[ 2 ].y = 0;
    clip2[ 2 ].w = SHEET_WIDTH2/3;
    clip2[ 2 ].h = SHEET_HEIGHT2;   
    
}

//traiter les evenements
void evenement()
{
   //Obtenir les KeyStates
   Uint8 *keystates = SDL_GetKeyState( NULL );  
   bool move= false;
        if( keystates[ SDLK_UP ] )
        {
         posy-=3; 
         move= true;
        }

        //Si Bas est pressé (la fleche)
        if( keystates[ SDLK_DOWN ] )
        {
         posy+=3;
         move= true;
        }

        //Si Gauche est pressé (la fleche)
        if( keystates[ SDLK_LEFT ] )
        {
         posx-=3;
         if ( posx < 0 ) posx++;
         move= true;
        }
        
        //Si Droite est pressé (la fleche)
        if( keystates[ SDLK_RIGHT ] )
        {
         posx+=3;
         if (posx >= SCREEN_WIDTH-15 ) posx--;
         move= true;
        }     
        
    if ( move == true ) anim++;
    else anim = 6;
    if ( anim == 7) anim = 0;
}

void evenement_enemis()
{
  //cette fonction permet l'animation de l'enemis
  apply_surface( posx_e, posy_e, enemis, screen, &clip2[anim_e] );
  //changer la position de l'enemi
  posx_e++;
  //changé l'animation
  anim_e++;
  if ( posx_e == SCREEN_WIDTH ) posx_e=0;
  if (anim_e == 2 ) anim_e=0;
}     
 

int main( int argc, char* args[] )
{
    //Ce qui va nous permettre de quitter
    bool quit = false; 

    //Initialisation
    if( init() == false )
    {
        return 1;
    }

    //Chargement des fichiers
    if( load_files() == false )
    {
        return 1;
    }

    decoupage();
    
    //Tant que l'utilisateur n'a pas quitter
    while( quit == false )
    {   
        //preparer l'arriere plan
        apply_surface( 0, 0, arriere_plan, screen);

        //traiter les evenement clavier
        evenement();
        
        //preparer le personnage mario
        apply_surface( posx, posy, faces, screen, &clip[anim] );
        
        
        //si l'enemi n'est pas toucher
        evenement_enemis();
      
        //afficher
        SDL_Flip( screen);

        //Tant qu'il y a un événement
        while( SDL_PollEvent( &event ) )
        {
            switch (event.key.keysym.sym)
            {
              case SDLK_ESCAPE: /* Appui sur la touche Echap, on arrête le programme */
                                quit = true;
                                break;
            }        
        }
        
    }

    //On libère les images et on quitte SDL
    clean_up();

    return 0;
}


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 !
  • enemis.pngTélécharger ce fichier [Réservé aux membres club]Voir ce fichier16 963 octets
  • libogg-0.dllTélécharger ce fichier [Réservé aux membres club]15 872 octets
  • libpng12-0.dllTélécharger ce fichier [Réservé aux membres club]131 072 octets
  • mario.pngTélécharger ce fichier [Réservé aux membres club]Voir ce fichier78 372 octets
  • nature.pngTélécharger ce fichier [Réservé aux membres club]Voir ce fichier603 592 octets
  • Projet1.devTélécharger ce fichier [Réservé aux membres club]917 octets
  • SansNom1.cppTélécharger ce fichier [Réservé aux membres club]Voir ce fichier8 516 octets
  • SDL.dllTélécharger ce fichier [Réservé aux membres club]321 536 octets
  • SDL_image.dllTélécharger ce fichier [Réservé aux membres club]40 448 octets

Télécharger le zip

Historique

15 août 2008 13:17:47 :
suite à une remarque faite par mon ami "ALUCARDS" qui m'a proposer de faire qu'une seule fonction de "load_image" qui prendra en paramètre la couleur de transparence, j'ai modifié la source toute en laissant les deux fonctions que j'utilisais en commentaire. merci "ALUCARDS" ;).
15 août 2008 20:25:42 :
;).
03 septembre 2008 13:53:53 :
Suppression d'une instruction inutile. (Merci ALUCARDS)

Commentaires et avis

signaler à un administrateur
Commentaire de Nicolas___ le 12/08/2008 13:36:00

Vous avez tous découvert en même temps le tuto sur le sdz ou quoi !

Ou mieux de faire une n-ième source "apprendre la SDL en c\c++" , pourquoi pas une source
" je perseverse dans la sdl et je fais une vrai appli " ...

Dommage

signaler à un administrateur
Commentaire de medACK le 12/08/2008 13:56:19

je vois que t'es pas fun, et que tub n'as pas lut mon commentaire, chere NICOLAS sache qu'il y'as toujours un débutant qui veut apprendre quelque chose, et moi je suis là que pour aider, faut que tu sois ainsi NICOLAS, et puis sur les vrai application t'inquiette je te donnerai une qu'on je l'orai finis.

signaler à un administrateur
Commentaire de Nicolas___ le 12/08/2008 14:55:46

le problème c'est que des sources de débutants , il y en a beaucoup ...
Qu'est ce qui ce passe quand il y a trop de qqch ? On finit toujours par noyer l'info ...

Enfin tu as certainement raison ... au fait non mais tant pis ^^

signaler à un administrateur
Commentaire de miky_mike le 12/08/2008 20:20:57

Ce qui me tue la dedans c'est que vous apprenez quelque chose via le sdz et que vous faite style je connais et je vous l'apprend....


signaler à un administrateur
Commentaire de medACK le 12/08/2008 20:51:43

ohla, je voie que MIKY n'apprécis pas, mais tu c'est quois, tu ferai mieux d'aller travailler ton C,je viens de voir ta fiche, apparemment t'es là que pour critiquer, mais ça fais rien je te conseille d'aller voir les sujets sur les réseaux neurones, et puis je pensse que le code ferra plus de joie que de paine, peace.

signaler à un administrateur
Commentaire de miky_mike le 12/08/2008 21:04:47

Je t'ai choqué ?
En même temps si tu te sent visé j'en peux rien moi ...


mon c, ahhh ben tu veux qu'on en parle ?
j'ai eu 18/20 a mon exam de fin d'année supérieur ennnn c'est dommage tu ne sais pas me charrier dessus.

Si tu n'aime pas la critique pourquoi met tu alors une source ici ? pour faire style alors ?

De plus, on a tous la même pensé de ta source, on ne critique pas ton code mais plutôt la pop programmation.

Sinon pour être quand même constructif, c'est bien commenté.

signaler à un administrateur
Commentaire de hakim0 le 12/08/2008 21:13:43

SAlut,
je crois que le code est de niveaux debutant, car tu fait rien d'aficher les image avec DSL!
ou sont les class d'enemeie est et...
mais bon continuation.

signaler à un administrateur
Commentaire de medACK le 12/08/2008 21:33:14

Salut,
MIKY t'inquiette j'ai que des bonnes notes en programmtion, et je m'endoute fort que vos examens sont aussi dur que les notre, et oui j'ai des amis branché automatique ....., mais merci pour tes commentaires.
HAkimo il y'a juste un tout petit commentaire à coté de la capture d'ecran qui explique pourquois le programme n'etulise pas se que tu demande, si tu veut un qui utilise "classe, collision" t'as qu'a regarder mon premier code source, à+.

signaler à un administrateur
Commentaire de Matt67 le 13/08/2008 06:53:16

Bonjour,

Je viens de lire vos commentaires. Une chose est sûre, vous n'êtes pas les champions du monde de l'orthographe...

Matt

signaler à un administrateur
Commentaire de medACK le 13/08/2008 11:36:06

chère Matt,
tu sais que quand on programme on fais pas tros attention au commentaires, et pour les réponses c'est des petites négligences, mais tu as raison, je ferai plus attention la prochaine fois.

j'espère qu'il y en a pas dans ceci!.

signaler à un administrateur
Commentaire de omnia le 13/08/2008 20:57:54

Salut,

        c'est sympa que tu postes des sources (ce qui n'est pas le cas de tout le monde), par contre je pense qu'il serait plus intéressant au lieu de poster un grand nombre de source sur la SDL (ce que je vois se profiler..), serait un bon gros tutoriel.

personnellement je n'y connais rien en  SDL (ce n'est pas pour autant que je ne testerai pas :p).

pour ce qui est de critiques je dirais qu'ici nous somme dans une communauté pour apprendre et faire partager nos sources (sans pour autant passé dans l'excès des sources redondantes), et ce palabrer autour de notes d'examens qui ne reflètent rien, sinon la pseudo réussite de celui ci et aucunement l'exploitation d'un langage dans un contexte d'exploitation réel.

Ce que vous apprenez à l'école correspond souvent à des bases solides mais bien malheureusement est très loin de la réalité.

bonne continuation et bon codage à tous :)

signaler à un administrateur
Commentaire de medACK le 13/08/2008 23:27:46

bonsoir OMNIA,
merci pour le commentaire et ton soutien.
Apropos de poster des tutos, j'avous que je n'ai pas pensé car moi aussi je débutte.
j'en pensré à faire.  

signaler à un administrateur
Commentaire de Alucards le 14/08/2008 16:16:00

Bonjour faut bien commencer par quelque chose un jour ou l'autre. Continue comme ça. Un petit bémol :p Pourquoi ne pas créer une seule fonction LoadImage() qui prendrait en premier paramètre le nom de l'image à charger et en 2eme paramètre la couleur de transparence alpha a supprimer ?

SDL_Surface *load_image2( std::string filename, SDL_color Transparence)

Bonne continuation

signaler à un administrateur
Commentaire de medACK le 14/08/2008 17:00:03

Salut Alucards,
tres bonne remarque, je te remercie, je vais l'optimiser.
bonne continuation à toi aussi.

signaler à un administrateur
Commentaire de Kypper_667 le 14/08/2008 18:28:51 10/10

Très bien ! Ca vaut un 10/10 :D

signaler à un administrateur
Commentaire de medACK le 15/08/2008 12:41:53

Merci "Kypper-667".
J'ai besoin de l'aide pour faire le "Scrolling", j'ai utilisé plusieurs approches mais ça marche pas à 100%, à chaque fois je trouve un problème.
Si quelqu'un pourrai m'aider ...!!!.

signaler à un administrateur
Commentaire de prakti le 01/09/2008 22:13:07

Salut tout le monde,

J'ai voulu voir comment marche le jeu, que MEDACK a poste ici, mais j'arrive meme pas ä compiler le programme SansNom1.cpp.
Tout ce que je recois c :

SansNom1.cpp:2:21: error: SDL/SDL.h: Datei oder Verzeichnis nicht gefunden
SansNom1.cpp:3:27: error: SDL/SDL_image.h: Datei oder Verzeichnis nicht gefunden
SansNom1.cpp:20: error: expected constructor, destructor, or type conversion before &#8216;*&#8217; token
SansNom1.cpp:21: error: expected constructor, destructor, or type conversion before &#8216;*&#8217; token
SansNom1.cpp:22: error: expected constructor, destructor, or type conversion before &#8216;*&#8217; token
SansNom1.cpp:23: error: expected constructor, destructor, or type conversion before &#8216;*&#8217; token
SansNom1.cpp:26: error: &#8216;SDL_Event&#8217; does not name a type
SansNom1.cpp:39: error: &#8216;SDL_Rect&#8217; does not name a type
SansNom1.cpp:42: error: &#8216;SDL_Rect&#8217; does not name a type
SansNom1.cpp:45: error: expected constructor, destructor, or type conversion before &#8216;*&#8217; token

J'ai essaye les 2 commando suivants : "g++ - SansNom1.cpp" ou bien "gcc - SansNom1.cpp" mais c toujours le meme resultat.
Est ce que qq aurrait il une idee de ce ca peut etre ?

merci pour vos reponses en avance

signaler à un administrateur
Commentaire de Nicolas___ le 01/09/2008 22:50:57

SansNom1.cpp:2:21: error: SDL/SDL.h: Datei oder Verzeichnis nicht gefunden
SansNom1.cpp:3:27: error: SDL/SDL_image.h: Datei oder Verzeichnis nicht gefunden

tu ne possède pas la SDL !

signaler à un administrateur
Commentaire de prakti le 02/09/2008 11:15:22

Salut Nicolas & tout le monde,

Comment ca je ne posséde pas la SDL ? j'ai tout de même telecharge tout le Fichier ZIP que medAck a poste.
Dans ce Fichier Zip de medAck y a tous les Bibliothekes-SDL necessaires pour ce programme non ? Ou bien devrais je installer qch ?
Je ne m'y connais pas du tout en SDL. Veillez m'aider S.V.P

merci

signaler à un administrateur
Commentaire de Nicolas___ le 02/09/2008 13:49:23

il n'a mis que les dll , donc si tu veux compiler , il te faut les .h

Il ne les a pas mis !

Si tu es sous dev cpp , tu sais telecharger la sdl en faisant outils->nouvelles versions/package , tu choisis devpack et tu prends dans la combobox SDL

sinon tu la telecharge à partir de http://www.libsdl.org/

signaler à un administrateur
Commentaire de medACK le 02/09/2008 21:36:46

Salut tout le monde,
PRAKTI les "dll" sont données pour ceux qui n'ont pas la SDL de voir le ".exe", pour la compilation du code source tu dois avoir la SDL installée pour le C++. ;)

signaler à un administrateur
Commentaire de Alucards le 03/09/2008 11:54:11 8/10

Salut, j'ai vu que tu as effectué la petite correction que je t'ai suggérée. =)

Un petit morceau de code ma fait lever un sourcil ^^ lol
Tu fais un SDL_Flip(screen) aprés ta fonction evenement_enemis() alors que dans celle-ci tu filp déjà l'écran. C'est une toute petite erreur. Avec SDL il faut Fliper l'ecran une seule et unique fois. Donc en gros enlève le de ta fonction evenement_enemis() voila =).





signaler à un administrateur
Commentaire de medACK le 03/09/2008 13:50:05

Ta complètement raison mon ami, je me demande à quoi je pensais en écrivant cella lol.

signaler à un administrateur
Commentaire de qqqaaqqq le 15/12/2008 18:56:23

bonjour a tous
je suis debutant et nouvau ici je souhaite vraiment aprendrea lire et ecrire les code source pouvé m'indiqué ou je dois aller car ici sa ma lair trop compliqué pour moi quine sait pas le lire je vous remrci les gars cest bien ce que vous faite .

Ajouter un commentaire



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,499 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é.