Bonjour à tous. J'essaye de programmer un editeur de niveaux pour mon jeu.
Quand l'utilisateur clique dans la fenetre, il ajoute 1 ou 2 au tableau carte à l'endroit correspondant. Ensuite, il boucle pour afficher tout ce qui à été jouté sur le terrain. Mais moi, rien ne se passe. Voici mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>
#include "lvledit.h"
#include "affichage.h"
#include "fichiers.h"
 
void editeur(SDL_Surface* ecran)
{
    //Creation des variables
    SDL_Surface *arbre = NULL, *rocher = NULL;
    SDL_Surface *imageDeFond = NULL;
    SDL_Rect position;
    SDL_Event event;
    int carte[48][48] = {0};
    int continuer=1;
    int i = 0;
    int j = 0;
    int currentobjet = 1; //1=rocher 2=arbre 0=vide
 
    // Chargement des objets et du niveau
    arbre = SDL_LoadBMP("arbre.bmp");
    rocher = SDL_LoadBMP("rocher.bmp");   
 
    //affichage du fond
    imageDeFond=make_background(ecran);
    //Boucle principale
    while(continuer) {
        switch(event.type) {
            case SDL_KEYDOWN:
                switch(event.key.keysym.sym) {
                    case SDLK_s:
                        //Ici on sauvgarde la map
                        printf("Je sauvgarde la map");
                        sauvcarte(carte);
                        break;
                    case SDLK_a:
                        //Ici on quitte sans sauvgarder
                        exit(EXIT_FAILURE);
                        break;
                    case SDLK_KP1:
                        currentobjet=1;
                        break;    
                    case SDLK_KP2:
                        currentobjet=2;
                        break;
                    default:break;
                }
                break;
 
            case SDL_MOUSEBUTTONDOWN:
                if (event.button.button == SDL_BUTTON_LEFT) { //Bouton gauche on
                    //ajoute le brush courant
                    printf("Je clique avec le bouton gauche");
                    carte[event.button.x / 20][event.button.y / 20] = currentobjet;
 
                }
                else if (event.button.button == SDL_BUTTON_RIGHT) { //On supprim
                    //-me le brush selectionner
                    printf("Je clique avec le bouton droit");
                    carte[event.button.x / 20][event.button.y / 20] = 0;
                }
                break;
            default:break;
        }
        for (i = 0 ; i < 48 ; i++)
        {
            for (j = 0 ; j < 48 ; j++)
            {
                position.x = i * 20;
                position.y = j * 20;
                switch(carte[i][j])
                {
                    case 1:
                        SDL_BlitSurface(rocher, NULL, ecran, &position);
                        break;
                    case 2:
                        SDL_BlitSurface(arbre, NULL, ecran, &position);
                        break;
                    default:break;
                }
            }
        }
        // Mise à jour de l'écran
        SDL_Flip(ecran);
    }
    //Liberation des images
    SDL_FreeSurface(imageDeFond);
    SDL_FreeSurface(arbre);
    SDL_FreeSurface(rocher);
}
Avez vous une idée pour résoudre se problème ?