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

Giga-Nova
Giga-Nova
Niveau 9
12 septembre 2004 à 18:30:08

personne ?

Ptival
Ptival
Niveau 10
12 septembre 2004 à 18:32:48

Tu peux montrer la nouvelle partie de ton code avec le BlitSurface ?

( Après je te dirai pour l´appui touche)

Giga-Nova
Giga-Nova
Niveau 9
12 septembre 2004 à 18:39:02
  1. include < SDL/SDL.h>

SDL_Surface* screen;
SDL_Event event;

void init_SDL()
{
SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER);
screen = SDL_SetVideoMode(1024, 768, 32,SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_FULLSCREEN);
SDL_ShowCursor(0);
}

SDL_Rect Rect(int x,int y,int w=0,int h=0)
{
SDL_Rect r;
r.x=x;
r.y=y;
r.w=w;
r.h=h;
return r;
}

SDL_Surface* LoadBMP(char* fichier,int vram=1)
{
SDL_Surface* f = SDL_LoadBMP(fichier);
SDL_Surface* r;
if ( vram)
r=SDL_CreateRGBSurface(SDL_HWSURFACE, f->w, f->h, 32, 0, 0, 0, 0);
if ( r==NULL) vram=0;
if ( !vram)
r=SDL_CreateRGBSurface(SDL_SWSURFACE, f->w, f->h, 32, 0, 0, 0, 0);
SDL_Rect R=Rect(0,0,f->w,f->h);
SDL_BlitSurface(f,NULL,r,&);
SDL_FreeSurface(f);
return r;
}

int main(int argc , char **argv)
{
int s=1;
int sx=1,sy=1;
SDL_Rect rect1;
SDL_Surface* firstscreen;
SDL_Surface* perso[4];

int fini=0;
init_SDL();

rect1.x = 0;
rect1.y = 0;

firstscreen=LoadBMP("map.bmp");
perso[0]=LoadBMP("homme1.bmp");
perso[1]=LoadBMP("homme2.bmp");
perso[2]=LoadBMP("homme3.bmp");
perso[3]=LoadBMP("homme4.bmp");

SDL_SetColorKey(perso[4],SDL_SRCCOLORKEY , SDL_MapRGBA(perso[4]->format,255,0,255,0));
SDL_SetAlpha(perso[4],SDL_SRCALPHA,128);

while(1)
{
SDL_PollEvent(&);
if ( event.type == SDL_KEYDOWN && event.key.keysym.sym == SDLK_RETURN)
break;
if ( event.type == SDL_KEYDOWN)
{
if ( event.key.keysym.sym == SDLK_LEFT) rect1.x-=1;
if ( event.key.keysym.sym == SDLK_RIGHT) rect1.x+=1;
if ( event.key.keysym.sym == SDLK_UP) rect1.y-=1;
if ( event.key.keysym.sym == SDLK_DOWN) rect1.y+=1;
}

if ( rect1.x<0) sx=1;
if ( rect1.y<0) sy=1;
if ( rect1.x>950) sx=-1;
if ( rect1.y>650) sy=-1;
SDL_BlitSurface(firstscreen,NULL,screen,NULL);

SDL_BlitSurface(perso[rect1.x/(20%4)],NULL,screen,
&1);
SDL_Flip(screen);
}
SDL_ShowCursor(1);
SDL_Quit();
return 0;
}

LGV
LGV
Niveau 28
12 septembre 2004 à 18:47:04

lalelale : donne le prog complet, avec le main

druss : ben faut parser le fichier . X et remplir ses structures de données... A noter que . X est le format de DirectX à priori, via cette API tu disposes de toutes les fonctionnalités pour charger simplement un fichier de ce type, et pour ensuite manipuler l´objet dans ton appli.

Ptival
Ptival
Niveau 10
12 septembre 2004 à 18:47:14

SDL_BlitSurface(perso[rect1.x/(20%4)],NULL,screen,

&1);

20 modulo 4 ça fait 0, et on ne divise pas par 0 !

Tout à l´heure le modulo était à 3, ce qui faisait 2.

Giga-Nova
Giga-Nova
Niveau 9
12 septembre 2004 à 18:48:15

? ??? ( keski ma sorti la) ? ???

Giga-Nova
Giga-Nova
Niveau 9
12 septembre 2004 à 18:49:45

j´ai essayé en mettant 25 mais ca change rien

Giga-Nova
Giga-Nova
Niveau 9
13 septembre 2004 à 12:23:04

on deterre ce topic

Giga-Nova
Giga-Nova
Niveau 9
13 septembre 2004 à 18:08:13

qqun sait comment faire pour assigner une img a une touche

Ptival
Ptival
Niveau 10
13 septembre 2004 à 18:49:51

T´as qu´à faire un tableau de SDL_Surface...

Et à chaque touche tu associes un chiffre :

if(event.key.keysym.sym == SDLK_LEFT)
SDL_BlitSurface(perso[0],NULL,screen,
&1);
if(event.key.keysym.sym == SDLK_RIGHT)
SDL_BlitSurface(perso[1],NULL,screen,
&1);
if(event.key.keysym.sym == SDLK_UP)
SDL_BlitSurface(perso[2],NULL,screen,
&1);
if(event.key.keysym.sym == SDLK_DOWN)
SDL_BlitSurface(perso[3],NULL,screen,
&1);

Tu charges évidemment les bonnes images dans [0][1][2] et [3] !

Giga-Nova
Giga-Nova
Niveau 9
13 septembre 2004 à 19:07:10

merci
mais j´ai un gros dilème

  1. include < SDL/SDL.h>

SDL_Surface* screen;
SDL_Event event;

void init_SDL()
{
SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER);
screen = SDL_SetVideoMode(640, 480, 32,SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_FULLSCREEN);
SDL_ShowCursor(0);
}

SDL_Rect Rect(int x,int y,int w=0,int h=0)
{
SDL_Rect r;
r.x=x;
r.y=y;
r.w=w;
r.h=h;
return r;
}

SDL_Surface* LoadBMP(char* fichier,int vram=1)
{
SDL_Surface* f = SDL_LoadBMP(fichier);
SDL_Surface* r;
if ( vram)
r=SDL_CreateRGBSurface(SDL_HWSURFACE, f->w, f->h, 32, 0, 0, 0, 0);
if ( r==NULL) vram=0;
if ( !vram)
r=SDL_CreateRGBSurface(SDL_SWSURFACE, f->w, f->h, 32, 0, 0, 0, 0);
SDL_Rect R=Rect(0,0,f->w,f->h);
SDL_BlitSurface(f,NULL,r,&);
SDL_FreeSurface(f);
return r;
}

int main(int argc , char **argv)
{
int s=1;
int sx=1,sy=1;
SDL_Rect rect1;
SDL_Surface* firstscreen;
SDL_Surface* perso[4];

int fini=0;
init_SDL();

rect1.x = 0;
rect1.y = 0;

firstscreen=LoadBMP("map.bmp");
perso[0]=LoadBMP("homme1.bmp");
perso[1]=LoadBMP("homme2.bmp");
perso[2]=LoadBMP("homme3.bmp");
perso[3]=LoadBMP("homme4.bmp");

SDL_SetColorKey(perso[4],SDL_SRCCOLORKEY , SDL_MapRGBA(perso[4]->format,255,0,255,0));
SDL_SetAlpha(perso[4],SDL_SRCALPHA,128);

while(1)
{
SDL_PollEvent(&);
if ( event.type == SDL_KEYDOWN && event.key.keysym.sym == SDLK_RETURN)
break;
if ( event.type == SDL_KEYDOWN)
{
if(event.key.keysym.sym == SDLK_RIGHT)
SDL_BlitSurface(perso[0],NULL,screen,&1);
if(event.key.keysym.sym == SDLK_UP)
SDL_BlitSurface(perso[1],NULL,screen,&1);
if(event.key.keysym.sym == SDLK_LEFT)
SDL_BlitSurface(perso[2],NULL,screen,&1);
if(event.key.keysym.sym == SDLK_DOWN)
SDL_BlitSurface(perso[3],NULL,screen,&1);

}

if ( rect1.x<0) sx=1;
if ( rect1.y<0) sy=1;
if ( rect1.x>950) sx=-1;
if ( rect1.y>650) sy=-1;
SDL_BlitSurface(firstscreen,NULL,screen,NULL);

SDL_BlitSurface(perso[rect1.x/25%4],NULL,screen,&
ect1);
SDL_Flip(screen);
}
SDL_ShowCursor(1);
SDL_Quit();
return 0;
}

le prog marche, mais il y a qu´un écran tout noir pendant 3secondes

help ( j´y connais presque rien en SDL un tuto en francais serait le bienvenu)

lalelale
lalelale
Niveau 5
13 septembre 2004 à 19:13:56

Alors, c´est bon, j´ai trouvé la solution ; ).

Mais j´ai maintenant un autre problème, je ne sais pas comment " manger" un caractere. Le code :

  1. include < iostream>
  2. include < cstdarg>
  3. include < string>

void error(char* error, . ..)
{
va_list ap;
va_start(ap,error);

char *p;
cout<<" " <<error;

for(p = error; *p; p++)
{ if(*p!=´%´)
{}
else
{

++p;//pour que ca lise le caractere suivant
switch(*p)

{
case ´s´ :
int entier = va_arg(ap,int);

cout<<entier<<" " ;
break;

}

}

}

}

void main()
{
error("lut %s,%s",15,15);
cin.get();
}

Alors, il marche bien, mais je n´arrive pas à enlever ces ´%s´ et c´est pas très élégant je trouve. Vous n´auriez pas une méthode( j´ai pensé à faire un tableau char* error[] à la place de char* error, mais je n´y arrive pas ( ben oui, avec un tableau il m´aurait suffi de ne pas afficher la partie contenant le ´%´)). Comment faire?

lalelale
lalelale
Niveau 5
13 septembre 2004 à 19:15:58

tuto français de sdl : www.fvirtman.fr.st ( le site de mister JY²)

Giga-Nova
Giga-Nova
Niveau 9
13 septembre 2004 à 19:16:15

ton code sert a quoi au fait

Giga-Nova
Giga-Nova
Niveau 9
13 septembre 2004 à 19:17:04

http://www.fvirtman.fr.st
merci de mettre le lien

lalelale
lalelale
Niveau 5
13 septembre 2004 à 19:23:57

Ben en fait, lorsque tu appelles la fonction error(char* error,...), tu peux mettre dedans une chaîne de caractere plus plusieurs variables ( d´où le ´...´). Je n´ai jamais étudié le C, mais je crois que ça revient à la fonction printf()(ou un nom de ce genre).

Ptival
Ptival
Niveau 10
13 septembre 2004 à 19:24:00

Il faut mettre les appuis touches après le Blit de first screen, sinon le fond s´affichera par dessus le perso ! Et virer ton Blit du Perso :

if ( rect1.x<0) sx=1;
if ( rect1.y<0) sy=1;
if ( rect1.x>950) sx=-1;
if ( rect1.y>650) sy=-1;
SDL_BlitSurface(firstscreen,NULL,screen,NULL);

SDL_PollEvent(&);
if ( event.type == SDL_KEYDOWN && event.key.keysym.sym == SDLK_RETURN)
break;
if ( event.type == SDL_KEYDOWN)
{
if(event.key.keysym.sym == SDLK_RIGHT)
SDL_BlitSurface(perso[0],NULL,screen,&1);
if(event.key.keysym.sym == SDLK_UP)
SDL_BlitSurface(perso[1],NULL,screen,&1);
if(event.key.keysym.sym == SDLK_LEFT)
SDL_BlitSurface(perso[2],NULL,screen,&1);
if(event.key.keysym.sym == SDLK_DOWN)
SDL_BlitSurface(perso[3],NULL,screen,&1);
}

Mais je crois que ça va un peu foutre la merde dans ton code original, faudrait que tu apprennes bien comment marchent tes Blit.

lalelale
lalelale
Niveau 5
13 septembre 2004 à 19:26:08

euh, ´ai oublié de préciser. dans la fonction printf(), je crois que si dans la chaîne de caractere tu mùets un %s, il est remplacé par la constant definie à la fon de la declaration de la fonction ( peut etre que je me trompe, je n´y connais pas grand chose encore).

Giga-Nova
Giga-Nova
Niveau 9
13 septembre 2004 à 19:29:23

ca marche tjrs pas

Giga-Nova
Giga-Nova
Niveau 9
13 septembre 2004 à 19:32:52

il y a eu parachute deployed
fatal signal

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