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

Probleme avec 'double'

Xx-MoDzTbOgT-xX
Xx-MoDzTbOgT-xX
Niveau 7
08 août 2011 à 17:34:59

Bonjour est-ce que vous pourriez m'aidez un peu pour ce sujet par gentillesse :) :

posNoelAbs.x = 200;
posNoelAbs.y = 300-(Noel->h);

posNoelRel.y=(-0.04*(posNoelRel.x*posNoelRel.x)+10
0);

-----

alors déja comme warning on me met "warning : converting to sint16 from 'double'".
je sais que vus les décimaux sur 0,04 il manque double mais quand je le mes a coté, les erreurs sont :

-expected primary-expression before 'double'.
-expected ';' before 'double'.

donc si quelqu'un aurait eu idée de comment résoudre ce problème.

:merci:

actuenligne
actuenligne
Niveau 6
08 août 2011 à 17:42:10

Salut,

As tu bien déclaré toutes tes variables comme double ?

Sinon je suis désolé mais je ne comprends pas bien ton problème quand tu dis "je sais que vus les décimaux sur 0,04 il manque double mais quand je le mes a coté, les erreurs sont...".
Quand tu mets quoi à coté de quoi ? :)

Xx-MoDzTbOgT-xX
Xx-MoDzTbOgT-xX
Niveau 7
08 août 2011 à 17:47:13

Quand je met Double a coté de :

posNoelRel.y=(-0.04*(posNoelRel.x*posNoelRel.x)+10
0);

:)

actuenligne
actuenligne
Niveau 6
08 août 2011 à 17:48:44

Héhé, ça m'avance pas :)
Est ce que tu peux me montrer exactement ce que tu fais et la ligne de l'erreur ?

Xx-MoDzTbOgT-xX
Xx-MoDzTbOgT-xX
Niveau 7
08 août 2011 à 17:56:32

Ligne d'erreur =

double
posNoelRel.y=(-0.04*(posNoelRel.x*posNoelRel.x)+10
0);

error = expected primary-expression before "double"
error = expected ';' before "double".

En fait je veux faire sauter mon perso . il n'y a aucune erreur dans le code source apart cette ligne la. Mais désolé
je ne connais pas de site ou on peut montrer son code . sinon sa serait illisible :snif2:

Xx-MoDzTbOgT-xX
Xx-MoDzTbOgT-xX
Niveau 7
08 août 2011 à 17:57:24

les 2 ligne avant sont =

posNoelAbs.x = 200;
posNoelAbs.y = 300-(Noel->h);

actuenligne
actuenligne
Niveau 6
08 août 2011 à 18:10:11

T'inquiète y'a pas de problème.
Je pense que ton erreur vient de Noel->h.
Ce serait plutot :

Noel->h()

je pense, avec les parenthèses. Essaie et dis moi !

Xx-MoDzTbOgT-xX
Xx-MoDzTbOgT-xX
Niveau 7
08 août 2011 à 18:18:10

Ok J'essaie :)

Xx-MoDzTbOgT-xX
Xx-MoDzTbOgT-xX
Niveau 7
08 août 2011 à 18:21:40

Mince sa ne marche pas :snif2: :snif2: :snif2:

sa me met une erreur en plus =
error : 'Noel->SDL_Surface::h cannot be used as a function .
Pas de doute je suis maudit :snif:

actuenligne
actuenligne
Niveau 6
08 août 2011 à 18:28:15

Mais non, courage !
C'est ma faute, je ne savais pas que tu utilisais la SDL.
Mais du je pense voir le problème : tu essaies de déclarer quelque chose qui existe déjà.
Je ne suis pas sûr, je ne connais pas la SDL, mais il me semble que ".y" te renvoie déjà un double. Donc essaie d'enlever le double qui pose problème. Les warnings ne sont pas des bugs, ce sont souvent des cas litigieux (coercition par exemple).

Xx-MoDzTbOgT-xX
Xx-MoDzTbOgT-xX
Niveau 7
08 août 2011 à 18:36:11

Ok merci de ta gentillesse et de ta patience :)

tbop2
tbop2
Niveau 10
08 août 2011 à 18:37:00

Pour moi ce genre d'erreur veut très certainement dire que tu as simplement oublié un ; à la ligne précédant la déclaration de ta variable double.

PS: J'ai vu qu'à plusieurs reprises tu as copié ton code partiellement... Ca n'a malheureusement aucun sens, on copie son code brut de decoffrage et pas en erodant ci et là des déclaration de typage sans quoi on ne pourra pas t'aider.

tbop2
tbop2
Niveau 10
08 août 2011 à 18:39:25

La preuve du coup tu m'induis totalement en erreur. On ne redéfini pas une variable après que celle-ci soit déjà défini auparavant dans le code.

Si tu veux caster (transformer) le membre gauche de ton assignation il faut faire :

maVariable = (double)(quelquechose);

et surtout pas :

double maVariable = quelquechose;

Xx-MoDzTbOgT-xX
Xx-MoDzTbOgT-xX
Niveau 7
08 août 2011 à 18:39:58

Tbop2 tiens mon code, je sais que je doit m'organiser un peu plus mais regarde =

  1. include<stdio.h>
  2. include<stdlib.h>
  3. include<time.h>
  4. include<SDL/SDL.h>

int main(int argc, char *argv[])
{

SDL_Surface *ecran = NULL, *Hap = NULL, *campagne = NULL, *Noel = NULL;
SDL_Rect positionHap, positionCampagne;
SDL_Event event;
int continuer = 1;
int tempsPrecedent = 0, tempsActuel = 0;

positionCampagne.x = 0;
positionCampagne.y = 0;

SDL_Init(SDL_INIT_VIDEO);

SDL_WM_SetIcon(SDL_LoadBMP("Noel.bmp"), NULL);

ecran = SDL_SetVideoMode(640, 512, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
SDL_WM_SetCaption("Mi Mario Smiley", NULL);

Hap = SDL_LoadBMP("Hap.bmp");
SDL_SetColorKey(Hap, SDL_SRCCOLORKEY, SDL_MapRGB(Hap->format, 255, 255, 255));

campagne = SDL_LoadBMP("campagne.bmp");
SDL_BlitSurface(campagne, NULL, ecran, &positionCampagne);

positionHap.x = 600;
positionHap.y = 256;

SDL_EnableKeyRepeat(10, 10);

while (continuer)
{
SDL_PollEvent(&event); /* On utilise PollEvent et non WaitEvent pour ne pas bloquer le programme */
switch(event.type)
{
case SDL_QUIT:
continuer = 0;
break;
}

tempsActuel = SDL_GetTicks();
if (tempsActuel - tempsPrecedent > 2) /* Si 30 ms se sont écoulées depuis le dernier tour de boucle */
{
positionHap.x--; /* On bouge Zozor */
tempsPrecedent = tempsActuel; /* Le temps "actuel" devient le temps "precedent" pour nos futurs calculs */
}

SDL_BlitSurface(Hap, NULL, ecran, &positionHap);
SDL_Flip(ecran);
}

SDL_FreeSurface(campagne);
SDL_FreeSurface(Hap);
SDL_Quit();

return EXIT_SUCCESS;

SDL_Init( SDL_INIT_VIDEO );

// On crée une fenêtre
ecran = SDL_SetVideoMode(640, 512, 32, SDL_HWSURFACE|SDL_DOUBLEBUF);

// On charge le fond

//On charge Mario
Noel = SDL_LoadBMP("Noel.bmp");
SDL_SetColorKey(Noel, SDL_SRCCOLORKEY, SDL_MapRGB(Noel->format, 255, 255, 255));

// La position absolue de Mario
SDL_Rect posNoelAbs;
posNoelAbs.x = 200;
posNoelAbs.y = 300-(Noel->h);

// La position relative de Mario
SDL_Rect posNoelRel;
posNoelRel.x = -50;
posNoelRel.y = 0;

// Boucle principale du programme
int fin = 0;
while (!fin)
{
// Gestion des evenements
SDL_Event event;
while (SDL_PollEvent(&event))
{
switch (event.type)
{
// Quand on ferme la fenetre
case SDL_QUIT:
fin = 1;
break;

// Quand on appuie sur une touche
case SDL_KEYDOWN:
{
// ECHAP
if (event.key.keysym.sym == SDLK_ESCAPE)
fin = 1;
break;
}
}
}

// EVOLUTION
//On avance de 1
posNoelRel.x++;

if(posNoelRel.x>=50)
{
posNoelRel.x=-50;
}

//On met à "0" les pos abs:
posNoelAbs.x = 200;
posNoelAbs.y = 300-(Noel->h);

posNoelRel.y=(-0.04*(posNoelRel.x*posNoelRel.x)+10
0);

//On calcule maintenant les valeurs abs
posNoelAbs.x = posNoelAbs.x + posNoelRel.x+50;
posNoelAbs.y = posNoelAbs.y - posNoelRel.y;

//Intervalle de 10ms

// FIN EVOLUTION

// DESSIN

// On vide l'ecran
SDL_FillRect(ecran, 0, SDL_MapRGB(ecran->format, 0, 0, 0));

// On dessine les images aux positions respectives

SDL_BlitSurface(Noel, 0, ecran, &posNoelAbs);

// FIN DESSIN

// rafraichir image
SDL_Flip(ecran);
}

// libérer la mémoire
SDL_FreeSurface(campagne);
SDL_FreeSurface(Noel);

SDL_Quit();

return 0;

actuenligne
actuenligne
Niveau 6
08 août 2011 à 18:40:02

Tbop2 -> je suis bien d'accord, le message d'erreur qu'il reçoit veut bien dire ça mais sur le code qu'il a recopié il y a bien le ";" donc j'ai essayé de chercher l'erreur ailleurs.

tbop2
tbop2
Niveau 10
08 août 2011 à 18:49:35

La prochaine fois copie ton code sur pastebin, à partir de 10 lignes ça devient illisible sur jv.com :ok:

Du coup je l'ai pas regardé mais as tu essayé de changer ce que je t'ai indiqué ?

Xx-MoDzTbOgT-xX
Xx-MoDzTbOgT-xX
Niveau 7
08 août 2011 à 18:51:10

Non je vais le faire et merci pour l'info du site web
:)

tbop2
tbop2
Niveau 10
08 août 2011 à 18:59:15

Hum je pense pas que ça soit cela le problème en fait. Pourquoi tu sautes une ligne avant la fin de ton instruction à la ligne concernée ? Tu devrais enlever cette fin de ligne déjà et voir ce que cela donne.

Maintenant que j'ai le code sous les yeux mon précédent conseil n'est pas valide tu devrais l'undo.

Xx-MoDzTbOgT-xX
Xx-MoDzTbOgT-xX
Niveau 7
08 août 2011 à 19:07:28

Pour ta proposition Tbop2, elle ne marche pas. Toujours la même erreur : converting to 'sint16' from 'double' et le code est :
http://pastebin.com/index.php?e=2 :-(

Xx-MoDzTbOgT-xX
Xx-MoDzTbOgT-xX
Niveau 7
08 août 2011 à 19:13:05

Un peu plus lisible mais sa ne résoud rien :mort:

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