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.
![]()
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 ? ![]()
Quand je met Double a coté de :
posNoelRel.y=(-0.04*(posNoelRel.x*posNoelRel.x)+10
0);
![]()
Héhé, ça m'avance pas ![]()
Est ce que tu peux me montrer exactement ce que tu fais et la ligne de l'erreur ?
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 ![]()
les 2 ligne avant sont =
posNoelAbs.x = 200;
posNoelAbs.y = 300-(Noel->h);
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 !
Ok J'essaie ![]()
Mince sa ne marche pas
sa me met une erreur en plus =
error : 'Noel->SDL_Surface::h cannot be used as a function .
Pas de doute je suis maudit ![]()
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).
Ok merci de ta gentillesse et de ta patience ![]()
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.
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;
Tbop2 tiens mon code, je sais que je doit m'organiser un peu plus mais regarde =
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;
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.
La prochaine fois copie ton code sur pastebin, à partir de 10 lignes ça devient illisible sur jv.com
Du coup je l'ai pas regardé mais as tu essayé de changer ce que je t'ai indiqué ?
Non je vais le faire et merci pour l'info du site web
![]()
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.
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 ![]()
Un peu plus lisible mais sa ne résoud rien ![]()