Bonjour à tous !
Je tente actuellement de créer un mini jeu vidéo en 3d à l'aide de la librairie ogre3d.
Ce jeu est un minecraft-like, cela implique donc que le terrain est constitué de blocs.
Mais, je peine actuellement sur l'algorithme d'affichage des blocs.
En effet, j'enregistre actuellement le terrain dans des tableaux en 3 dimensions et, le terrain est divisé en 9 partie(chunk) contenant chacun un tableau de string de 10*32*10 (x,y,z) blocs. 32 étant la hauteur maximale du terrain pour le moment.
Mon algorithme considère que un bloc n'est pas visible si au dessus, en dessous, à droite, à gauche, devant et derrière lui il y a un bloc.
C'est extrêmement facile de faire une vérification à l'intérieur de chaque chunk mais, lorsque je me trouve sur les bords d'un des chunk il faut que je trouve celui à coté pour vérifier si le bloc à coté de celui-ci est vide ou non.
J'ai donc un terrain constitué de cette façon :
0 0 0
0 0 0
0 0 0
Et pour éviter que des blocks s'affiche inutilement sur les bords du terrain en dessous des blocs visible, j'ai virtuellement entouré le terrain avec des chunks plein de cette façon :
v v v
v 0 0 0 v
v 0 0 0 v
v 0 0 0 v
v v v
Avec chaque chunk contenant un tableau de pointeurs vers les quatre chunk l'entourant.
Mon problème survient lorsque je tente d'accéder pour la première fois à ce chunk virtuel.
En débogage, j'obtiens l'erreur suivante :
received signal sigsegv segmentation fault
L'erreur survient lorsque a = 6079 ou 6080.
À ce moment j'appel une méthode de la classe chunk pour tester ce qui ne vas pas.
Toujours du côté débogage, l'érreur survient sur la méthode checkX(x=10, y=0, z=0) avec comme local variable : ch = 0x5.
J'espère avoir bien expliqué...
Voici le code :
Main.cpp :
planet.cpp :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
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
Chunk.h :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
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
Chunk.cpp :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
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
PS : dans la méthode isVisible(4 arguments) le code plante pour la fonction getX(). De plus cette méthode est juste pour les tests !
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
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
119
120
121
122
123
124
J'espère que vous comprendrez mon code malgré le manque de commentaires.
Si vous avez des question n'hésitez pas !
Merci d'avance pour votre aide !

 

 
		
		 
         
 


 résoudre program received signal sigsegv segmentation fault
 résoudre program received signal sigsegv segmentation fault
				 Répondre avec citation
  Répondre avec citation 
			
			


 
			 
   
 


Partager