CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • Black Friday
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • 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
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : [SDL].images

DébutPage précedente
123
Page suivantePage suivante
Vengeur41 Vengeur41
MP
Niveau 10
13 mai 2005 à 18:14:36

A mon avis t´as pas compris l´utilité de mon code. Son utilité c´est une image qui se déplace. Si l´ecran reste noir c´est car y´a un problème soit au flip, soit au blit soit au chargement...

dynoplasmma dynoplasmma
MP
Niveau 9
13 mai 2005 à 22:34:46

Si si, j´ai compri l´utilité de ton programme car je l´ai essayé, il a marché.
Mais je l´ai adapté sur ce que j´etait en train de faire, au debut l´ecran etait noir, j´ai fait des changements, et maintenant, il y a tous les graphismes, mais ca ne bouge toujours pas, tu comprends?

dynoplasmma dynoplasmma
MP
Niveau 9
14 mai 2005 à 21:03:40

:up:

Vengeur41 Vengeur41
MP
Niveau 10
14 mai 2005 à 21:10:28

Bon, le HD de mon ordi portable a grillé. L´ordi est au SAV pour 3 semaines. Sur le pc où je suis je peux vraiment rien faire pour t´aider... ( vous imaginez ? Windows 98, IE 4, pas d´outils de Dev...)

dynoplasmma dynoplasmma
MP
Niveau 9
14 mai 2005 à 23:30:25

ok, sinon, j´avais reussi a faire un ti truc, l´image 1 s´affichait mais clignotait, et l´image deux bougeait mais n´allait que en bas, et s´aggrandissait, c´est le meilleur resultat que j´ai pu faire, hommage a feu l´ordinateur portable de vengeur 41

dynoplasmma dynoplasmma
MP
Niveau 9
15 mai 2005 à 11:08:22

Bonjour, toutes les images s´affichent, mais le probleme persiste, j´appui sur la touche du haut, et rien ne se passe, je ne sais pas pourquoi, si quelqu´un si connait, qu´il m´induise dans le droit chemin. Voici le programme :

  1. include < SDL/SDL.h>

SDL_Surface* screen;
SDL_Surface* firstscreen;
SDL_Event event;

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

void waitkey()
{
while(1)
{
while(SDL_PollEvent(&))
{
if ( event.type == SDL_KEYDOWN)
{
if ( event.key.keysym.sym == SDLK_RETURN) return;
}
}
}
}

int main(int argc , char **argv)
{
SDL_Rect rect1;
init_SDL();
firstscreen = SDL_LoadBMP("aire.bmp");
rect1.x = 0;
rect1.y = 0;
rect1.w = 1024;
rect1.h = 768;

SDL_BlitSurface(firstscreen,NULL,screen,&1);

firstscreen=SDL_LoadBMP("barre joueur 1.bmp");
rect1.x=20;
rect1.y=332.5;
rect1.w=1024;
rect1.h=768;
SDL_SetColorKey(firstscreen,SDL_SRCCOLORKEY , SDL_MapRGBA(firstscreen->format,255,0,255,0));
SDL_BlitSurface(firstscreen,NULL,screen,&1);

{
SDL_Event event;

SDL_WaitEvent(&);

switch ( event.type)
{
case SDLK_UP:
printf("La touche %s a été préssée!\n",
SDL_GetKeyName(event.key.keysym.sym));
break;
}
}

firstscreen=SDL_LoadBMP("barre joueur 2.bmp");
rect1.x=987;
rect1.y=332.5;
rect1.w=1024;
rect1.h=768;

SDL_SetColorKey(firstscreen,SDL_SRCCOLORKEY,SDL_Ma
pRGBA(firstscreen->format,255,0,255,0));
SDL_BlitSurface(firstscreen,NULL,screen,&1);

SDL_Flip(screen);
waitkey();
SDL_ShowCursor(1);
SDL_Quit();
return 0;
}

:merci: d´´avance a ceux qui pourront m´aider.

Vengeur41 Vengeur41
MP
Niveau 10
15 mai 2005 à 11:41:08

Tout simplement parce que ton code veut rien dire. Tu devrais vraiment regarder la documentation de SDL.
SDLK_UP n´a rien a faire ici, ce n´est pas un event.type ! SDL_KEYUP ( ou un truc dans ce gout) par contre oui. Et vaut mieux un SDL_KEYDOWN.

Ca doit marcher, meme si ton code est pas super...

dynoplasmma dynoplasmma
MP
Niveau 9
15 mai 2005 à 13:59:33

Non, cela ne marche toujours pas c´est tres bizarre, et SDL_KEYUP, c´est la fleche de haut non :question:

dynoplasmma dynoplasmma
MP
Niveau 9
15 mai 2005 à 15:43:56

:up:

Lapintade Lapintade
MP
Niveau 25
15 mai 2005 à 15:51:41

Un regle de plus a retenir mon ami, c´est pas du up. Les gens qui t´ont aider suivent ta conversation, donc pas de probleme si ton topic descend dans la liste, tu aura tes reponses.

SDL_KEYUP, ca veut dire qu´une touche est relaché je pense ( SDL_KEYDOWN veut dire qu´une touche est appuyée).

dynoplasmma dynoplasmma
MP
Niveau 9
15 mai 2005 à 15:54:46

ok :merci: j´avais pas compri avant, donc,mon programme ne fpnctionne tjs pas...

Lapintade Lapintade
MP
Niveau 25
15 mai 2005 à 16:01:33

ben en lisant, je vois rien de bizarre. Il faudrait que tu mette des printf ou des breakpoints dans ton fonction WaitKey et voir ainsi ce qu´il se passe quand tu appuie sur une touche et lire la valeur de ce que tu test, tu test peut etre la mauvaise touche.

dynoplasmma dynoplasmma
MP
Niveau 9
15 mai 2005 à 16:06:33

Je ne sais pas trop ou mettre les print f et autres trucs, mais j´ai enlevé toutes les images pour savoirsi l´ecriture etait en dessous des images, et bien non, cela donne ca :

  1. include < SDL/SDL.h>

SDL_Surface* screen;
SDL_Surface* firstscreen;
SDL_Event event;

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

void waitkey()
{
while(1)
{
while(SDL_PollEvent(&))
{
if ( event.type == SDL_KEYUP)
{
if ( event.key.keysym.sym == SDLK_RETURN) return;
}
}
}
}

int main(int argc , char **argv)
{
SDL_Rect rect1;
init_SDL();

{
SDL_Event event;

SDL_WaitEvent(&);

switch ( event.type)
{
case SDL_KEYDOWN:
printf("La touche %s a été préssée!\n",
SDL_GetKeyName(event.key.keysym.sym));
break;
}
}

SDL_Flip(screen);
waitkey();
SDL_ShowCursor(1);
SDL_Quit();
return 0;
}

l´ecran est tjs noir.

Vengeur41 Vengeur41
MP
Niveau 10
15 mai 2005 à 17:09:00
  1. include < SDL/SDL.h>

SDL_Surface* screen;
SDL_Surface* firstscreen;
SDL_Event event;
bool bQuit=false, eventwait=true;
void init_SDL()
{
SDL_Init(SDL_INIT_VIDEO);
screen = SDL_SetVideoMode(1024, 768, 32,SDL_HWSURFACE|SDL_DOUBLEBUF);
SDL_ShowCursor(0);
}

void waitkey()
{
while(1)
{
while(SDL_PollEvent(&))
{
if ( event.type == SDL_KEYUP)
{
if ( event.key.keysym.sym == SDLK_RETURN) return;
}
}
}
}

int main(int argc, char *argv[])
{
SDL_Rect rect1;
init_SDL();

SDL_Event event;

while ( !bQuit && eventwait)
{
if ( SDL_PollEvent(&))
{
switch ( event.type)
{
case SDL_KEYDOWN:
printf("La touche %s a été préssée!\n",
SDL_GetKeyName(event.key.keysym.sym));
eventwait=false;
break;
case SDL_QUIT:
bQuit=true;
break;
}
}
}
SDL_Flip(screen);
waitkey();
SDL_ShowCursor(1);
SDL_Quit();
}

Le programme fonctionne. Mais SDL a redirigé stdout vers stdout.txt et non vers la console.
Donc le resultat s´affiche dans ce fichier texte.

Il semblerait donc que ce genre d´events ne fonctionne pas avec WaitEvent mais juste avec PollEvent.

P.S. : Enleve le eventwait=false, le programme tournera en boucle.

dynoplasmma dynoplasmma
MP
Niveau 9
15 mai 2005 à 17:27:56

Ah ouais ok, j´avais pas compri avant, sinon, es ce que tu arriverais a melanger 2 codes, c´est a dire :

Le premier, ou une image de fond s´affiche, une image a droite s´affiche, une image a gauche s´affiche.

  1. include < SDL/SDL.h>

SDL_Surface *screen;
SDL_Surface *firstscreen;
SDL_Event event;
SDL_Rect rect1;
Uint8* keystate;
int x,y ;

void init_SDL()
{
SDL_Init(SDL_INIT_VIDEO);
screen = SDL_SetVideoMode(1024, 768, 32,SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_FULLSCREEN);
SDL_WM_SetCaption("Ma fenetre",NULL);
SDL_ShowCursor(0);
}

void waitkey()
{
while(1)
{
while(SDL_PollEvent(&))
{
if ( event.type == SDL_KEYDOWN)
{
if ( event.key.keysym.sym == SDLK_ESCAPE) return;
}
}
}
}

int main(int argc , char **argv)
{
SDL_Rect rect1;
init_SDL();
firstscreen = SDL_LoadBMP("aire.bmp");
rect1.x = 0;
rect1.y = 0;
rect1.w = 1024;
rect1.h = 768;

SDL_BlitSurface(firstscreen,NULL,screen,&1);

firstscreen=SDL_LoadBMP("barre joueur 1.bmp");
rect1.x=0;
rect1.y=332.5;
rect1.w=1024;
rect1.h=768;
SDL_SetColorKey(firstscreen,SDL_SRCCOLORKEY , SDL_MapRGBA(firstscreen->format,255,0,255,0));
SDL_BlitSurface(firstscreen,NULL,screen,&1);

firstscreen = SDL_LoadBMP("barre joueur 2.bmp");
rect1.x=986;
rect1.y=332.5;
rect1.w=1024;
rect1.h=768;
SDL_SetColorKey(firstscreen,SDL_SRCCOLORKEY , SDL_MapRGBA(firstscreen->format,255,0,255,0));
SDL_BlitSurface(firstscreen,NULL,screen,&1);

SDL_Flip(screen);
waitkey();
SDL_ShowCursor(1);
SDL_Quit();
return 0;
}

_______________________________________________

Le deuxieme programme que tu a fait, qui fait bouger une image :

  1. include < SDL/SDL.h>

SDL_Surface *screen, *image, *firstscreen;
SDL_Event e;
SDL_Rect rcdst;
Uint8 *keystate;
int x,y, bQuit=0;

int main(int argc, char **argv)
{
SDL_Init(SDL_INIT_VIDEO);
screen =

SDL_SetVideoMode(1024,768,16,SDL_HWSURFACE|SDL_FUL
LSCREEN|SDL_DOUBLEBUF);
SDL_WM_SetCaption("Ma fenetre",NULL);

image=SDL_LoadBMP("barre.bmp");
x=500;
y=380;
SDL_SetColorKey(image,SDL_SRCCOLORKEY , SDL_MapRGBA(image->format,255,0,255,0));

while(!bQuit)
{
SDL_FillRect(screen,NULL,0);
rcdst.x=x;
rcdst.y=y;
SDL_BlitSurface(image,NULL,screen,&);
SDL_Flip(screen);
if ( SDL_PollEvent(&) && e.type==SDL_QUIT)
bQuit=1;
keystate=SDL_GetKeyState(NULL);
if ( keystate[SDLK_ESCAPE])bQuit=1;
if ( keystate[SDLK_DOWN])y++;
if ( keystate[SDLK_UP])y--;
if ( keystate[SDLK_RIGHT])x++;
if ( keystate[SDLK_LEFT])x--;
}
SDL_FreeSurface(screen);
SDL_Quit();
return 0;
}

________________________________________________
En gardant le code premier, je voudrais bouger l´image de gauche avec le code 2.
J´essaye :

  1. include < SDL/SDL.h>

SDL_Surface *screen;
SDL_Surface *firstscreen;
SDL_Event event;
Uint8 *keystate;
SDL_Rect rect1;
int x,y ;

void init_SDL()
{
SDL_Init(SDL_INIT_VIDEO);
screen = SDL_SetVideoMode(1024, 768, 32,SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_FULLSCREEN);
SDL_WM_SetCaption("Ma fenetre",NULL);
SDL_ShowCursor(0);
}

void waitkey()
{
while(1)
{
while(SDL_PollEvent(&))
{
if ( event.type == SDL_KEYDOWN)
{
if ( event.key.keysym.sym == SDLK_ESCAPE) return;
}
}
}
}

int main(int argc , char **argv)
{
SDL_Rect rect1;
init_SDL();
firstscreen = SDL_LoadBMP("aire.bmp");
rect1.x = 0;
rect1.y = 0;
rect1.w = 1024;
rect1.h = 768;

SDL_BlitSurface(firstscreen,NULL,screen,&1);

firstscreen=SDL_LoadBMP("barre joueur 1.bmp");
rect1.x=0;
rect1.y=333;
rect1.w=1024;
rect1.h=768;
SDL_SetColorKey(firstscreen,SDL_SRCCOLORKEY , SDL_MapRGBA(firstscreen->format,255,0,255,0));
SDL_BlitSurface(firstscreen,NULL,screen,&1);

while(keystate)
{
SDL_FillRect(screen,NULL,0);
rect1.x=x;
rect1.y=y;
SDL_Flip(screen);
keystate=SDL_GetKeyState(NULL);
if ( keystate[SDLK_DOWN])y++;
if ( keystate[SDLK_UP])y--;
}

firstscreen = SDL_LoadBMP("barre joueur 2.bmp");
rect1.x=986;
rect1.y=333;
rect1.w=1024;
rect1.h=768;
SDL_SetColorKey(firstscreen,SDL_SRCCOLORKEY , SDL_MapRGBA(firstscreen->format,255,0,255,0));
SDL_BlitSurface(firstscreen,NULL,screen,&1);

SDL_Flip(screen);
SDL_FreeSurface(screen);
waitkey();
SDL_ShowCursor(1);
SDL_Quit();
return 0;
}

Mais la barre joueur 1 ne bouge pas, si tu arrives, se serai cool, car pourtant, le programme se lance.

DébutPage précedente
Page suivantePage suivante
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
La vidéo du moment