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++

techslash
techslash
Niveau 8
24 juin 2004 à 21:01:08

J´ai fais un petit programme qui permet d´écrire 3 variables ( int , signed short int, signed short int) dont le contenu est capturé de stdin. Ça fonctionne merveilleusement bien ! Mais une nouvelle question vient de me frapper suite à ce succès. Qu´est-ce que l´entête d´un fichier exactement ? Je crois qu´il s´agit d´une zone qui contient des informatiosn relatives au fichier en question ( du genre, le format utilisé pour un vidéo, la durée, truc du genre) ? Est-ce que l´entête d´un fichier n´est rien de plus que des données inscrites et lisibles comme le reste du corps du document ?

Ruffi
Ruffi
Niveau 9
24 juin 2004 à 21:05:24

Un entete de fichier n´existe que théoriquement. En fait, c´est le programmeur qui a choisi d´ecrire ces informations qui lui permettent de manipuler le reste du fichier.

Elle est ecrite de la meme façon que le reste du fichier, elle n´est pas obligatoir.

techslash
techslash
Niveau 8
24 juin 2004 à 21:08:22

Merci beaucoup, c´est en plein la réponse que j´espérais :) .

techslash
techslash
Niveau 8
24 juin 2004 à 23:02:31

Hmmm j´ai peut-être un peu trop de questions ( ignorez moi si c´est le cas :p) ) mais est-ce que quelqu´un pourrait définir un template pour moi ? Je viens de lire l´explication dans le guide de Christian Casteyde ( http://casteyde.christian.free.fr/ ) et, franchement, je n´arrive pas à comprendre ni le fonctionnement ni le résultat donné par un de ces trucs. Peut être un exemple avec un petit programme ?

codejunqui
codejunqui
Niveau 8
25 juin 2004 à 00:53:24

ou va ton pour créé un jeu

grosbill7b
grosbill7b
Niveau 10
25 juin 2004 à 00:56:26

moi j´ai une kestion: pk je pige pas gd chose? arg... jm´en fous, je vous bat tous en bataille de pouce!

techslash
techslash
Niveau 8
25 juin 2004 à 01:08:01

Codejunqui > >
http://perso.wanadoo.fr/ck/Langages.htm

grosbill7b > >
Probablement parce que tu connais pas/peu la prog en C/C++

JeanYvesYves
JeanYvesYves
Niveau 10
25 juin 2004 à 01:23:40

TechSlash > comme te disait ruffi, l´entete d´un fichier, c´est toi qui la fait ou non.
--> tu envoies des données a la suite dans ton fichier.
dans l´exemple que je t´ai donné sur les joueurs, on " pourrait" par exemple définir l´entete comme étant uniquement la variable X, et le corps comme étant les joueurs avec leur vie, tout ça !

Un autre exemple : un fichier BMP, c´est une entete qui contient entre autre le X,Y, la profondeur de couleurs, toutes sortes de données inutiles, la palette éventuelle utilisée, etc etc
puis derriere l´entete, tu as les données brut de l´image.

Le template, c´est de la généricité.
petit exemple : imagine que tu aies une fonction " minimum" qui prend 2 nombres, et retourne le plus petit :
sans template, tu écris :

int minimum(int a,int b)
{
if ( a<b) return a;
else return b;
}

mais maintenant, disons que tu veux tester 2 " double" :

double minimum(double a,double b)
{
if ( a<b) return a;
else return b;
}

et la tu te dis " j´ai déja tapé ça, mais avec un autre type..."

alors au lieu de l´écrire 2 fois, tu écris :

template < class T> / / type générique appelé T
T minimum(T a,T b)
{
if ( a<b) return a;
else return b;
}

et le compilateur construira tout seul la fonction minimum avec un int ou un double selon les besoins qu´il a.

Et non seulement tu peux mettre des int et des double, mais aussi des types que tu définis toi meme : voir carrément une instance de classe !
la seule contrainte pour cet exemple, c´est que tu saches comment définir si a<b ou non : ce qui implique qu´il faut surcharger l´opérateur < dans la classe.
En gros, pour cet exemple, tu mets le type que tu veux, a condition que le " <" soit défini.

C´est quand meme du C++ bien avancé tout ça :)
Dans les STL du C++ ( structures de listes chainées etc, . ..) tout marche en template !
ainsi tu peux faire des listes de int, de double ou de pois-chiches pour peu que tu les aie définis...

Mais dans un 1er temps, si tu n´es pas trop familier avec les template, ne les utilise pas. Retiens juste que ça existe, et que ça sert si et seulement tu fais la MEME fonction, mais avec des types différents, pour éviter de réécrire plusieurs fois la meme chose...

viki6kornman
viki6kornman
Niveau 10
25 juin 2004 à 01:30:49

Logique...... :sarcastic:

techslash
techslash
Niveau 8
25 juin 2004 à 01:34:58

Merci bcp, ça clarifie les choses! À se demander pourquoi c´est pas écrit comme ça dans le cours :question: .

C´est en effet peut-être avancé pour quelqu´un comme moi ( j´apprends de façon la plus autodidacte possible en utilisant les ressouces que je trouve ici et là sur le web). Mais je passe point par point le cours de M. Casteyde et j´en suis pas mal là. Pas que je maîtrise parfaitement tout ce qui vient avant ( encore des concepts un peu flou ici et là qu´il faudrait que je mette en application pour bien comprendre...) mais j´y travaille tranquillement.

Je commence à me demander si j´ai vraiment besoin d´aller aussi loin par contre. Certains trucs commencent être des prises de tête ennuyantes... comme les templates ( qui sont plus clairs maintenant), les classes abstraites, les membres statiques dans les classes et même la surcharge que je n´ai pas encore pratiqué ( bien que, pour la surchage, je sais que c´est très utile et souvent nécessaire en POO).

M´enfin, je m´écarte du sujet du post, merci encore !

JeanYvesYves
JeanYvesYves
Niveau 10
25 juin 2004 à 01:45:59

j´ai lu le cours de Christian Casteyde, et il est vrai qu´il rentre souvent dans les détails, et parle de trucs dont 0.005 % des programmeurs se servent ( exemple, les variables " volatile", qui ne servent qu´en multithreading)

A mon avis, en ce qui concerne l´objet, voit surtout les classes : constructeurs, destructeurs, héritage, surcharges.
Le reste : généricité, polymorphisme, statique ou non, foncteurs, etc etc, tu peux t´en passer, et tu pourras y revenir le jour ou tu seras déja tres tres a l´aise avec la base :)

techslash
techslash
Niveau 8
25 juin 2004 à 01:51:43

Excellent plan :) .

J´ai déjà mon petit projet de jeu d´ailleurs, commence vraiment à être temps de sortir ça de la glace et d´utiliser enfin tout le bourrage théorique :) . Reste qu´à voir la surcharge et je suppose que je peux prendre un crayon, un cahier et planifier le moteur.

JeanYvesYves
JeanYvesYves
Niveau 10
25 juin 2004 à 01:53:07

utilise une lib graphique existante !
- SDL pour la 2D
- OpenGL pour la 3D

par exemple :)
tu as déja manipulé une lib graphique ?

techslash
techslash
Niveau 8
25 juin 2004 à 02:01:35

Oui, légèrement...

En OpenGL + GLUT j´avais fais une caisse ( un cube texture-mappé) qui tourne avec les flèches du clavier

En SDL + SDLimage j´avais programmé une fenêtre pour faire apparaitre du texte à l´écran. J´ai dessiné un sprite contenant toutes les lettres de l´alphabet, minuscule et majuscule. À chaque fois qu´une touche était enfoncé, le programme créait une surface, lui appliquait le sprite et resizait la surface pour n´afficher que la lettre choisie. Pas très optimisé mais ça marchait. Ce qui me fait penser qu´il faut que j´apprenne comment utiliser un fichier de police.

Direct X j´avais fait un cylindre avec une lumière dynamique qui se déplaçait avec les mouvements de la souris.

Sauf que dans tous les cas c´était des expérimentations qui reposaient beaucoup sur des tutoriels écrient par d´autres personnes. J´ai effacé tout ça et j´ai recommencé avec la base du C++ après avoir réalisé que tout ça allait nul part.

JeanYvesYves
JeanYvesYves
Niveau 10
25 juin 2004 à 02:29:05

ben moi je pense qu´au contraire ça aide de réaliser des petits exemples comme ça

En tout cas tu es sur la bonne voie pour réaliser de belles choses :)

en ce qui concerne la lecture du font, SDL a plein d´add on, et entre autre SDL_TTF je crois ( regarde sur le site officiel) qui permet de lire un fichier font.

techslash
techslash
Niveau 8
25 juin 2004 à 03:30:39

Bien c´est encore moi avec un problème ! :)

Cette fois c´est la surcharge.

J´ai réussi à surcharger les opérateurs internes ( les opérateurs surchargés à l´intérieur d´une classe dans lesquels le premier opérande est celui sur lequel la fonction est appliqué ( =+ , =- par exemple)

J´essais de surcharger les opérateurs externes ( surcharge d´un opérateur de l´espace de nommage global).

Encore une fois, le cours me semble nébuleux.

Ma méthode d´overload est la suivante:
MyClass operator+(MyClass *s1, MyClass *s2)
{
MyClass reCl;
reCl.writa((*s1).printa() + ( *s2).printa());
return reCl;
}

je reçois l´erreur:
error C2803: ´operator +´ must have at least one formal parameter of class type

et franchement j´ignore pourquoi...

JeanYvesYves
JeanYvesYves
Niveau 10
25 juin 2004 à 07:46:41

C´est parce que tu passes des pointeurs. Et dans une surcharge, il ne faut pas passer de pointeurs :

MyClass operator+(MyClass s1, MyClass s2)
{
MyClass reCl;
reCl.writa(s1.printa() + s2.printa());
return reCl;
}

devrait mieux marcher !
de plus, si dans un opérateur tu accedes des données internes, il faut déclarer ta fonction en tant que " friend"
Ainsi, tu pourras faire :
s1.a + s2.a

meme si a est private.

autre chose : ta syntaxe :
s1.printa() + s2.printa() me parait louche !
tu veux additionner 2 print ?

encore une astuce, le jour ou tu utilises des pointeurs :

la syntaxe ( *s).truc existe, elle marche, mais il existe une maniere plus simple de l´écrire, plus lisible qui revient au meme :
s->truc

techslash
techslash
Niveau 8
25 juin 2004 à 07:58:28

Merci, wow, c´est beaucoup à la fois :)

> tu veux additionner 2 print ?

printa une une fonction public qui retourne la valeur de int a; en gros, c´était une façon d´éviter d´avoir à faire un friend puisqu´il est dit dans le guide de M. Casteyde que les friends représentent souvent des défauts de conception et de planification dans un objet. Maintenant que j´y repense, ma méthode est probablement un défaut de conception encore plus grand ( puisque beaucoup plus compliquée) mais bon, on va faire avec ce qu´on a.

> s->truc

chic, je vais devoir tester ça, je pensais que l´opérateur -> c´était pour quand le pointeur est sur la donnée/méthode qui est manipulée et non sur l´objet ( autrement dit quand le * est à la droite du point).

Merci bien encore une fois ! J´aimerais savoir cependant, est-ce que tu dors des fois :-) ? Un message à 02:29:05 et un à 07:46:41. Je calcul rapidement mais ça fait 5:17 de sommeil ça non :ok: ?

techslash
techslash
Niveau 8
25 juin 2004 à 08:04:35

Sans les pointeurs, ça fonctionne, en effet ! C´est incroyable les objets et la surcharge, on en vient à se demander comment un langage de prog. peut vivre sans avoir ça :) .

JeanYvesYves
JeanYvesYves
Niveau 10
25 juin 2004 à 08:11:03

ah les surcharges, C du bon ça :)
un truc utile : une classe " vecteur" par exemple, que j´utilise pour OpenGL qui prend en surcharge [] pour accéder aux coordonnées, +, -, += -= pour les opérations

  • pour le produit sclaire, ou pour multiplier un vecteur par une composante, / pour le produit vectoriel ( par exemple), etc !

tres pratique :)

Sinon, en effet, cette nuit, j´ai pas bcp dormi, lol ! Hier soirée, soirée Tarot avec des potes jusqu´a tres tard, ce matin boulot. Je dormirai ce WE ( d´ailleurs, je m´absenterai des ce soir jusqu´a dimanche soir ( GMT) ( tu es du canada je vois))
Bon allez, je dois aller au boulot ! De toute façon, je passe sur le forum au boulot aussi, pendant des petites pauses !
a++ !

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