Bonjour,

J'essaie de créer un petit casse brique en c, et je manipule des

mais j'ai jamais fais ça avant, donc, c'est ça qui doit merder.

J'ai corriger tout les warning, mais quand je lance mon programme, il se ferme tout seul avec une erreur de windows du genre "le programme à cesser de fonctionner. Donc pas trop d'indication. Je pense que ça vient des mallocs mais pas sur

bon voici mon code

La fonction uptadePalet() est bien car ça marchait avant, ça vient soit de afficheBrique, de loadBrique ou du main

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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
 
 
#include <stdio.h>
#include <sdl.h>
#include <stdlib.h>
 
 
 
 
SDL_Rect updatePalet(SDL_Surface* screen, SDL_Surface* palet, SDL_Event event)
{
  //On actualise la position du palet
  SDL_Rect newPosition;
 
  newPosition.x = event.motion.x;
  newPosition.y = 450;
  SDL_BlitSurface(palet,NULL,screen,&newPosition);
 
  return newPosition; 
 
}
 
int*** loadBrique() //Charge les briques à partir d'un fichier
{
  int ***tabBrique;
 
  //On construit la tableau
  //Allocation dynamique
  tabBrique = malloc(sizeof(int)*110);
 
  *tabBrique[0][0] = 1;  //On chargera dans un fichier après
  *tabBrique[0][1] = 1;
  *tabBrique[0][2] = 1;
  *tabBrique[0][3] = 1;
  *tabBrique[0][4] = 1;
  *tabBrique[0][5] = 1;
  *tabBrique[0][6] = 1;
  *tabBrique[0][7] = 1;
  *tabBrique[0][8] = 1;
  *tabBrique[0][9] = 1; 
 
 
  return tabBrique;
}
 
 
void afficheBrique(int*** tabBrique, SDL_Surface* ecran, SDL_Surface* brique) //Affiche les brique a partir d'un tableau
{
  int i,j;
  SDL_Rect positionBrique;
 
  int TAILLE_BRIQUE = 31;
 
  for (i=1;i<=10;i++) //Les colonnes 
  {
    for (j=1;j<=10;j++) //Les lignes
	 {
	   if (*tabBrique[0][j] == 1) //Si on a une brique
		{
		  positionBrique.x = j * TAILLE_BRIQUE;
		  positionBrique.y = 0;
		  SDL_BlitSurface(brique,NULL,ecran,&positionBrique);
		}
	 }
 
  }
}
 
 
 
 
int main(int argc, char* argv[])
{
  SDL_Surface* ecran;
  ecran = SDL_SetVideoMode(640,480,32,SDL_DOUBLEBUF | SDL_HWSURFACE);
  SDL_Event event;
  SDL_WM_SetCaption("Mine Breaker",NULL);
 
  SDL_ShowCursor(0);
 
  SDL_Surface* palet = SDL_LoadBMP("palet.bmp");
  SDL_Rect positionPalet;
  SDL_Surface* brique = SDL_LoadBMP("brique.bmp");
 
  int ***tabBrique;
  tabBrique = malloc(sizeof(int)*110); 
  tabBrique = loadBrique();
 
  //Boucle des évenements
 
  while (1)
  {
 
	 SDL_PollEvent(&event);
 
	 SDL_FillRect(ecran,NULL,SDL_MapRGB(ecran->format,0,0,0)); //Efface l'écran
	 afficheBrique(tabBrique,ecran,brique);
 
 
	 if (event.type == SDL_QUIT) 
	 {
	   break;
	 }
	 if (event.type == SDL_MOUSEMOTION)
	 {
	   positionPalet = updatePalet(ecran,palet,event);
	 }
 
	 SDL_Flip(ecran);
 
  }
 
  SDL_FreeSurface(ecran);
  SDL_Quit();
 
  return 0;
 
}
Bonne lecture et merci d'avance