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

interrogations sdl[c++]

bobtriguette32
bobtriguette32
Niveau 6
17 août 2005 à 15:20:51

bonjour tout le monde,
j´ai quelques questions sur sdl.

1.Lorsque je déplace un rectangle sur l´écran il laisse une petite trainée qui le rend flou. Est-ce possible de retirer cette trainée??

2.Comment gerer l´affichage du score?? La seule solution que j´ai trouveé c´est:

if(score == 1)
affiche image 1

if(score == 2)
affiche image 2

. ..

merci de vos réponses

Vengeur41
Vengeur41
Niveau 10
17 août 2005 à 15:32:32

C´est simple : crée 10 images de 16*16 par exemple que tu charge dans un tableau de SDL_Surface* ( nombres[] par exemple) puis tilise ma fonction :

----
/ * Affiche un entier positif ( doit pas y avoir grand chose
à mettre pour faire des negatifs mais j´en ai pas besoin) */
void drawInt(int nombre, float x, float y)
{
SDL_Rect affichenb;
int diviseur=10;
int reste_division=(int)(nombre%diviseur);
int chiffre=0;
int i=1;
int nb_chiffres=1;
int j=1;
int numero_chiffre=1;
int pos_x=0;
if(nombre > = 0 && nombre < 10)
{

affichenb.x = x;
affichenb.y = y;

SDL_BlitSurface(nombres[nombre],NULL,Screen,&
henb);
}
else
{

while ( nombre/j > 0)
{
nb_chiffres++;
j*=10;
}
nb_chiffres -= 1; // On a 1 de trop dans nb_chiffres

while(nombre ! = reste_division)
{
reste_division=(int)(nombre%diviseur);
chiffre = reste_division/i;
pos_x = nb_chiffres-numero_chiffre;

affichenb.x = pos_x*9+x;
affichenb.y = y;

SDL_BlitSurface(nombres[chiffre],NULL,Screen,&
chenb);
x+=1;

diviseur *= 10;
i*=10;
numero_chiffre++;
}
}
}

Vengeur41
Vengeur41
Niveau 10
17 août 2005 à 15:35:36

Pour la trainée il suffit d´effacer l´ecran :

SDL_FillRect(Screen, NULL, 0);

bobtriguette32
bobtriguette32
Niveau 6
17 août 2005 à 15:45:48

Ce n´est pas vraiment une trainée le problème c´est que lorsque qu´il va vite il devient flou.

Vengeur41
Vengeur41
Niveau 10
17 août 2005 à 16:05:41

Tu as un écran LCD ?

gollumkawder
gollumkawder
Niveau 10
17 août 2005 à 16:14:43

Ah parcequ´avec les LCD on a plus besoin d´implémenter de motion blur..?

Vengeur41
Vengeur41
Niveau 10
17 août 2005 à 16:35:43

Non mais ca peut etre de la rémanance tout simplement. Meme si ca fait un peu gros.
Tu peux m´envoyer le prog ici pour que je voie de quoi tu parle ? :
vengeur41 [at]
abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwx
yzabcdefghijk.com

bobtriguette32
bobtriguette32
Niveau 6
17 août 2005 à 16:58:45

donc voila j´ai un autre problème. j´ai fait une classe sprite pour m´aider a mieux gerer mes images mais le programme n´affiche pas l´image que je lui demande d´afficher pourquoi??

voici mon main:

  1. include < SDL/SDL.h>
  2. include " sprite.h"

SDL_Event event;
SDL_Surface *screen;
Uint8 *key;

void init()
{
SDL_Init(SDL_INIT_VIDEO);
screen =
SDL_SetVideoMode(800,600,32,SDL_HWSURFACE|SDL_DOUB
LEBUF);
SDL_ShowCursor(0);
}

void boucle()
{

sprite palette;
bool done = false;
palette.load("D:/graphique jeux/p1.bmp");
while(!done)
{

while(SDL_PollEvent(&))
{
key = SDL_GetKeyState(NULL);
switch(event.type)
{
case SDL_QUIT:
done = true;
}
if(key[SDLK_ESCAPE])
{
done = true;
}

}
palette.move(1,screen);

}

}

int main(int argc, char **argv )
{
init();
boucle();
return 0;
}

voici la classe sprite:

  1. define SPRITE_H
  1. include < SDL/SDL.h>

class sprite
{
private://membre privé
int x,y;
Uint8 *keys;
SDL_Rect r1;
SDL_Surface *preimage;

public://membre public

sprite()
{
keys = SDL_GetKeyState(NULL);
x = 0;
y = 0;
r1.x = 0;
r1.y = 0;
r1.w = preimage->w;
r1.h = preimage->h;
}

void load(char *fichier)//gere le chargement
{
preimage = SDL_LoadBMP(fichier);
SDL_SetColorKey(preimage, SDL_SRCCOLORKEY, SDL_MapRGB(preimage->format, 255, 0, 255));
}
void move(int speed, SDL_Surface *target)// gere le déplacement
{
if(keys[SDLK_UP])
{
if(y ! = 0)
{
y=y-1;
r1.y = y;
}
}

if(keys[SDLK_DOWN])
{
if(y ! = 600 -r1.h)
{
y=y+1;
r1.y = y;
}
}
SDL_BlitSurface(preimage,NULL,target,NULL);
SDL_Flip(target);
}

};

  1. endif

voila j´attend vos réponses

Vengeur41
Vengeur41
Niveau 10
17 août 2005 à 17:20:12

Le flip à tout bout de champs c´est très mauvais, c´est peut-etre pour ca qu´il y´a des images qui sont " zappées".
Dans ton code, flip une bonne fois pour toutes.

bobtriguette32
bobtriguette32
Niveau 6
17 août 2005 à 18:14:17

mais ma palette ne veut pas bouger quoi faire???

Vengeur41
Vengeur41
Niveau 10
17 août 2005 à 21:20:12

J´ai pas regardé le reste mais ca :

SDL_BlitSurface(preimage,NULL,target,NULL);

c´est le blit de ta palette ?

Si oui,

SDL_BlitSurface(preimage,NULL,target,&1);

Mais attention aux flip, c´est peut-etre ca qui est respondable de la trainée.

Là en gros tu reflipe toujours pour ce sprite, on est d´accord, mais imaginons qu´il y´a 100 sprites...

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