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

J´aide les personne en C/C++

Kilik_killer
Kilik_killer
Niveau 7
25 janvier 2005 à 20:50:38

inconnu aussi merci, je vais lui passer les 2

expert2424
expert2424
Niveau 8
25 janvier 2005 à 21:13:46

merci bon comme je passe rapide je peux pas trop réfléchir enfin bref :merci:

flo-olf
flo-olf
Niveau 1
25 janvier 2005 à 21:43:41

Est ce que quelqu´un peut m´aider à comprendre comment on fait pour la souris avec SDL?
Je m´explique : je lisais les tutos de JYY ( qui au passage sont très bien pour les débutants comme moi, merci JYY) et pour le scrolling a la souris, j´ai pas tout capté! J´essai de faire bouger une souris sur mon écran et j´y arrive pas:

  1. include < SDL/SDL.h>

SDL_Surface* screen;
SDL_Surface* firstscreen;
SDL_Event event;
SDL_Cursor *cursor;

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

void keymouse()
{
while(1)
{
while(SDL_PollEvent(&))
{
if ( event.type == SDL_MOUSEMOTION)
{ event.motion.xrel++; event.motion.yrel++;
}
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("table.bmp");

rect1.x = 256;
rect1.y = 0;
rect1.w = 1024;
rect1.h = 768;
SDL_BlitSurface(firstscreen,NULL,screen,&1);
SDL_Flip(screen);
keymouse();
SDL_Quit();
return 0;
}

En compilant, j´ai un fond d´écran et une souris mais elle bouge pas.
Please help me!

JeanYvesYves
JeanYvesYves
Niveau 10
25 janvier 2005 à 21:49:28

la souris ne bouge pas ?
déja il faut essayer de voir :
je n´aime pas ta ligne :

{ event.motion.xrel++; event.motion.yrel++; }

tu essaies d´augmenter les positions relatives de la souris : essaie de ne pas écrire dans ces champs.
regarde la structure :

http://sdldoc.csn.ul.ie/sdlmousemotionevent.php

tu as, dedans, xrel et yrel : qui sont les positions relatives par rapport a la frame d´avant : donc ça peut valoir -1 comme -2 comme +1 ou +2

si tu veux la position de la souris, regarde plutot les champs x et y.

JeanYvesYves
JeanYvesYves
Niveau 10
25 janvier 2005 à 21:51:48

cependant, je comprends pkoi la souris ne bouge meme pas ( alros qu´elle devrait bouger)

regarde : tu vas dans ta fonction keymouse, et tu n´en sors jamais !

donc tu ne flip pas en boucle...
des qu´il y a un event, tu modifies juste tes xrel et yrel et tu n´affiches rien, tu ne fais rien d´autre :)

sache qu´il faut toujours boucler !

flo-olf
flo-olf
Niveau 1
25 janvier 2005 à 22:14:53

merci pour le bouclage, mais je comprends tjs pas pour la souris, elle ne bouge pas. comment programme t on le déplacement?

  1. include < SDL/SDL.h>

SDL_Surface* screen;
SDL_Surface* firstscreen;
SDL_Event event; SDL_Cursor *cursor;

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

void keymouse()
{
if ( SDL_PollEvent(&))
{
if ( event.type == SDL_MOUSEMOTION)
{

}

}
}

int main(int argc , char **argv)
{
SDL_Rect rect1;
init_SDL();
firstscreen = SDL_LoadBMP("table.bmp");
rect1.x = 256;
rect1.y = 0;
rect1.w = 1024;
rect1.h = 768;
while ( 1)
{
keymouse();
SDL_PollEvent(&);
if ( event.type == SDL_KEYDOWN && event.key.keysym.sym == SDLK_RETURN)
break;
SDL_BlitSurface(firstscreen,NULL,screen,&1);
SDL_Flip(screen);
}
SDL_Quit();
return 0;
}

J´ai l´impression que la souris clignote.

JeanYvesYves
JeanYvesYves
Niveau 10
25 janvier 2005 à 22:26:21

essaie, sans utiliser ton SDL_SetCursor(cursor);
auquel tu passes une valeur indéfinie.
ta souris ne bouge pas du tout et elle clignote ?

pouquoi rect1.x = 256; ? ?

flo-olf
flo-olf
Niveau 1
25 janvier 2005 à 22:34:22

sans utiliser SDL_SetCursor(cursor); je n´ai plus du tout le curseur. Comment ca " une valeur indefini"?

Sinon, rect1.x = 256; c´est juste parce que j´ai mis une image768*768 et que je voulais quelle soit a droite.

JeanYvesYves
JeanYvesYves
Niveau 10
25 janvier 2005 à 22:41:31

ça y´est, je sais :

le SDL_ShowCursor(1); n´a rien a faire dans l´init :)

cette fonction affiche le curseur sur screen
donc il faut la mettre dans la boucle, juste avant le flip()

essaie :)

JeanYvesYves
JeanYvesYves
Niveau 10
25 janvier 2005 à 22:44:23

arg ! ! erreur de ma part :
pas le SDL_showcursor
mais le SDL_setcursor :) juste avant le flip !

et tu peux meme mettre

SDL_setcursor(NULL);

car comme je te disais, tu utilises un cursor qui n´a pas de valeur définie : tu ne lui a pas donné de valeur par défaut :)

flo-olf
flo-olf
Niveau 1
25 janvier 2005 à 22:49:48

:ok: effectivement le curseur bouge maintenant mais je le vois que à gauche là où il n´y a pas mon image( sur le fond noir où d´ailleurs le passage du curseur ne s´efface pas!).
Je vais essayer de comprendre pourquoi. Si tu le sais n´hésites pas à me le dire. :merci:

flo-olf
flo-olf
Niveau 1
25 janvier 2005 à 22:56:12

OK pour le deuxième message(Posté le 25 janvier 2005 à 22:44:23). Ca marche!!!!!
Merci beaucoup.

JeanYvesYves
JeanYvesYves
Niveau 10
25 janvier 2005 à 22:56:35

je parie que tu as fait :

setcursor
blit
flip

dans cet ordre :

tu lui dis donc d´afficher la souris, puis d´afficher l´image, puis de " valider"
donc si ta souris est sous l´image, alors il affiche la souris, il affiche l´image par dessus, ce qui écrase ta souris, et il flip :)
tu vois pkoi donc, la souris ne s´affiche pas par dessus :
pour remédier : met le setcursor APRES le blit

ensuite, poue la partie noire : c´est juste qu´elle n´est pas redessinée :
en doublebuffer, tu as 2 images qui sont échangées a chaque flip
pour ne pas gacher de temps, l´image récupérée n´est pas effacée :
donc tu récuperes ton image d´avant, mais pas noire ! pas vierge :) donc il y a déja le dessin du curseur dessus.
ça " clignotte" parce que sur l´autre image du double buffer, elle est legerement décalée.

2 solutions :
- soit tu effaces entierement ton image avant de dessiner ( déconseillé car long : y´a quand meme 1 millions de pixels ! !)
- soit tu t´arranges pour blitter sur tout l´écran, comme ça, tu effaces intégralement l´image d´avant :) ( c´est ce qui est fait dans tous les jeux 2D : tout est redessiné a chaque fois :) )

JeanYvesYves
JeanYvesYves
Niveau 10
25 janvier 2005 à 22:58:10

ok :) dans mon message précédent, je répondais au message de 22:49:48 :)
donc si ça marche, tant mieux :) le blabla que je t´ai mis parle aussi de " comment fonctionne SDL" pour bien le cerner :)

fuzzy_eyebrow
fuzzy_eyebrow
Niveau 9
25 janvier 2005 à 23:04:10

ah ah! :salut:

JeanYvesYves
JeanYvesYves
Niveau 10
25 janvier 2005 à 23:07:13

salut fuzzy_eyebrow ! :)

flo-olf
flo-olf
Niveau 1
25 janvier 2005 à 23:07:42

:merci: pour tout. Je reviendrais sûrement t´embêter. En tout cas c´est sympas de nous aider les débutants. A plus

fuzzy_eyebrow
fuzzy_eyebrow
Niveau 9
25 janvier 2005 à 23:08:57

salut gamin!
J2Yves > > attend je remonte mon topic

Koyo-K
Koyo-K
Niveau 9
25 janvier 2005 à 23:16:24

lol comment il ose appeler JYY :nonnon:

Koyo-K
Koyo-K
Niveau 9
25 janvier 2005 à 23:17:02

Ca fait longtemps que vous vous connaissez ?

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