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

zyxom
zyxom
Niveau 7
13 juillet 2005 à 22:51:29

MERCI POUR LE SITE!! Grâce à lui, ça marche! Merci beaucoup!

dynoplasmma
dynoplasmma
Niveau 9
13 juillet 2005 à 23:08:32

le mien de nullissimo :
http://www.libsdl.org/cgi/docwiki.cgi/SDL_20API

Si tu connait tout ca sdl n´a plus de secret pour le connaisseur de ca ?

dnob700
dnob700
Niveau 10
13 juillet 2005 à 23:54:35

int & n´a pas de sens ( pour l´instant).

une variable est soit une valeurs :
type var;

soit une référence ( pointeur) vers une valeurs :
type *var

( Je simplifie, mais c´est pour l´explication).

quand un a une variable, quelque soit son type, & est l´adresse de la variable.
et *var est la valeur de la variable qui se trouve à l´adresse contenu dans var. Bien sur, si la variable n´est pas un pointeur le compilo ne vous laissera pas écrire *var.

donc int& n´est pas un type de donnée.

Lorsque vous appeler une fonction. Vous pouvez soit lui donner la valeur de la variable :

int f1(int var)
{
. ..
}

auquel cas lorsque vous faites f1(5) ou f1(a) var prend la valeur 5 ou celle de a dans la fonction, mais si vous modifier var, a n´est pas modifier.

Par contre vous pouvez donner à la fonction non pas la valeur mais l´adresse de la variable :
int f2(int* var)
{
. ..
}

auquel cas lorsque vous appellez la fonction vous devez faire : f2(&) pour dire que c´est l´adresse de a et non a lui même que vous donner à la fonction.
Dans la fonction lorsque vous avez besoin de la valeur de a vous faite *var ce qui donne la valeur stocker à l´adresse contenu dans var ( et on se souvient que var contient l´adresse de a) Donc si vous modifier *var alors a sera modifié par exemple en faisant :

  • var = 5;

Et enfin vous pouvez déclarer une fonction comme ça :
int f3(int& var)
{
. ..
}
et seulement ici vous pouvez écrire ça. Cela veut dire que vous allez écrire tout comme si vous aviez déclarer f1 : vous appeler la fonction avec f3(a) mais par contre ce qui va se passer c´est que si vous modifier var alors a va se modifier. En gros ça ne sers à rien de mieux que la deuxième forme c´est juste une simplification de l´écriture ( qui est apparue avec le C++ je crois).

Ptival
Ptival
Niveau 10
14 juillet 2005 à 09:45:22

int & n´a pas de sens ( pour l´instant).

-> Que ce soit en C ou en C++

Mais :

int & = b;

A un sens en C++ !

guyver2
guyver2
Niveau 10
18 juillet 2005 à 20:38:15

voila j´ai une petite question sur la lecture dans un fichier.

mon fichier est ouvert
si je fait
fscanf(monfichier,"\n");
est-ce que ça deplace le curseur sur la ligne suivante du fichier?

un peu dans le meme genre que le readln en pascal

JeanYvesYves
JeanYvesYves
Niveau 10
18 juillet 2005 à 21:54:30

fscanf est un peu comme le readln, mais pas que ça : non seulement il s´arrete aux sauts de ligne mais aussi aux espaces :
Je te laisse regarder mon tuto : chapitre F.1.2.
http://perso.numericable.fr/~fvirtman/info/tuto/index.html
pour le scanf :) apres, pour le fscanf, c´est pareil :)

tadada
tadada
Niveau 1
18 juillet 2005 à 23:38:41

salut!
Ta pas des Tutos pour pur novice lol! Je direr même pour noob ? :questions: merci d´avance

Ptival
Ptival
Niveau 10
18 juillet 2005 à 23:41:17

Pour mon débat avec dnob700 d´un peu plus haut quelqu´un peut appuyer une des deux thèses que je sache si je dis des conneries ou pas ? :(

JeanYvesYves
JeanYvesYves
Niveau 10
18 juillet 2005 à 23:58:52

tadada > regarde mon tuto, message juste avant.

ptival >
int & = b;
je n´ai jamais utilisé ça. ça compile ? ( j´ia la flemme de lance le compilo ce soir)
ça crée une sorte de pointeur en toute logique ? ( et donc si tu modifies a, ça modifie b)

mwé. Je prefere utiliser des pointeurs dans ce cas, mais je veux bien croire que ça marche, demain je ferai un test :-)

Ptival
Ptival
Niveau 10
19 juillet 2005 à 00:31:01

oui oui ça compile :)

int b = 0;
int & = b;
++a;
/ / a " vaut" 1, b vaut 1 :)

En fait je pense que c´est ce qui se passe implicitement dans la syntaxe :

mafonction(int &){]

si je fais mafonction(b) ça fait " int & = b"...

Enfin c´est pas très clair ce que je dis :)

Sinon JYY si tu ( re)passes par là j´aimerais savoir si tu as réussi à faire une ColorKey pour une texture OpenGL par SDL et si tu pouvais m´y aider ?

Faut-il gérer la ColorKey dans la surface SDL avant le glTexImage2d ? Quel flag mettre dans glTexImage2d ?

Faut-il gérer cela avec OpenGl ? Quelle fonction utiliser ?

acidoangel
acidoangel
Niveau 5
19 juillet 2005 à 01:08:18

petite question, tu connais le moteur 3D: Ogre3D ? si oui , tu pourras peut être m´aider...

guyver2
guyver2
Niveau 10
19 juillet 2005 à 09:10:05

Merci j´ai lu ton tutos sur scanf...

mais je voudrait savoir si je peus passez a la ligne suivante d´un fichier texte sans avoir a rechercher " manuellement" le caractère \n.

exemple je lit des infos dans un texte et si la ligne commence par # alors c´est que c´est une ligne de commentaire et donc, sans connaitre sa longueur, je veux passer a la ligne suivante.

je peux evidement mettre

while ( fgetc(montexte,c)!=\n)

ce qui j´immagine va avancer le curseur dans le texte caractère par caractère puis s´arreter a la suite du premier retour a la ligne rencontré.

mais vu que je ne vais pas me servir de ce que contient cette ligne je ne voudrait pas utiliser une variable rien que pour sauter une ligne.

donc je voudrait savoir si, a la maniere de freadln, fscanf(montexte,´\n´) permet de sauter la ligne sans se préocuper de ce qui s´y trouve...

mecrci

JeanYvesYves
JeanYvesYves
Niveau 10
19 juillet 2005 à 09:53:55

guyver2 > utilise :
fscanf(F,"%1000[^\n]s",buf);
pour faire un beau readln ( je te laisse voir le tuto pourquoi)
pour vérifier si la ligne commence par # ou pas, c´est simple, APRES le fscanf, tu regardes si buf[0] == ´#´
n´oublie pas d´allouer buf a 1000 octets dans l´exemple.

acidoangel > désolé, je ne connais ogre que de nom. Mais c´est vrai que ça a l´air super.

Ptival > l´astuce pour mettre une colorkey dans OpenGL, c´est de jouer sur le canal alpha :
Assure toi que tes images sont en profondeur 32 bits ( ma fonction LoadImage de mes tutos SDL permet cela)
Ensuite, joue dessus : quand tu es encore sous une SDL_Image ( avant d´y monter en texture pour openGL), fait des getpixels/putpixels : fait une fonction qui dit, par exemple, de mettre 255 pour le alpha si le pixel est noir, et 0 s´il est blanc.
Tu définis ainsi facilement un masque en te servant du alpha channel.
Ensuite, monte la texture dans OpenGL.
Puis fait :
glEnable(GL_ALPHA_TEST);
et définis :
glAlphaFunc(GL_LEQUAL,128);

qui veut dire que le pixel est affiché si et seulement si la valeur alpha du pixel lu est < = ( Less or Equal) 128, autrement dit, ça ne t´affichera pas ce que tu as défini en 255, a savoir le bord :)

Si tu te fais une fonction qui fait ça, tu simules facilement le ColorKey.

Le canal alpha est donc une astuce pour le simuler :)
Tu pourrais aussi utiliser glBlend si tu voulais te servir du canal alpha pour faire de la transparence, mais ça chie un peu avec le Z-buffer dans certains cas, bref... glAlphaFunc t´aidera pour la COlokey :-)

JeanYvesYves
JeanYvesYves
Niveau 10
19 juillet 2005 à 09:55:49

" de mettre 255 pour le alpha si le pixel est noir, et 0 s´il est blanc"

correction :

de mettre 255 pour le alpha si le pixel est de la couleurkey que tu as choisi, et 0 sinon.
( ainsi la canal alpha défini le masque du sprite)

Ptival
Ptival
Niveau 10
19 juillet 2005 à 15:49:33

Ouais faudra que je me penche un peu dessus ça a pas l´air simplissime :lol:

Surtout que j´ai du mal à me faire une idée de ce qui se passe en mémoire avec les commandes OpenGL :\

Pour l´instant j´ai mis un canal Alpha dans mon PNG et j´ai juste balancé un :

glBlendFunc(GL_ONE_MINUS_SRC_ALPHA,GL_SRC_COLOR);

glEnable(GL_BLEND);

Ca fera l´affaire en attendant que je code ma fonction ( pour réduire les images, pcque l´alpha dans l´image ça bouffe en mémoire)

JeanYvesYves
JeanYvesYves
Niveau 10
19 juillet 2005 à 16:02:55

ne fait pas de glblend ! ça c´est pour la transparence...
fait un glalpha : c´est un " je te vois ou pas", c´est beaucoup plus rapide.

Ptival
Ptival
Niveau 10
19 juillet 2005 à 16:53:49

lol, ouais j´m´y mets dessus, j´vais relire ton message et commencer à bosser ça xD

Ptival
Ptival
Niveau 10
19 juillet 2005 à 18:02:52

Je tiens le bon bout :)

Je pense que je vais y arriver, merci à godrik pour mon éducation sur le décalage bit à bit :)

Sinon dans la rubrique " Copier/Coller saymal", je citerai JYY qui dans le tuto 2_1_03_balle.cpp a écris :

r=SDL_CreateRGBSurface(SDL_HWSURFACE, f->w, f->h, 32, 0, 0, 0, 0); / / cree une image en VRAM

( ...)

r=SDL_CreateRGBSurface(SDL_SWSURFACE, f->w, f->h, 32, 0, 0, 0, 0); / / cree une image en VRAM

Vous aurez bien sur compris qu´à la seconde ligne c´est en RAM et pas en VRAM ; )

JeanYvesYves
JeanYvesYves
Niveau 10
19 juillet 2005 à 18:12:50

oups :) je viens de corriger :-)

guyver2
guyver2
Niveau 10
19 juillet 2005 à 19:03:56

>JYY

fscanf(F,"%1000[^\n]s",buf);
pour faire un beau readln ( je te laisse voir le tuto pourquoi)
pour vérifier si la ligne commence par # ou pas, c´est simple, APRES le fscanf, tu regardes si buf[0] == ´#´
n´oublie pas d´allouer buf a 1000 octets dans l´exemple.

ça je sais faire mais moi je voudrait sauter une ligne sans alouer de la memoire pour un truc qui ne servira a rien.
il n´y a pas une fonction du genre FSeek. qui permet de se positionner sur la ligne suivante?
je ne connait que
SEEK_SET ( égale à 0) : début du fichier ;
SEEK_CUR ( égale à 1) : position courante ;
SEEK_END ( égale à 2) : fin du fichier.

bon si il n´y a pas d´autre moyen que de lire tout les caracteres d´une ligne pour passer a la suivante je vais faire comme toi.
question subsidiaire:
si je met
fscanf(F,"%1000[^\n]s");
sans variable a modifier est-ce que ça peut compiler correctement ( j´imagine que oui)?
ça me permeterais de lire jusqu´a 999 caractères sans avoir a les enregistrer dans une variable.
OUI/NON???

et merci

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