CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

J´aide les personne en C/C++

clad87
clad87
Niveau 5
12 février 2005 à 22:02:07

Erf désolé, mon MSN: youlcdk@hotmail.com

jejej
jejej
Niveau 9
13 février 2005 à 12:38:24

Bonjour à tous , j´aurais besoin d´explication avec les headers/fichier sources

je m´explique , j´ai decide de continuer mon jeu du pingouin , mais lorsque je l´avais commence , je l´avais fait en un seul fichier . cpp . ..

la , comme ca commence a grossir ( houlala , 324 lignes ! ^^ ) , j´aimerais savoir coment le partager en plusieurs fichiers . il est relativement bien construit ( enfin , les focntions sont independantes quoi , j´ai une partie image , une partie son etc )
donc il serait facile a decouper , sije savais comment faire . ..

j´avais pense le mettre en . h , mais d´apres vos dires ( et les exemples de . h du repertoire include aussi ) les . h ne contiennent QUE es prototypes de fonction . ..

comment je pourrais faire svp ?
parceque sa serait cool de faire une partie affichage image , une autre texte , son , et seulement la boucle dans le main .

Giga-Nova
Giga-Nova
Niveau 9
13 février 2005 à 12:40:57

bah je vois le systeme d´appel:

un prog qui apelle : le sons, l´image , et l´anime,
exemple concret:

< début du prog>
j´apelle mon fichier . cpp sons
" " " " " " """ " """ " " " image
" " " " " " " " " " " " " " animation
< fin du prog>

jejej
jejej
Niveau 9
13 février 2005 à 12:42:32

j´appelle = #include " son.cpp" ?

Ptival
Ptival
Niveau 10
13 février 2005 à 13:49:23

jejej -> Bon alors ça va marcher comme ça :

Tu as différents headers contenant les prototypes des fonctions du *.cpp correspondant.
Si tu utilises un certain type, tu inclues dans ce *.h les *.h dont tu as besoin ( par exemple SDL.h pour faire un SDL_Rect...)

Ensuite tu crées les *.cpp, au début tu inclues leur header, puis tu fais le reste comme tu veux.

Dans les headers que tu crées, comme tu dois inclure le header dans le cpp ou tu définis les fonctions, mais aussi dans le cpp où tu te sers des fonctions, si tu laisses le tout comme ça, le compilo va te sortir " multiple definition"...C´est pourquoi, dans les headers que tu crées, il faudra commencer par mettre :

  1. ifndef [Place_ici_un_nom_repère]
  2. define [Place_ici_le_même_nom]

et à la fin du header :

  1. endif

Le nom repère souvent on met _nomdufichier_h_ ( enfin c ce qu´on m´a dit et je fais comme ça, après je sais pas si c´est une convention ou une habitude)

Par exemple :

  1. ifndef _main_h_
  2. define _main_h_
  1. endif

Donc en gros imagine que tu aies un main qui ait besoin d´une fonction Dire_Salut(), ça ferait un truc dans ce genre :

::: main.h :::

  1. ifndef _main_h_
  2. define _main_h_

int main(int argc, char* argv);

  1. endif

::: main.cpp :::

  1. include " main.h"
  2. include " Dire_Salut.h"

int main(int argc, char* argv)
{
Dire_Salut();
return 0;
}

::: Dire_Salut.h :::

  1. ifndef _Dire_Salut_h
  2. define _Dire_Salut_h

void Dire_Salut();

  1. endif

::: Dire_Salut.cpp :::

  1. include " Dire_Salut.h"
  2. include < stdio.h>

void Dire_Salut()
{
printf("%s\n", Salut);
}

Ca donnerait un truc comme ça...Ensuite, si tu dois modifier des variables dans une fonction incluse, alors tu ne pourras pas la modifier comme si la fonction était dans le même fichier ( et alors, elle connaitrait cette variable), là, tu devras lui faire un pointeur vers la variable à changer en argument.

Perdu_de_linfo
Perdu_de_linfo
Niveau 9
13 février 2005 à 13:51:37

Salut,

voila, je suis débutant en c++ ( commencé hier^^), donc je m´excuse si mes questions ne sont ni très intéligentes ni très bien formulées.
Pour commencer, le sdl.
Jai effectué linstallation du sdl comme dit sur ton tuto JeanYvesYves.
et lorsque je met ce code :

  1. include < SDL/SDL.h>

SDL_Surface* screen; // l´ecran principale
SDL_Surface* firstscreen; / / tampon temporaire
SDL_Event event; // gestion d´evenement

void init_SDL() // initialise SDL
{
SDL_Init(SDL_INIT_VIDEO); // preapare SDL
screen = SDL_SetVideoMode(1024, 768, 32,SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_FULLSCREEN); / / mode graphique
/ /SDL_ShowCursor(0); eneleve la souris
}

void waitkey() // attend qu´on appuie sur RETURN
{
while(1) // boucle
{
while(SDL_PollEvent(&)) // aquisition d´evenement
{
if ( event.type == SDL_KEYDOWN) / / on appuie sur une touche ?
{
if ( event.key.keysym.sym == SDLK_RETURN) return; / / c´est " RETURN" ?
}
}
}
}

int main(int argc , char **argv)
{
SDL_Rect rect1; // structure rectangle
init_SDL(); // initialise ( plus haut)
firstscreen = SDL_LoadBMP("image.bmp"); // charge l´image
/ / on dessine
rect1.x = 0;
rect1.y = 0;
rect1.w = 1024; // défini le rectangle
rect1.h = 768;

SDL_BlitSurface(firstscreen,NULL,screen,&1); /
/ colle l´image sur l´écran, NULL car on affiche TOUTE l´image
SDL_Flip(screen); // affiche la prochaine frame
waitkey(); // attends qu´on appuie sur Return ( plus haut)
SDL_ShowCursor(1); // reactive la souris
SDL_Quit(); // quitte SDL
return 0; // quitte le programme
}

Ben, ca plante. L´écran est noir ( pourtant l´image est dans le même répertoire que le programme) et ca reste blocqué.
je suis obligé de faire ctr+alt+supp et fermer le programme.

S´il était mal installé, ne devrais-je pas avoir une erreur au moment de la compilation?

jejej
jejej
Niveau 9
13 février 2005 à 15:05:07

SDL_SetVideoMode(1024, 768, 32,SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_FULLSCREEN);

peut etre que ca vient de la , perso j´ai remarqué que mon ordi ne supportait ni le mode 32 bbp , ni le fullscreen . ..

essaye de changer certaines valeurs peut etre , tu pourrais mettre ( 800,600,0 / * si on met zero , SDL cherche la valeur la plus adapteee je crois , sinon essaye 16 ? */ | SDL_SWSURFACE |SDL_DOUBLEBUF | SDL_NOFRAME ) ;

sinon bah . .. c´est pas normal ^^

Perdu_de_linfo
Perdu_de_linfo
Niveau 9
13 février 2005 à 15:08:56

Nan, bah ca marche toujour pas :(

jejej
jejej
Niveau 9
13 février 2005 à 15:09:03

par contre , quand tu dis que ca reste bloque , c´est meme lorsque tu appuies sur RETURN ? ( == entree , j´ai mis du temps a trouver ^^ )
parceque , ce code ci ne " gere" pas l´appuie sur altF4 , alttab ou escape . ..

jejej
jejej
Niveau 9
13 février 2005 à 15:21:05

Ptival : merci beaucoup , j´essaye de suite :)

jejej
jejej
Niveau 9
13 février 2005 à 15:29:02

Le coup des multiples definitions of . .. c´est si on inclut SDL dans main.cpp et qu´on l´inclut aussi dans Affichage.cpp c´est ca ?
si oui , pas besoin des #ifndef chez moi , parceque mon but est d´avoir un seul fichier dedie a l´affichage , un autre au son etc . ..

mais je presume que ca pourrait etre utile quand meme , lors d´un projet plus gros , d´avoir plusieurs sources dediees a l´affichage . ..
alors j´ai quand meme essaye le coup des #define , mais ca marche pas :

  1. ifndef _son_h_
  2. define _son_h_

il me dit " unterminated #ifndef , pourtant je ne crois pas qu´il faille mettre quoi que ce soit de plus ?
merci

dnob700
dnob700
Niveau 10
13 février 2005 à 15:54:38

est ce qu´en C++ avec iostream on peut effacer l´écran ( la console je veut dire) sans utiliser un system("CLS") c´est à dire juste avec les classe de iostream ( cout.clear() ne fait pas ça apparement).

et aussi, est-il possible de déplacer le curseur à une ligne et une colonne choisis arbitrairement ?

tant que j´y suis, peut-on changer a couleurs de la sortie ? et enfin comment peut-on remplacer le system("pause") par une commande c/c++ ( donc portable) qui se débloque réellement à l´appuie de n´importe quelle touch et pas juste de entrée.

merci d´avance pour vos réponse.

jejej
jejej
Niveau 9
13 février 2005 à 15:55:34

arg , j´ai parle trop vite , j´ai besoin des ces #define . ..

en effet , j´ai une fonction de SDL_TTF qui se sert de SDL_COLOR . ..

Donc , comment je peux faire pour inclure SDL.h dans mon texte.cpp , sans avoir de multiple definitons ? et sinon , ok pour les headers , mais pour les variables ?

parceque , j´ai ma surface d´affichage déclarée ainsi dans mon main.cpp :
SDL_Surface *Affichage;

mais , je m´en sert d´en ma fonction d´ecriture de texte , mise dans texte.cpp . .. un conseil ?
:merci:

Perdu_de_linfo
Perdu_de_linfo
Niveau 9
13 février 2005 à 16:13:49

Merci jeje, mais j´ai tout essayé, y compris le enter... rien à faire. Il me met " le programme ne répond pas" quand je veu le fermer...

NoPseudonym
NoPseudonym
Niveau 1
13 février 2005 à 16:47:58

Ou trouver un tutorial complet de A à Z pour programmer en C et C++

XyTiX
XyTiX
Niveau 8
13 février 2005 à 17:13:39

perdu_de_linfo => ca ressemble à une boucle infini ton problème...

nopseudonym => lis un peu partout sur ce topic tu trouveras tout seul. Si tu n´as pas le courage de faire deja ca, laisse tomber.

Perdu_de_linfo
Perdu_de_linfo
Niveau 9
13 février 2005 à 17:37:42

C´est vrai que ca y ressemble, mais la je suis pas trop apte à trouver l´erreur... Je n´ai fais qun bête copier-coller...
Pouriez vous m´expliquer ce que veut dire le " 1" comme argument dans la premier boucle?

et la deuxieme?
while(SDL_PollEvent(&)) // aquisition d´evenement

?
Merci d´avance :)

dnob700
dnob700
Niveau 10
13 février 2005 à 17:49:40

normallement pour que le programme se ance tu doit appuyer une fois sur entrée, puis une deuxième fois pour le quitter.

le 1 ça veut duste dire que la boucle ne s´arrète jamais.

mais normallement, y´a pas une fonction waitkey() que tu aurait du copier coller aussi ?

je te conseilel de faire les autre tuto avant, plutot que de comencer directement par la SDL.

ça ne sers à rien, car tu ne comprend pas ce que tu fait, et tu ne pourra donc rien faire d´autre que du copier coller, ce qui ne vat pas t´apprendre grand chose.
aprend d´abord le C++.

Perdu_de_linfo
Perdu_de_linfo
Niveau 9
13 février 2005 à 18:06:45

1. La base du C++
2. SDL : programmation graphique 2D

J´ai pas sauté d´étape, le sdl c´est bien le second chapitre :)
Sinon le code donné par jeanyvesyves est la:
http://perso.numericable.fr/~fvirtman/info/tuto/2_1_01_image.cpp
Le copier coller, je trouve que c´est le meilleur moyen d´apprendre, ca me permet de voir le résultat :)
merci++

dnob700
dnob700
Niveau 10
13 février 2005 à 18:35:28

ah oui, le copier coller du forum est trop moche, ça m´a induit en erreur.

normallement le code marche t´as peut-être un problème avec la SDL.

je ne sais pas si elle utilise DX ou oGL, mais tu devrait vérifier la version des driver de ta carte graphique peut-être.

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment