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

News événement
La Manette d’Or 2024 : Voici comment s'inscrire au tournoi EA Sports FC 25 de la PS5
DébutPage précedente
123
Page suivanteFin
dynoplasmma dynoplasmma
MP
Niveau 9
12 mai 2005 à 19:10:26

:up:

Vengeur41 Vengeur41
MP
Niveau 10
12 mai 2005 à 19:29:20

J´ai pas bien compris la question...
Tu veux faire un colorkey non ?
Cad que la couleur verte ( par exemple) tu la rend transparente ?
Dans ce cas c´est SDL_SetColorkey...
Regarde dans la doc de SDL comment on utilise cette fonction, tu devrais y arriver.

En tout cas ton exemple est sensé marcher si tu remplace
SDL_SetAlpha(image,SDL_SRCALPHA,128);
par
SDL_SetAlpha(firstscreen,SDL_SRCALPHA,128);

( si tu le met juste avant blitter) ceci dit j´ai pas essayé...

. ..

dynoplasmma dynoplasmma
MP
Niveau 9
12 mai 2005 à 19:34:04

:merci: Vengeur41 Cela fonctionne, j´ai mit :

SDL_SetColorKey(firstscreen,SDL_SRCCOLORKEY , SDL_MapRGBA(firstscreen->format,255,0,255,0));

Mon probleme etait en fait le image mit au mieu de firstscreen.

Mon prochain exploit sera la gestion du clavier ( dure dure)

Vengeur41 Vengeur41
MP
Niveau 10
12 mai 2005 à 19:53:22

En ce qui concerne le calvier, gère le en parallèle des events.
Cad que t´appelle une boucle d´event ( une fonction) et une boucle de clavier ( une autre fonction) appelée en boucle.

pour gérer efficacement le clavier :
Uint8 *keystate;

keystate=SDL_GetKeyState(NULL);
if ( keystate[touche])
. ..

les touches c´est par exemple SDLK_SPACE pour espace... Dans notre cas =>

if ( keystate[SDLK_SPACE])

dynoplasmma dynoplasmma
MP
Niveau 9
12 mai 2005 à 20:03:46

J´ai beaucoup de queston ( dsl, je ne suis pas doué)

1:Ou je pourrais mettre ton code :
_avant int?
_Ou je veux dans le int

2:Sinon, comment faire pour baisser une image quand on a fait une fois la touche espace: peu etre :

Uint8 *keystate;

keystate=SDL_GetKeyState(NULL);
if ( keystate[SDLK_SPACE])
Down("image.bmp")1;

Un truc dans le genre, je n´en ai aucune idee . ..

Vengeur41 Vengeur41
MP
Niveau 10
12 mai 2005 à 20:21:33

Tu sais la c´est bien dur ton programme ( enfin pas vraiment).
Tout d´abord faut mettre ca bien au point : une fois qu´elle est chargée en tant que surface ( ici elle s´appelle firstscreen) on s´en fout de image.bmp. Tu vois, les rect contrôlent tout ce qu´est coordonnées. Bon le mieux pour t´expliquer ce sera toujours un programme complet :

  1. include < SDL.h>

SDL_Surface *screen, *image;
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_WM_SetCaption("Ma fenetre",NULL);

image=SDL_LoadBMP("image.bmp");
x=500;
y=380;
/ /Met ton SDL_SetColorkey ici si tu veux

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;
}

Bon là ton image.bmp fait une petite style euh 60x60. Si ton ordinateur est speed ( meme s´il ne l´est pas) fais quand meme une synchronisation du fps => cad ralentir le jeu si le pc est rapide...

Tu la dirige avec les touches directionnelles.
Ca doit compiler si j´ai pas fait d´erreur. Mais nromalement c´est ok. C´est ptet SDL/SDL.h au lieu de SDL.h enfin t´adapte après...

Vengeur41 Vengeur41
MP
Niveau 10
12 mai 2005 à 20:26:42

Euh si tu veux un exemple de jeu complet avec son code source programmé en C avec SDL et compilé sous Dev-C++, télécharge mon jeu :
http://membres.lycos.fr/lezardware/lezardware_windows.zip
si le lien est pas ok, vas sur

http://membres.lycos.fr/lezardware/

Le code source est assez instructif je pense mais attend peut-etred´avoir un niveau plus haut pour tout comprendre. En plus le code est pas hyper propre ni hyper commenté. Je veux pas que tu sois dégouté de la SDL par mon code :)

dynoplasmma dynoplasmma
MP
Niveau 9
12 mai 2005 à 20:31:25

J´ai changé quelques petit trucs mais l´ecran reste noir, pourquoi, je ne sais pas.
Je verrais demain car mon frere veut faire l´ordi, y me gonffle
A plus !

dynoplasmma dynoplasmma
MP
Niveau 9
12 mai 2005 à 21:58:15

Plutot baleze a comprendre le code pour moi, j´ai un petit peu beaucoup de mal.

Pour le deplacement, je vais essayer de comprendre, essayer plusieurs methodes, et si je susi totalement paumé, je demanderais, en tout cas :merci:

Sinon, vengeur, j´ai essayé tout les minis jeux, ils sont cool, et le jeu de peche il est super chaud, je n´arrive pas a gagner!

dynoplasmma dynoplasmma
MP
Niveau 9
12 mai 2005 à 22:05:06

L´ecran etait noir car je n´avait pas changé le nom de l´image. :honte:

Mais par contre, l´image clignote.
Peut etre par ce que j´ai cru comprende que c´est en 60*60 ou un truc dans le genre.

Je vais l´inclure dans mon truc.

Prochaine difficulté : la collision.

dynoplasmma dynoplasmma
MP
Niveau 9
12 mai 2005 à 22:15:45

En fait ca marche, j´avais oublier de changer le nom de l´image :honte:

Je vais tout mettre a jour.

Sinon, l´image clignote beaucoup en haut, et moin en bas

Ptival Ptival
MP
Niveau 10
12 mai 2005 à 22:37:21

Clignotement -> Tu n´es pas en double buffering

Rajoute le flag SDL_DOUBLEBUF dans SDL_Init :)

Ptival Ptival
MP
Niveau 10
12 mai 2005 à 22:40:37

D´ailleurs on appelle ça du scintillement.

Et j´me suis gouré j´voulais dire dans SDL_SetVideoMode() que tu rajoutes le flag :)

Pour savoir ce qu´est le double buffering cherche sur le site de JYY :)

dynoplasmma dynoplasmma
MP
Niveau 9
12 mai 2005 à 22:48:08

Okmeri ptival ca marche, mais par contre , pour transposer, j´ai 4 ereurs, au niveaudes 3commandes haut bas quitte, et de la lignes du dessus :

  1. include < SDL/SDL.h>

SDL_Surface *screen;
SDL_Surface *firstscreen;
SDL_Surface *image;
SDL_Event event;
SDL_Rect rcdst;
Uint8 keystate;

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 x,y, bQuit=0;

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.bmp");
rect1.x = 20;
rect1.y = 333;
rect1.w = 1024;
rect1.h = 768;
SDL_SetColorKey(firstscreen,SDL_SRCCOLORKEY , SDL_MapRGBA(firstscreen->format,255,0,255,0));

while(!bQuit)
{
SDL_FillRect(screen,NULL,0);
rcdst.x=x;
rcdst.y=y;
SDL_BlitSurface(firstscreen,NULL,screen,&1);
bQuit=1;
keystate=SDL_GetKeyState(NULL);
if(keystate[SDLK_ESCAPE])bQuit=1;
if(keystate[SDLK_DOWN])y++;
if(keystate[SDLK_UP])y--;
}

firstscreen = SDL_LoadBMP("barre joueur 3.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);
waitkey();
SDL_ShowCursor(1);
SDL_Quit();
return 0;
}

dynoplasmma dynoplasmma
MP
Niveau 9
13 mai 2005 à 11:28:01

J´ai reussi a corriger tout les bugs, mais neamoin, l´ecran est noir, j´appui sur echap, l´image 3 apparait, j´appui sur echap, plus rien, j´appui sur entre, ca se ferme.
Le programme est la :

  1. include < SDL/SDL.h>

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

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_RETURN) return;
}
}
}
}

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

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

firstscreen=SDL_LoadBMP("image2.bmp");
x=500;
y=380;
SDL_SetColorKey(firstscreen,SDL_SRCCOLORKEY , SDL_MapRGBA(firstscreen->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(&) && event.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--;
}
SDL_FreeSurface(screen);

firstscreen = SDL_LoadBMP("image3"); 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);
waitkey();
SDL_ShowCursor(1);
SDL_Quit();
return 0;
}

Pourquoi, je ne sais pas, peut etre parce que il y a deux moyens de sortis . .. I dont known ?

dynoplasmma dynoplasmma
MP
Niveau 9
13 mai 2005 à 13:10:21

I am a upper
:up:

dynoplasmma dynoplasmma
MP
Niveau 9
13 mai 2005 à 13:30:21

_______§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§ §§§
_______§§_____________________________ ___§§
_______§§_____________________________ ___§§
_______§§_____________________________ ___§§
_______§§_____________________________ ___§§
_______§§____________HELP ME___________ ___§§
_______§§_____________________________ ___§§
_______§§_____________________________ ___§§
_______§§_____________________________ ___§§
_______§§_____________________________ ___§§
_______§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§ §§§§§
________________________§§
________________________§§
_______§§§§§§§§_________§§
_____§§§______§§§_______§§
___§§§__________§§§_____§§
_§§§__§§______§§__§§§___§§
§§__________________§§_§§§§
§§__________________§§§____§
§§__________________§§§____§
§§___§§________§§___§§_ §§§§
_§§§__§§§§§§§§§§__§§§__
___§§§__________§§§____
_____§§§______§§§______
_______§§§§§§§§________

dynoplasmma dynoplasmma
MP
Niveau 9
13 mai 2005 à 15:48:55

J´ai retravaillé mon code, pour un resultat meilleur, mais il ne marche pas a 100%
Voici le nouveau code, j´ai guardé waitkey, et j´ai viré l´autre facon, car de 1, j´n ai besoin que d´une, et de deux, une boucle separé est mieux, sinon, si je rajoue des trucs apres, cela ne marche pas :

  1. include < SDL/SDL.h>

SDL_Surface *screen;
SDL_Surface *firstscreen;
SDL_Surface *image;
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_RETURN) return;
}
}
}
}

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

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

firstscreen=SDL_LoadBMP("image2.bmp");
rect1.x=500;
rect1.y=380;
rect1.w=1024;
rect1.h=768;
SDL_SetColorKey(firstscreen,SDL_SRCCOLORKEY , SDL_MapRGBA(firstscreen->format,255,0,255,0));
rect1.x=x;
rect1.y=y;
SDL_BlitSurface(image,NULL,screen,&1);
keystate=SDL_GetKeyState(NULL);
if(keystate[SDLK_DOWN])y++;
if(keystate[SDLK_UP])y--;
SDL_FreeSurface(screen);

firstscreen = SDL_LoadBMP("image3.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);
waitkey();
SDL_ShowCursor(1);
SDL_Quit();
return 0;
}

Sur mon ecran s´affiche l´image 1 et l´image 3 parfaitement.
Par contre, l´image 2, celle qui doit bouger, ne s´affiche pas, je voudrais de l´aide sil vous plait, car j´ai supprimé des trucs et tout et tout, mais je n´ai pas trouvé la solution.

dynoplasmma dynoplasmma
MP
Niveau 9
13 mai 2005 à 15:55:39

Maintenant, toutes les images s´affichent, mais la barre joueur 2 ne bouge pas...
Look :

  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_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=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);

rect1.x=x;
rect1.y=y;
keystate=SDL_GetKeyState(NULL);
if(keystate[SDLK_DOWN])y++;
if(keystate[SDLK_UP])y--;
SDL_FreeSurface(screen);

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;
}

En fait, je ne comprend pas pourquoi elle ne bouge pas ? :question:

dynoplasmma dynoplasmma
MP
Niveau 9
13 mai 2005 à 16:55:30

7 messages de moi a la suite ! :ouch:
Mais quel tragedie ! :ouch2:

Pourquoi etes vous si cruels ! :question:

Etes vous des diables ? :diable:

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