Partage
  • Partager sur Facebook
  • Partager sur Twitter

[SDL] probleme avec sokoban

impossible de compiler l'editeur

Sujet résolu
    26 avril 2006 à 22:20:39

    Bonjour chers Zer0s,

    je n'arrive pas à compiler l'editeur de niveaux ecrit par M@teo. :colere2:

    voici le code en question:
    /*
    editeur.c
    ---------

    Par mateo21, pour Le Site du Zér0 (www.siteduzero.com)

    Rôle : gestion de l'éditeur de niveaux.
    */


    #include <stdlib.h>
    #include <stdio.h>
    #include <SDL/SDL.h>
    #include <SDL/SDL_image.h>

    #include "constantes.h"
    #include "editeur.h"
    #include "fichiers.h"

    void editeur(SDL_Surface* ecran)
    {
        SDL_Surface *mur = NULL, *caisse = NULL, *objectif = NULL, *mario = NULL;
        SDL_Rect position;
        SDL_Event event;

        int continuer = 1, clicGaucheEnCours = 0, clicDroitEnCours = 0;
        int objetActuel = MUR, i = 0, j = 0;
        int carte[NB_BLOCS_LARGEUR][NB_BLOCS_HAUTEUR] = {0};

        // Chargement des objets et du niveau
        mur = IMG_Load("mur.jpg");
        caisse = IMG_Load("caisse.jpg");
        objectif = IMG_Load("objectif.png");
        mario = IMG_Load("mario_bas.gif");

        if (!chargerNiveau(carte))
            exit(EXIT_FAILURE);

        // Boucle infinie de l'éditeur
        while (continuer)
        {
            SDL_WaitEvent(&event);
            switch(event.type)
            {
                case SDL_QUIT:
                    continuer = 0;
                    break;
                case SDL_MOUSEBUTTONDOWN:
                    if (event.button.button == SDL_BUTTON_LEFT)
                    {
                        // On met l'objet actuellement choisi (mur, caisse...) à l'endroit du clic
                        carte[event.button.x / TAILLE_BLOC][event.button.y / TAILLE_BLOC] = objetActuel;
                        clicGaucheEnCours = 1; // On active un booléen pour retenir qu'un bouton est enfoncé
                    }
                    else if (event.button.button == SDL_BUTTON_RIGHT) // Le clic droit sert à effacer
                    {
                        carte[event.button.x / TAILLE_BLOC][event.button.y /TAILLE_BLOC] = VIDE;
                        clicDroitEnCours = 1;
                    }
                    break;
                case SDL_MOUSEBUTTONUP: // On désactive le booléen qui disait qu'un bouton était enfoncé
                    if (event.button.button == SDL_BUTTON_LEFT)
                        clicGaucheEnCours = 0;
                    else if (event.button.button == SDL_BUTTON_RIGHT)
                        clicDroitEnCours = 0;
                    break;
                case SDL_MOUSEMOTION:
                    if (clicGaucheEnCours) // Si on déplace la souris et que le bouton gauche de la souris est enfoncé
                    {
                        carte[event.motion.x / TAILLE_BLOC][event.motion.y / TAILLE_BLOC] = objetActuel;
                    }
                    else if (clicDroitEnCours) // Pareil pour le bouton droit de la souris
                    {
                        carte[event.motion.x / TAILLE_BLOC][event.motion.y / TAILLE_BLOC] = VIDE;
                    }
                    break;
                case SDL_KEYDOWN:
                    switch(event.key.keysym.sym)
                    {
                        case SDLK_ESCAPE:
                            continuer = 0;
                            break;
                        case SDLK_s:
                            sauvegarderNiveau(carte);
                            break;
                        case SDLK_c:
                            chargerNiveau(carte);
                            break;
                        case SDLK_KP1:
                            objetActuel = MUR;
                            break;
                        case SDLK_KP2:
                            objetActuel = CAISSE;
                            break;
                        case SDLK_KP3:
                            objetActuel = OBJECTIF;
                            break;
                        case SDLK_KP4:
                            objetActuel = MARIO;
                            break;
                    }
                    break;
            }

            // Effacement de l'écran
            SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));

            // Placement des objets à l'écran
            for (i = 0 ; i < NB_BLOCS_LARGEUR ; i++)
            {
                for (j = 0 ; j < NB_BLOCS_HAUTEUR ; j++)
                {
                    position.x = i * TAILLE_BLOC;
                    position.y = j * TAILLE_BLOC;

                    switch(carte[i][j])
                    {
                        case MUR:
                            SDL_BlitSurface(mur, NULL, ecran, &position);
                            break;
                        case CAISSE:
                            SDL_BlitSurface(caisse, NULL, ecran, &position);
                            break;
                        case OBJECTIF:
                            SDL_BlitSurface(objectif, NULL, ecran, &position);
                            break;
                        case MARIO:
                            SDL_BlitSurface(mario, NULL, ecran, &position);
                            break;
                    }
                }
            }

            // Mise à jour de l'écran
            SDL_Flip(ecran);
        }

        SDL_FreeSurface(mur);
        SDL_FreeSurface(caisse);
        SDL_FreeSurface(objectif);
        SDL_FreeSurface(mario);
    }


    et voici le log:
    /*
    Compilateur: Default compiler
    Building Makefile: "C:\Documents and Settings\nous\Mes documents\projet mickael\creations C\SDL\mario sokoban\Makefile.win"
    Exécution de make...
    make.exe -f "C:\Documents and Settings\nous\Mes documents\projet mickael\creations C\SDL\mario sokoban\Makefile.win" all
    gcc.exe -D__DEBUG__ -c editeur.c -o editeur.o -I"C:/Dev-Cpp/include" -g3

    editeur.c: In function `sauvegarderNiveau':
    editeur.c:20: error: syntax error before '{' token
    editeur.c:25: error: parameter `continuer' is initialized
    editeur.c:25: error: parameter `clicGaucheEnCours' is initialized
    editeur.c:25: error: parameter `clicDroitEnCours' is initialized
    editeur.c:26: error: parameter `objetActuel' is initialized
    editeur.c:26: error: parameter `i' is initialized
    editeur.c:26: error: parameter `j' is initialized
    editeur.c:27: error: parameter `carte' is initialized
    editeur.c:30: error: syntax error before "mur"

    make.exe: *** [editeur.o] Error 1

    Exécution terminée


    merci d'avance pour votre aide.
    • Partager sur Facebook
    • Partager sur Twitter
      27 avril 2006 à 15:55:44

      Tu ne les a pas initialiser c'est ce qui est marquer marioGauche is initializer
      un truc comme sa .

      Les a tu initialiser les déplacement de mario si non c'est surment la ton problème :)
      • Partager sur Facebook
      • Partager sur Twitter
        28 avril 2006 à 12:48:27

        j'ai trouvé l'erreur. :)
        j'avais oublié un point-virgule après le prototype de sauvegarderNiveau.

        Merci à alex1-1 d'avoir voulu m'aider.
        • Partager sur Facebook
        • Partager sur Twitter

        [SDL] probleme avec sokoban

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown