[C] allégé mon main.c
Es0pe
Messages postés
104
Statut
Membre
-
fiddy Messages postés 441 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 441 Date d'inscription Statut Contributeur Dernière intervention -
Bonsoir,
Voila m'étant lancé dans un petit projet je commence a avoir un main.c assez ... chargé. J'ai déjà mis mes variables dans un .h mais je voulais savoir comment mettre une partie de programme dans un autre fichier
exemple :
et je voudrais savoir aussi comment l'appelée
Merci
--
☻ ♪ ♫ I'm sorry, Mama. I never meant to hurt you. I never meant to make you cry, but tonight I'm cleanin' out my closet. ♫ ♪ ☻
Voila m'étant lancé dans un petit projet je commence a avoir un main.c assez ... chargé. J'ai déjà mis mes variables dans un .h mais je voulais savoir comment mettre une partie de programme dans un autre fichier
exemple :
#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>
#include "variable.h"
void pause();
int main(int argc, char *argv[])
{
mon programme
"j'appelle la partie qui est dans un autre fichier (une boucle while un peu longue par exemple"
et hop je continue le programme
}
et je voudrais savoir aussi comment l'appelée
Merci
--
☻ ♪ ♫ I'm sorry, Mama. I never meant to hurt you. I never meant to make you cry, but tonight I'm cleanin' out my closet. ♫ ♪ ☻
Configuration: Windows Vista Internet Explorer 7.0
7 réponses
-
Salut,
Les variables dans un .h, c'est pas super.
En fait, ce qu'il faut faire, ce sont des fonctions. Dès que tu peux encapsuler un savoir-faire, tu crées une fonction. Et cette fonction, tu l'appelles d'où tu veux, de ton main par exemple. Par la suite, tu peux être amené à faire plusieurs fichiers. Un fichier regroupera logiquement des fonctions ayant un rapport. Toutes les fonctions d'un fichier susceptible d'être appelées à partir d'un autre devront être recensées dans son .h, tous les autres pourront être utilisés en static.
Cdlt -
slt;
rien de plus simple;
tu met ton code dans un .h, exemple traitement.h
tu fait une sorte de fonction
void toto ()
{
ici tu met ton traitement
}
dans ton main.c tu fait
#include "traitement.h"
et quand tu appel ta fonction de traitement tu fais simplement:
toto ();
et voila! -
Ouaip j'avais déjà fait ça sauf qu'il me met une erreur :
6 C:\...\deplacement.h:4, from jeu.c In file included from deplacement.h:4, from jeu.c
-
il est bien bo le message d'erreur mais c'est plutôt le code qu'il faut!!
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Main.c:
#include <stdlib.h> #include <stdio.h> #include <SDL/SDL.h> #include "variable.h" #include "deplacement.h" void pause(); int main(int argc, char *argv[]) { int continuer = 1; position.x=400; position.y=0; SDL_Init(SDL_INIT_VIDEO); ecran = SDL_SetVideoMode(900, 600, 32, SDL_HWSURFACE | SDL_DOUBLEBUF); SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 0)); void deplacement () SDL_EnableKeyRepeat(10, 10); while (continuer) { SDL_WaitEvent(&event); switch(event.type) { case SDL_QUIT: continuer = 0; break; case SDL_KEYDOWN: switch(event.key.keysym.sym) { case SDLK_ESCAPE: continuer = 0; break; case SDLK_UP: if (positionarbre1.y <600 && positionarbre.y > 600 ) positionarbre1.y=positionarbre1.y+10, positionarbre.y=0; else if (positionarbre1.y>600 && positionarbre.y < 600) positionarbre1.y =0, positionarbre.y=positionarbre.y+10; else if (positionarbre.y >600 && positionarbre1.y>600) positionarbre1.y=0, positionarbre.y=0; else positionarbre1.y=positionarbre1.y+10, positionarbre.y=positionarbre.y+10,; break; case SDLK_LEFT: if (positionVoiture.x > 0) positionVoiture.x = positionVoiture.x - 10; else positionVoiture.x = 0; break; case SDLK_RIGHT: if (positionVoiture.x < 850) positionVoiture.x = positionVoiture.x+10; else positionVoiture.x = 850; break; } break; } SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255)); SDL_BlitSurface(arbre1, NULL, ecran, &positionarbre1); SDL_BlitSurface(arbre, NULL, ecran, &positionarbre); SDL_BlitSurface(voiture, NULL, ecran, &positionVoiture); SDL_BlitSurface(arbre, NULL, ecran, &positionarbre2); SDL_Flip(ecran); } SDL_FreeSurface(voiture); SDL_Quit(); return EXIT_SUCCESS; } void pause() { int continuer = 1; SDL_Event event; while (continuer) { SDL_WaitEvent(&event); switch(event.type) { case SDL_QUIT: continuer = 0; } } }
deplacement.h :
#include <stdlib.h> #include <stdio.h> #include <SDL/SDL.h> #include "variable.h" void deplacement() { voiture = SDL_LoadBMP("skieur.bmp"); SDL_SetColorKey(voiture, SDL_SRCCOLORKEY, SDL_MapRGB(voiture->format, 255, 255, 255)); positionVoiture.x=450; positionVoiture.y=500; SDL_BlitSurface(voiture, NULL, ecran, &positionVoiture); arbre1 = SDL_LoadBMP("arbre.bmp"); SDL_SetColorKey(arbre1, SDL_SRCCOLORKEY, SDL_MapRGB(arbre1->format, 255, 255, 255)); positionarbre1.x=250; positionarbre1.y=140; SDL_BlitSurface(arbre1, NULL, ecran, &positionarbre1); arbre = SDL_LoadBMP("arbre.bmp"); SDL_SetColorKey(arbre, SDL_SRCCOLORKEY, SDL_MapRGB(arbre->format, 255, 255, 255)); positionarbre.x=750; positionarbre.y=350; SDL_BlitSurface(arbre, NULL, ecran, &positionarbre); arbre2 = SDL_LoadBMP("arbre.bmp"); SDL_SetColorKey(arbre2, SDL_SRCCOLORKEY, SDL_MapRGB(arbre2->format, 255, 255, 255)); positionarbre2.x=700; positionarbre2.y=30; SDL_BlitSurface(arbre2, NULL, ecran, &positionarbre1); } -
Donc si je résume ... je laisse tout dans le main.c sauf que je fais des fonctions en plus :/ ... ça va vraiment l'allégé ? :s
-
Ce n'est pas ce que j'ai dit dans le poste 1.
J'ai dit, que tu fais plusieurs fichiers .c qui vont contenir des fonctions. Les fonctions seront des entités englobant un savoir-faire. Toutes les fonctions qui ont une utilité en dehors du fichier doivent être recensées dans leur .h (leur prototype, pas leur code).
Au final, tu peux avoir toto.c, toto.h (son en-tête associé), titi.c, titi.h et main.c.
Ton main appellera les différentes fonctions. Il sera donc allégé. Le main grosso modo est le chef d'orchestre de tes fonctions (si je puis dire ça ainsi ^^).
-
-
Pour compléter, un mini exemple :
-> traitement.h void GestionClavier(...); //declaration de la fonction -> traitement.cpp #include "traitement.h" void GestionClavier(...) //implémentation de la fonction { //code } -> main.cpp #include "traitement.h" void main() { GestionClavier(); //utilisation de la fonction }