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

probleme de collision c++ SDL

BigGamer95
BigGamer95
Niveau 10
14 avril 2006 à 19:13:07

:salut:

j´ai repris les cours de la SDL, et j´ai un petit probleme pour la collision de 2 rectangle

la fonction

int Collision(SDL_Rect rect,SDL_Rect brique,int briqueON) {
if (rect.x <= brique.x+75 &&
brique.x <= rect.x+110 &&
rect.y <= brique.y+26 &&
brique.y <= rect.y+103 )
{
briqueON=0;
}
else briqueON=1; };

puis dans le main (enfin dans le while du main)

Collision (rect1,brique1,briqueON1);
if (briqueON1==1) {
brique1.x = 400;
brique1.y = 50;
SDL_BlitSurface(brique,NULL,screen,&brique1); }
else { brique1.x = -100;
brique1.y = -100; }

ca marche pas, je cherche encore
pas de message d´erreur, mais les 2 rectangle se passe a travers sans rien faire
j´ai l´impression que la fonction n´est pas meme lancé car si je met juste briqueON1=0; dans la fonction, ca change rien

:merci: de votre aide (ca doit etre un truc tout con en plus :´( )

:bye:

Lapintade
Lapintade
Niveau 30
14 avril 2006 à 20:25:32

briqueON1 ne passera jamais a "1", tu as fais un passage de parametre par valeur (donc la valeur est recopié pour etre passée a la fonction et ensuite c´est perdu).

Fait plutot

int collision(rect)
{
return 0 ou 1 suivant le resultat.
}

et dans main :

briqueON1 = collision(rect);

BigGamer95
BigGamer95
Niveau 10
14 avril 2006 à 22:10:00

oki :merci: je vais faire ca

JeanYvesYves
JeanYvesYves
Niveau 10
15 avril 2006 à 13:40:06

Ou alors passe la par référence :
int Collision(SDL_Rect rect,SDL_Rect brique,int& briqueON)

Mais il vaut mieux faire comme te dit Lapintade, car la, tu dois aussi te prendre un warning : la fonction retourne un int, et tu n´as pas mis de return

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