Bonsoir tout le monde,
J'aimerai avoir des avis/critiques constructifs sur mon début de code en C.
Toute remarque est bonne à prendre.
La partie de code que je vais vous présenter s'occupe d'aller chercher des informations concernant une raquette. ( dans un pong 2D ). Tel que sa couleur, sa position au départ, ...
/!\ ATTENTION /!\
Ce bout de code est fait pour un jeu de pong 2d pour avec la SDL2. Mais au moment ou j'ai codé cette partie, je ne l'avais pas installé, et d'ailleurs je ne l'ai toujours pas... Certaines partie du code vont changer ou partir. Notamment les variables red, green, blue, seront remplacé bien entendu par une variable du type SDL_Color, ect...
Les fonctions sont de types void, mais là aussi quand j'implémenterai la SDL2, je modifierai pour qu'elles puissent renvoyer un pointeur sur la structure qui va bien. Ex : static void get_color(...); deviendra static SDL_Color *get_color(...);
Pareil pour la fonction qui s'occupe de récupérer les touches pour contrôler la raquette, n'ayant pas encore les SDLK_z ect... Les conditions restent vide.
Je vous pries donc de m'excuser pour ce petit désagrément. Et j'espère avoir un retour, positif, ou négatif sur mon code !
/!\ ATTENTION /!\
main.c :
options_racquet.h :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 #include <stdio.h> #include <string.h> #include "options_racquet.h" int main(void) { get_racquet_s_options(PATH_OPTIONS_RACQUET_ONE); return 0; }
options_racquet.c :
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 #ifndef OPTIONS_RACQUET_H_INCLUDED #define OPTIONS_RACQUET_H_INCLUDED #define PATH_OPTIONS_RACQUET_ONE "racquet_one.opt" #define DEC 10 #define RED "red=" #define GREEN "green=" #define BLUE "blue=" #define OPACITY "opacity=" #define X "x=" #define Y "y=" #define CTRL_ONE "ctrl_one=" #define CTRL_TWO "ctrl_two=" void get_racquet_s_options(const char options_file[]); #endif // OPTIONS_RACQUET_H_INCLUDED
Voici à quoi ressemble le fichier racquet_one.opt :
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133 #include "options_racquet.h" #include <stdio.h> #include <string.h> static void get_color(FILE *options); static void get_pos(FILE *options); static void get_command(FILE *options); void get_racquet_s_options(const char options_file[]) { char buffer[50]; FILE *options = NULL; options = fopen(options_file, "r"); if(options == NULL) { fprintf(stderr, "Erreur d'ouverteur du fichier : %s", options_file); } else { do { fgets(buffer, sizeof(buffer), options); if(strstr(buffer, "#COLOR") != NULL) { get_color(options); } if(strstr(buffer, "#POSITION") != NULL) { get_pos(options); } if(strstr(buffer, "#COMMAND") != NULL) { get_command(options); } }while(strstr(buffer, "#END") == NULL); } fclose(options); } static void get_color(FILE *options) { char buffer[50]; char *pBuffer = NULL; long int red = 0; long int green = 0; long int blue = 0; long int opacity = 0; do { fgets(buffer, sizeof(buffer), options); if((pBuffer = strstr(buffer, RED)) != NULL) { red = strtol(pBuffer + strlen(RED), NULL, DEC); } if((pBuffer = strstr(buffer, GREEN)) != NULL) { green = strtol(pBuffer + strlen(GREEN), NULL, DEC); } if((pBuffer = strstr(buffer, BLUE)) != NULL) { blue = strtol(pBuffer + strlen(BLUE), NULL, DEC); } if((pBuffer = strstr(buffer, OPACITY)) != NULL) { opacity = strtol(pBuffer + strlen(OPACITY), NULL, DEC); } }while(strstr(buffer, "#END_COLOR") == NULL); } static void get_pos(FILE *options) { char buffer[50]; char *pBuffer = NULL; long int x = 0; long int y = 0; do { fgets(buffer, sizeof(buffer), options); if((pBuffer = strstr(buffer, X)) != NULL) { x = strtol(pBuffer + strlen(X), NULL, DEC); } if((pBuffer = strstr(buffer, Y)) != NULL) { y = strtol(pBuffer + strlen(Y), NULL, DEC); } }while(strstr(buffer, "#END_POSITION") == NULL); } static void get_command(FILE *options) { char buffer[50]; char *pBuffer = NULL; do { fgets(buffer, sizeof(buffer), options); if((pBuffer = strstr(buffer, CTRL_ONE)) != NULL) { } if((pBuffer = strstr(buffer, CTRL_TWO)) != NULL) { } }while(strstr(buffer, "#END_COMMAND") == NULL); }
Je vous remercie d'avoir prit le temps de lire ce post, et de peut-être y avoir répondu en me donnant votre avis.
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 #RACQUET_ONE #COLOR red=100 green=255 blue=15 opacity=255 #END_COLOR #POSITION x=5 y=225 #END_POSITION #COMMAND ctrl_one=SDLK_z ctrl_two=SDLK_s #END_COMMAND #END
Je vous souhaite une bonne journée/soirée.
Merci,
Cordialement.
Partager