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

[SDL] problèmes de conversion

Perdu_de_linfo
Perdu_de_linfo
Niveau 9
06 avril 2005 à 22:36:47

Bonsoir à tous,

je suis en train de faire un ptit prog avec la SDL, mais je suis un peu dépassé par certains évenements.
Je vous explique:

j´ai une structure contenant deux int :

typedef struct coordonnees
{
int x;
int y;
} coordonnees;

Qui seront les coordonnes de " coordonnees object;".
que j´utiliserais pour mettre dans la fonction BlitSurface de SDL :

SDL_BlitSurface(source,pS,object,&);

Mon probleme est donc que à la place de object, moi j´ai object.x et object.y.
Comment pourrais-je mettre ces coordonnées?

Suivant, j´ai ceci :

SDL_Surface* corps;
corps=LoadImageSDL("images/corps.bmp");
SDL_SetColorKey(corps,SDL_SRCCOLORKEY , SDL_MapRGBA(corps->format,0,0,0,0));

Et j´ai un message d´erreur :

16 D:\C++\snake\game.cpp ISO C++ forbids declaration of `corps´ with no type

16 D:\C++\snake\game.cpp conflicting types for `int corps´

15 D:\C++\snake\game.cpp previous declaration as `SDL_Surface*corps´

17 D:\C++\snake\game.cpp base operand of `->´ is not a pointer

17 D:\C++\snake\game.cpp ISO C++ forbids declaration of `SDL_SetColorKey´ with no type

17 D:\C++\snake\game.cpp `int SDL_SetColorKey´ redeclared as different kind of symbol

Et juste en dessous, encore plus étrange, j´ai :

571 C:\Dev-Cpp\include\SDL\SDL_video.h previous declaration of `int SDL_SetColorKey(SDL_Surface*, unsigned int, unsigned int)´

Ca me semble tellement bourré d´erreurs que j´ai l´impression qu´il trouve pas les fonctions que j´ai définies dans un autre fichier...
J´essaie de programmer avec plusieurs fichiers et j´ai un peu de peine donc c´est possible que ca vienne de la...
J´ai encore d´autres erreurs mais celles la me sembles plus importantes ( et j´ai l´impression que si je peu les résoudres ca résoudra les autres aussi).

Quelqu´un pourrait me filer un coup de main?

Merci d´avance

JeanYvesYves
JeanYvesYves
Niveau 10
06 avril 2005 à 22:41:00

déja :

typedef struct coordonnees
{
int x;
int y;
} coordonnees;

je pense qu´il est préférable de ne pas mettre la meme chose en haut et en bas :

typedef struct Scoordonnees
{
int x;
int y;
} coordonnees;

Perdu_de_linfo
Perdu_de_linfo
Niveau 9
06 avril 2005 à 22:59:58

Ha ok, merci, c´est déjà ça de sut :)

Mais ça ne change malheureusement rien à mes problèmes...

JeanYvesYves
JeanYvesYves
Niveau 10
06 avril 2005 à 23:16:17

si tu veux utiliser SDL_BlitSurface, tu es obligé de remplir une structure SDL_Rect

donc tu peux copier tes données de ta structure dans SDL_Rect::x et SDL_Rect::y

mais je te conseille, en fait, de ne pas utiliser ta structure, d´utiliser directement un SDL_Rect ! :)

ça contient un x, et un y ( c´est ce que tu veux)

Perdu_de_linfo
Perdu_de_linfo
Niveau 9
06 avril 2005 à 23:20:53

Un peu capricieux ce SDL... :sarcastic:
Ok alors je vais directement faire comme ca.
( ca devrait faire un prob de moins :-p )
Merci

thesuperbest
thesuperbest
Niveau 8
07 avril 2005 à 12:15:22

Au lieu de faire SDL_Surface* corps, tu fais SDL_Surface *corps et ça marchera mieux.

LGV
LGV
Niveau 28
07 avril 2005 à 14:06:27

d´un autre cotes, si SDL_Rect et ta struct maisons sont des POD avec le meme proto, hop hop un cast static entre les deux, et personne n´a rien vu... :D

Perdu_de_linfo
Perdu_de_linfo
Niveau 9
07 avril 2005 à 15:07:24

Bon, j´ai quand même oublié ma structure.

Mais le problème persiste ( enfin, MES problèmes^^).
Ex:

SDL_Surface *fourmi;
fourmi=LoadImageSDL("images/fourmi.bmp");
SDL_SetColorKey(fourmi,SDL_SRCCOLORKEY , SDL_MapRGBA(fourmi->format,0,0,0,0));

Ca me donne :

12 D:\C++\snake\game.cpp ISO C++ forbids declaration of `fourmi´ with no type

12 D:\C++\snake\game.cpp conflicting types for `int fourmi´

11 D:\C++\snake\game.cpp previous declaration as `SDL_Surface*fourmi´

13 D:\C++\snake\game.cpp base operand of `->´ is not a pointer

13 D:\C++\snake\game.cpp ISO C++ forbids declaration of `SDL_SetColorKey´ with no type

Ca fais tellement d´erreurs pour 3 lignes que je me demande s´il à trouvé ma fonction?

Quintoff
Quintoff
Niveau 10
07 avril 2005 à 16:15:44

Je crois comprendre d´après tes deux première erreurs que tu à fourmi pour SDL_Surface *fourmi; et tu déclare une variable int fourmi également ce qui causerais un conflit. Non?

LGV
LGV
Niveau 28
07 avril 2005 à 16:29:36

perso je pense plutot que le type SDL_Surface est inconnu, et c´est une declaration C qui est interpretee, donc int par defaut ; ceci n´est pas autorise en C++99, comme le souligne le message.

Verifie tes includes :-?

Blawk
Blawk
Niveau 10
07 avril 2005 à 18:59:20

Capricieux SDL ? ??
Ca s´appelle le typage fort.

Au fait, SDL_Rect est défini comme suit:

typedef struct{
Sint16 x, y;
Uint16 w, h;
} SDL_Rect;

Perdu_de_linfo
Perdu_de_linfo
Niveau 9
08 avril 2005 à 12:28:36

Bon bon, au fait il s´agit pas vraiment d´une erreur SDL^^
Mais bien du fait qu´il ne trouve aucune définition à mes fonctions lol!
Je vous explique :
J´ai mon fichier principal.cpp, j´inclus game.h qui contient le jeu(les prototypes des fonctions de game.cpp quoi). J´y inclus functions.h qui contient toutes les définitions des fonctions SDL dont j´ai besoin.
Puis j´ai encore game.cpp dans le quel j´inclu game.h ( pour les prototypes) et j´inclus enfin functions.h dans functions.cpp ( aussi pour les prototypes).

Je suis pas sûr que ce soit juste mais il me semblait que c´était un truc dans le genre...

Ensuite il y a mes variables... je sais pas comment communiquer mes variables qui se trouvent définies dans mon game.h.

Dans mon principal.cpp j´inclu ma fonction Initialisation() qui initialise le jeu.
Cette fonction Initialisation() se trouve définie dans game.cpp.
Et utilise des variables qui ont été définies dans game.h
Mais j´obtien ceci dans mon principal.cpp :

principal.cpp D:\C++\snake\principal.o(.bss+0x0) first defined here

[Linker error] undefined reference to `state´

[Linker error] undefined reference to `direction´

etc...

Il ne trouve pas mes variables state et direction non?
comment puis-je définir ces variables?
Merci

Perdu_de_linfo
Perdu_de_linfo
Niveau 9
09 avril 2005 à 13:15:20

Première fois de ma vie ( enfin je crois) :

:up:

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