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

aide SDL et C

renegada
renegada
Niveau 6
05 août 2005 à 12:21:43

Voila bonour tout le monde, je suis entrain d´explorer les possibilités de la lib SDL.
je previens de suite je suis un nul mais motivé!!
j´avais fais une boule qui rebondissait aux 4 coins de la fenetre ca a marché puis j´ai changé et sa marche plus fenetre noire, et là j´ai besoin d´aide...

je mets le code source:

/ *main.c*/

  1. include " fichier.h"
  2. include " fenetre_SDL.h"
  3. include " commande_clavier.h"

int
main ( int argc, char *argv[])
{ / *-------------déclaration de variable--------------*/
/ /les rectangles
SDL_Rect spboule;
/ /les surfaces
SDL_Surface *imageloaded;
/ /les integers
Uint8 done=0;
/ /les integers signés
int sensx = ( 1);
int sensy = 1;

/*------------------------------------------------

  • /

/ * on initialise la fenetre SDL avec la fonction de fenetre_SDL*/
init_SDL();

/ *je definis les dimensions de mon sprite boule 32x32 */
spboule.w = 32;
spboule.h = 32;
spboule.x = 200;
spboule.y = 200;
/ *je charge l´image de la boule dans une surface*/
imageloaded = SDL_LoadBMP("BOULE.BMP");

/ *boucle principale du programme*/

while ( done=1){
/ *pour faire avancé la boule j´incremente de sensx et y ses coordonnés*/
spboule.x= ( spboule.x) + sensx ; spboule.y = ( spboule.y) + sensy ;
/ *puis j´applique la surface de la boule avec ses parametres*/

SDL_BlitSurface(imageloaded,&,screen,&
le);
SDL_Flip ( screen);
if ( spboule.x == 608) {sensx= -1 ; }
if ( spboule.x == 0 ) {sensx= 1;}
if ( spboule.y ==448) {sensy= -1;}
if ( spboule.y == 0) {sensy= 1;}

SDL_Delay ( 1);

clavier();

SDL_Flip ( screen);
}

return 0;
}

/ * fenetre_SDL.c*/
/ /initialisation d´une fenetre SDL

  1. include " fichier.h"

int init_SDL ( )

{

if ( SDL_Init ( SDL_INIT_VIDEO) < 0)
{
exit ( 1);
}

atexit ( SDL_Quit);

screen = SDL_SetVideoMode ( 640, 480, 32, SDL_SWSURFACE | SDL_DOUBLEBUF);

SDL_WM_SetCaption ( "fenetre SDL de Maxence", NULL);

return 0;
}
/ * le commande_clavier.c*/

  1. include " fichier.h"

void clavier()
{

SDL_Event event;
/ / Traitement des commandes
while(SDL_PollEvent(&))
{
/ / Type d´évènement
switch(event.type)
{
case SDL_QUIT:
exit(0);

default: break;
}
}
}
/ ---------------------------------------/

Voila je compte sur vous!!!!

renegada
renegada
Niveau 6
05 août 2005 à 13:17:05

ca vous laisse perplexe aous aussi, mais si vous remarqué des lignes malhabiles je vous en pris repondez moi....

JeanYvesYves
JeanYvesYves
Niveau 10
05 août 2005 à 14:17:03

si tu me disais ce que tu as changé . .. ? :)

renegada
renegada
Niveau 6
05 août 2005 à 14:28:26

C´est bon j´ai trouvé pourquoi mais je comprend pas mieux.

j´ai repris

SDL_BlitSurface(imageloaded,&,screen,&

le);
et j´ai mis null en deuxieme parametre et ca marche a quoi il correspond... impossible de trouver

JeanYvesYves
JeanYvesYves
Niveau 10
05 août 2005 à 14:32:03

Le 2e parametre, c´est le cadre de l´image source :

si tu mets NULL, tu copies toute l´image source : par exemple, pour la balle, tu copies/colle toute la balle sur l´écran :)
si tu ne mets pas NULL, alors il faut remplir une structure rectangle qui te servira a copier une partie seulement de l´image source sur l´écran.
Par exemple, si tu voulais afficher une demi balle...

renegada
renegada
Niveau 6
05 août 2005 à 14:37:18

donc si je comprend bien, dans mon cas c´est pour le cadre de " imageloaded" image BMP chargé plus haut!

Grand Merci je commence a y voir plus clair.

JeanYvesYves
JeanYvesYves
Niveau 10
05 août 2005 à 14:44:54

bien sur !

regarde, je t´explique mieux tno soucis :
tu mets :
x = 200
y = 200
w = 32
h = 32

et tu demandes ce cadre pour la destination : en sachant que pour la destination, il ne regarde que x,y : donc il y posera a 200,200 : pas de soucis
mais pour la source : il faut un cadre différent si tu veux copier une partie de l´image :
Et ce cadre, tu lui dis de commencer a 200,200 et de faire 32,32 de large.
or ton image fait que 32*32 pixels, donc quand tu lui demandes le pixel 200,200 : tu es completement dehors ! !
c´est pour cela que ton image ne s´affiche pas !

dans ton cas, tu copies toute l´image, donc tu mets cadre source = NULL et c´est bon.

renegada
renegada
Niveau 6
05 août 2005 à 14:53:18

Je te remercie encore pour toutes ces précisions, et de t´être appuyé sur mon problème.

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