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:
Avez vous une idée pour résoudre se problème ?
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); }
Partager