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 suivanteFin
dynoplasmma dynoplasmma
MP
Niveau 9
11 mai 2005 à 18:16:51

Pour tout vous expliquer, je n´arrive pas a rajouter une image apres une image plein ecran, je vais donc mettre le code et si une bonne ame passe par ici, il pourrait rajouter les lignes necessaires avec tout ms remerciments si necessaires. :svp: (sous dev c++)
Voici le truc :

  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("image.bmp");
rect1.x = 0;
rect1.y = 0;
rect1.w = 1024;
rect1.h = 768;

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

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

:merci: d´avance

A plus

Moule53 Moule53
MP
Niveau 10
11 mai 2005 à 18:28:37

Pas compris la question . ..

Sinon c´est le code du tuto de JYY sur le sdl ça :)

Vengeur41 Vengeur41
MP
Niveau 10
11 mai 2005 à 18:38:44
  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("image.bmp");

SDL_BlitSurface(firstscreen,NULL,screen,NULL);

SDL_Flip(screen);
waitkey();
SDL_ShowCursor(1);

SDL_FillRect(screen,NULL,0);
firstscreen = SDL_LoadBMP("image2.bmp");

SDL_BlitSurface(firstscreen,NULL,screen,NULL);

SDL_Flip(screen);
waitkey();

SDL_Quit();
return 0;
}

Si j´ai bien compris la question...

Au fait je trouve la fonction waitkey très " porc" ( enfin, dans ma façon de voir les choses), rien que la gestion du clavier par events j´aime pas ca, sortir d´une boucle while infinie ( j´aime pas les while infinies d´abord, na ! ) en " forcant" non plus... Ma fonction waitkey() :

void waitkey()
{
Uint8 *keystate = keystate = SDL_GetKeyState(NULL);
unsigned short i;
bool keypressed=false;
while ( !keypressed)
{
keystate = SDL_GetKeyState(NULL);
for ( i=0;i<256;i++)
{
if ( keystate[i]){keypressed=true; i=256;}
}
eventloop();
}
}

Bon ok mon exemple est ptet laid mais je préfère largement ça... Fin bon, c´est toi qui vois ; )

dynoplasmma dynoplasmma
MP
Niveau 9
11 mai 2005 à 18:40:00

Oui, c´est es cours de JYY que je remercie au passage.
En fait, je veux mettre une image en plein ecran comme cela, mais je voudrais rajouter d´autres images que je pourrais mettre n´importe ou avec x et y, mais je ne sais pas comment faire, quelles lignes mettre, a quels endroits ?
Tu comprends ?

dynoplasmma dynoplasmma
MP
Niveau 9
11 mai 2005 à 18:47:34

Merci vengeur mais il y a un petit probleme,

J´execute, ca affiche la premiere image

Je fait entré

La deuxieme image s´affiche

Je fait entré

Cela retourne sous windows

Et je voudrais les deux images en meme temps, you understand ?

Vengeur41 Vengeur41
MP
Niveau 10
11 mai 2005 à 18:47:35

SDL_Rect rcdst;
SDL_Surface *screen;
SDL_Surface *mesimages[15];
int i;
char nomfichier[40];

for ( i=0;i<15;i++)
{
sprintf(nomfichier,"image%d.bmp",i+1);
mesimages[i] = SDL_LoadBMP(nomfichier);
rcdst.x = rand()%(640-150);
rcdst.y = rand()%(480-150);

SDL_BlitSurface(mesimages[i],NULL,screen,&);

}
SDL_Flip(screen);
waitkey();

Voilà, met ca dans ton code après l´init de SDL ( tu as dja screen je pense). Crée 15 images que tu nomme image1.bmp à image15.bmp de 150x150 et observe le résultat.

JeanYvesYves JeanYvesYves
MP
Niveau 10
11 mai 2005 à 18:50:40

boah, ma fonction waitkeyr, elle est pratique :)
mais je ne m´en sers plus des le chapitre 1.4 ou je fais une fonction UpdateEvent qui masque toute la pile d´event de SDL !

Apres, pour faire un waitkey ( pour return), il suffit de faire :

while(!Key(SDLK_RETURN))
{
UpdateEvents();
}

voila :)

Moule53 Moule53
MP
Niveau 10
11 mai 2005 à 18:51:28

Ah ouais je vois,bon je vais faire de mon mieux :)
On créer un nouveau SDL_Surface en haut avec les autres qui portera le nom que tu veux.
On déclare un nouveau Rect que l´on va nommer rect2 qui aura des coordonnés différentes du rect1,là,c´est toi qui choisis la position :-)
Ensuite, " Loader" les images correspondantes pour tes nouvelles surfaces ( au début du int main avec les autres SDL_Loadimage)
Et finalement,placer a la suite les fonctions de Blit et de Flip de l´autre qui fait apparaitre image1.bmp :ok:
Bon je procède comme ça,je trouve ça sale,donc je vais me faire tout petit et laisser les experts montrer une méthode simple et propre :-p

Vengeur41 Vengeur41
MP
Niveau 10
11 mai 2005 à 19:03:17

Déclarer des rects différents ? Pourquoi faire ? Une fois l´image blittée, le rect sert plus à rien, tu le ré-utilise ! Et voilà t´as un code tout propre...

JeanYvesYves JeanYvesYves
MP
Niveau 10
11 mai 2005 à 19:06:00

de meme - pub pour mon futils commencé - si tu regardes mon jeu de promenade, j´ai programmé une fonction " Blit" qui gere en interne des Rect, mais cependant, des que la fonction est faite, tu n´as plus du tout a créer des rect et tout :)

tu mets :

Blit(source, x1,y1,x2,y2 , dest, x3,y3)

et pan, ça marche !

dynoplasmma dynoplasmma
MP
Niveau 9
11 mai 2005 à 19:06:18

J´ai fait ca mais il n´y a que l´image 2 qui s´affiche :

  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("image1.bmp");
rect1.x = 0;
rect1.y = 0;
rect1.w = 1024;
rect1.h = 768;

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

SDL_Flip(screen);

SDL_Rect rect2;
init_SDL();
firstscreen = SDL_LoadBMP("image2.bmp");
rect1.x = 10;
rect1.y = 13;
rect1.w = 640;
rect1.h = 780;

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

SDL_Flip(screen);

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

Et pour le truc de JYY, j´ai pas pigé ? ??

JeanYvesYves JeanYvesYves
MP
Niveau 10
11 mai 2005 à 19:06:56

de meme - pub pour mon futils commencé - si tu regardes mon jeu de promenade, j´ai programmé une fonction " Blit" qui gere en interne des Rect, mais cependant, des que la fonction est faite, tu n´as plus du tout a créer des rect et tout :)

tu mets :

Blit(source, x1,y1,x2,y2 , dest, x3,y3)

et pan, ça marche !

j´ai pas encore mis en ligne la fonction surchargée ( ou plutot sous chargée)

Blit(source,dest,x,y);

plus simlpe, et permet de blitter une image entiere, et plus besoin de SDL_Rect...

Moule53 Moule53
MP
Niveau 10
11 mai 2005 à 19:07:13

Et bien on en apprends beaucoup sur ce forum :)
Je m´endormirais moins abruti ce soir :lol:

Vengeur41 Vengeur41
MP
Niveau 10
11 mai 2005 à 19:08:57

C´est normal :

  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("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 = 10;
rect1.y = 13;
rect1.w = 640;
rect1.h = 780;

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

SDL_Flip(screen);

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

Là ca doit marcher.
Et on initialise pas 2 fois la SDL !

Moule53 Moule53
MP
Niveau 10
11 mai 2005 à 19:10:02

Regarde ton code, image2 est sur rect1 au lieu de rect2,pareil quand tu définis rect2 :)

Mais bon jvais me taire pour éviter de t´induire dans l´erreur . ..

Vengeur41 Vengeur41
MP
Niveau 10
11 mai 2005 à 19:15:12

Moule > Vaut mieux...

dynoplasmma dynoplasmma
MP
Niveau 9
11 mai 2005 à 21:56:17

:merci: enormelent vengeur41, cela fonctionne, et je pourrais continuer ce que je faisait.
Sympa a vous, bon vent, et bonne nuit . ..

PS : j´ai scholl demain, vendredi : journee pedagogique : pas school, samedi dimanche : week end: pas school, lundi de pentecote, normalement ecole, mais j´y vais pas : pas school :

= WEEK END DE 4 JOURS
HOURRA, c´est la liberation des ecoles ! !!!!!!!!!!!!!!!!!!!!!!!!!
Nous sommes libres ! !!!!!!!!

Bon, sur ce, je vous dit ; A plus, et merci pour tout ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

:content:
:oui:
:cool:
:merci:
:by:

Moule53 Moule53
MP
Niveau 10
11 mai 2005 à 22:02:43

Le lundi de pentecote n´a pas été supprimé ?

Moule53 Moule53
MP
Niveau 10
11 mai 2005 à 22:03:14

Ah sorry j´avais mal lu

dynoplasmma dynoplasmma
MP
Niveau 9
12 mai 2005 à 18:52:21

Encore un truc que je n´arrive pas et que je pensais que j´allais reussir ; virer la couleur pour la rendre invisible.

Dans ce bout de code :

firstscreen = SDL_LoadBMP("image.bmp");
rect1.x = 0;
rect1.y = 332.5;
rect1.w = 1024;
rect1.h = 768;
SDL_BlitSurface(firstscreen,NULL,screen,&1);

Il faut rajouter la ligne :
SDL_SetAlpha(image,SDL_SRCALPHA,128);

Mais ou la mettre, j´ai essayé a plains d´endroits, tell que :

firstscreen = SDL_LoadBMP("image.bmp");
rect1.x = 0;
rect1.y = 332.5;
rect1.w = 1024;
rect1.h = 768;
SDL_SetAlpha(image,SDL_SRCALPHA,128);
SDL_BlitSurface(firstscreen,NULL,screen,&1);

Cela ne marche pas.

Ou alors :

firstscreen = SDL_LoadBMP("image.bmp");
SDL_SetAlpha(image,SDL_SRCALPHA,128);
rect1.x = 0;
rect1.y = 332.5;
rect1.w = 1024;
rect1.h = 768;
SDL_BlitSurface(firstscreen,NULL,screen,&1);

Aucun resultats, qui aurais la sympathie de m´indiquer la voie de la verité :svp: ?

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