Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
845 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Problème de Rebond sur un filet

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème de Rebond sur un filet

n°2258213
chidori113
Posté le 16-05-2015 à 19:00:02  profilanswer
 

Bonjour tout le monde,
 
Je suis en train de programmer un slime volley en C et je me trouve confronté à 2 problèmes:
 
- J'ai dû mal à faire rebondir la balle contre le filet au milieu. Les conditions de contact sont similaires pour les côtés et le haut du filet, ce qui me donne un résultat assez horrible quand je run.
 

Code :
  1. void RebondirFilet ( BALLE in, BALLE* out,  int fx, int fy, int L)
  2. {
  3.    int x = in.posballex;
  4.    int y = in.posballey;
  5.    int vy= in.vitesseballey;
  6.    int vx= in.vitesseballex;
  7. //Rebond sur le haut
  8.     if ( (y>=fy) && (x>=fx) && (x<=fx+L))
  9.     {
  10.         out->vitesseballey=- vy;
  11.         out->posballey= 620;
  12.     }
  13. Rebond à gauche/droite
  14.    if  ((y>=fy) && (x>=fx-20)&& (x<fx+L) )
  15.    {
  16.       out->vitesseballex = - vx ;
  17.       out->posballex     = x+fx-20 ;
  18.   }


 
pour le rebond à gauche et à droite les conditions sont les mêmes mais les sorties sont différentes, ce qui donne un gros n'importe quoi.
 
 
Ensuite j'ai quelques problèmes pour les rebonds sur les demi cercles. Il y a énormément de topics là dessus mais j'ai des problèmes pour inclure des angles et des dérivées dans mon code (Je bosse en FLTK il me semble, et je ne peux pas changer) J'ai tenté beaucoup de choses en intégrant des fonctions mathématiques à mon code mais rien ne marche.
 

Code :
  1. void Rebondirj1( BALLE in, BALLE* out, JOUEUR jin, JOUEUR* jout)
  2. {
  3. float y = in.posballey;
  4. float x = in.posballex;
  5. float vx = in.vitesseballex;
  6. float vy = in.vitesseballey;
  7. float jx = jin.posx;
  8. float jy = jin.posy;
  9.     if(   sqrt (  (x - jx )*(x - jx )   +  (y - jy)*(y - jy)  )  <=   90 )   //  Si contact
  10.     {
  11.             if ( ( x > (jx - 20) ) && (x < (jx + 20) ) )   //   Si balle au centre
  12.             {
  13.              out -> vitesseballey = -  vy ;
  14.              out -> posballey = jy-90;
  15.             }
  16.             if (x >= (jx + 20) )   //  Si balle à droite
  17.             {
  18.                 out -> vitesseballey = -  vy ;
  19.                 out -> posballey = jy-90;
  20.                 out -> vitesseballex = vx +5;
  21.             }
  22.       if  (x <= (jx-20 ) ) ;   //  Si balle à gauche
  23.            {
  24.            out -> vitesseballey = -  vy ;
  25.            out -> vitesseballex = -5;
  26.             }


 
Du coup je me suis contenté de ça, mais vous avez bien compris que c'est loin d'être suffisant, la balle atterri toujours au même endroit
 
Merci de votre aide

mood
Publicité
Posté le 16-05-2015 à 19:00:02  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Problème de Rebond sur un filet

 

Sujets relatifs
[Arduino] Problème réception GPSProbleme exercice de Langage machine
[Arduino] Probleme de code pour controler 2 servomoteursAda Calendar.Formatting.Image : problème : solvé.
Petit Qcm et petit problèmeProblème Eclipse Metrics Java
[résolu] Problème de récupération d'une valeur en BDDProblème de macro et d'importation d'un fichier Word
Problème script enregistrement / tranfertProblème de non-compilation
Plus de sujets relatifs à : Problème de Rebond sur un filet


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR