Bonjour,
Je réalise un projet en OpenGL / C pour la réalisation d'un morpion.
Pour commencer sur de bonne base j'ai voulu déclaré mes variables qui seront utilisées dans plusieurs fichiers .c dans un .h.
Je suis en présence d'un problème de redondance de déclarations pourtant j'ai bien encadré mes fichiers .h du IFNDEF.
multiple definition of `ex' par exemple.
Par ailleurs si vous avez des remarques qui me permettraient d'avoir une meilleur structure ou autres je suis preneur.
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 #ifndef _EXTERN_ #define _EXTERN_ // POSITION DE LA FENETRE #define POS_FENETRE_X 100 #define POS_FENETRE_Y 100 // TAILLE DE LA FENETRE #define TAILLE_FENETRE_X 500 #define TAILLE_FENETRE_Y 500 // CAMERA # define CAM_ANGLE 120 # define CAM_FEAR 20 # define CAM_NEAR 1 // TYPE BOOLEAN typedef enum { false, true } bool; // TYPE JOUEUR typedef struct Joueur joueur; struct Joueur{ int score; char pseudo[100]; bool gagnant; bool aJouer; }; extern joueur joueur1 = {0, "",false, false}; extern joueur joueur2 = {0, "",false, false}; // PARTI extern bool parti_fini = false; extern float angle=0.0; extern float ex=0.0; extern float ey=0.0; extern float ez=-4.0; extern float scalex = 5.0; extern float scaley = 5.0; extern float scalez = 5.0; #endif
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 #ifndef _JOUEUR /* L'écriture ici présente n'est pas universelle */ #define _JOUEUR /* Edit suite aux corrections des posts suivants -> */ /*Il est conseillé d'utiliser MON_FICHIER : pas de underscore au début */ /* Tu places ici les prototypes de tes fonctions */ #include "var.h" //joueur initJoueur(); #endif
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 #include <GL/glut.h> #include <stdio.h> #include <stdlib.h> #include <math.h> #include "morpion.h" #include "var.h" #include "joueur.h" void init(void) { glClearColor (0.2, 0.2, 0.2, 0); glEnable (GL_DEPTH_TEST); } void display(void) { glLoadIdentity (); gluLookAt (ex, ey, ez, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); glClear (GL_COLOR_BUFFER_BIT); glClear (GL_DEPTH_BUFFER_BIT); glRotatef(angle,0,1,0); glPushMatrix(); plateau(); glPopMatrix(); glutSwapBuffers(); } void mon_timer(int val) { angle=angle+1; if (angle==360) angle=0; glutTimerFunc(20,mon_timer,1); glutPostRedisplay(); } void keyboard(unsigned char key, int x, int y) { switch (key) { case 'x': ex=ex+0.05; break; case 'X': ex=ex-0.05; break; case 'y': ey=ey+0.05; break; case 'Y': ey=ey-0.05; break; case 'z': ez=ez+0.05; break; case 'Z': ez=ez-0.05; break; case 27: exit(0); break; } glutPostRedisplay(); } void reshape (int w, int h) // champs de vision { glViewport (0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode (GL_PROJECTION); glLoadIdentity (); gluPerspective(CAM_ANGLE,w/h,CAM_NEAR,CAM_FEAR); glMatrixMode (GL_MODELVIEW); } int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode (GLUT_DOUBLE|GLUT_RGB|GLUT_DEPTH); glutInitWindowSize (TAILLE_FENETRE_X, TAILLE_FENETRE_Y); glutInitWindowPosition (POS_FENETRE_X, POS_FENETRE_Y); glutCreateWindow (argv[0]); init (); glutTimerFunc(20, mon_timer, 1); glutDisplayFunc(display); glutReshapeFunc(reshape); glutKeyboardFunc(keyboard); glutMainLoop(); return 0; }
Partager