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

  FORUM HardWare.fr
  Programmation
  C++

  Aide pour jeu de voiture en c++ avec SDL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Aide pour jeu de voiture en c++ avec SDL

n°1606028
marco565
Posté le 29-08-2007 à 22:07:22  profilanswer
 

bonjour voila j'ai un probleme sur mon jeux de voiture je ne sait pas comment la faire aller dans une direction en fontion d'un angle
j'ai demendé sur le forume du site du zero comment il falait faire on ma donné comme reponce :

Citation :

Pour un angle a (exprimé en radian) :
. x,y = coordonnée de ta voiture
. d = distance a avancer
 
x += d*cos(a);
y += d*sin(a);
 
Probleme de trigonométrie :)


 
 
mais voila je ne sait pas comment m'en servir dans le code :
 

Code :
  1. void Car::aff(SDL_Surface *ecran)
  2. {
  3.     angleR = angle/(2*3.1415);
  4.     pos.x += cos(angleR) * vy;
  5.     pos.y += sin(angleR) * vx;
  6.     voiture = rotozoomSurface(car, angle, 1.0, 1);
  7.     posV.x = pos.x - voiture->w/2;
  8.     posV.y = pos.y - voiture->h/2;
  9.     SDL_FillRect(ecran, NULL, 0);
  10.     SDL_BlitSurface(voiture, NULL, ecran, &posV);
  11.     SDL_Flip(ecran);
  12. }
  13. void Car::gereTouche(SDL_Event event)
  14. {
  15.     if(event.type == SDL_KEYDOWN)
  16.     {
  17.         switch(event.key.keysym.sym)
  18.         {
  19.             case SDLK_UP: vy = 10; break;
  20.             case SDLK_DOWN: vy = -10; break;
  21.             case SDLK_LEFT: vx = 10; angle++; break;
  22.             case SDLK_RIGHT: vx = 10; angle--; break;
  23.         }
  24.     }
  25.     if(event.type == SDL_KEYUP)
  26.     {
  27.         switch(event.key.keysym.sym)
  28.         {
  29.             case SDLK_UP: vy = 0; break;
  30.             case SDLK_DOWN: vy = 0; break;
  31.             case SDLK_LEFT: vx = 0; break;
  32.             case SDLK_RIGHT: vx = 0; break;
  33.         }
  34.     }
  35. }


 
cela ne fonctionne pas la voiture par nimporte ou donc si vous avez des reponces merci de me les donner  
 
 
et merci encore

mood
Publicité
Posté le 29-08-2007 à 22:07:22  profilanswer
 

n°1606035
marco565
Posté le 29-08-2007 à 22:31:43  profilanswer
 

le probleme c'est que je ne sait pas si ce que j'ai ecris peut fontionner

n°1606045
Coladin
Posté le 29-08-2007 à 23:39:40  profilanswer
 

Code :
  1. void Car::aff(SDL_Surface *ecran)
  2.     {
  3.    
  4.        angleR = angle/(2*3.1415);
  5.    
  6.        pos.x += cos(angleR) * vy;
  7.        pos.y += sin(angleR) * vx;
  8.    
  9.        voiture = rotozoomSurface(car, angle, 1.0, 1);
  10.    
  11.        posV.x = pos.x - voiture->w/2;
  12.        posV.y = pos.y - voiture->h/2;
  13.    
  14.        SDL_FillRect(ecran, NULL, 0);
  15.        SDL_BlitSurface(voiture, NULL, ecran, &posV);
  16.        SDL_Flip(ecran);
  17.     }
  18.    
  19.     void Car::gereTouche(SDL_Event event)
  20.     {
  21.        if(event.type == SDL_KEYDOWN)
  22.        {
  23.            switch(event.key.keysym.sym)
  24.            {
  25.                case SDLK_UP: vy = 10; break;
  26.                case SDLK_DOWN: vy = -10; break;
  27.                case SDLK_LEFT: vx = 10; angle++; break;
  28.                case SDLK_RIGHT: vx = 10; angle--; break;
  29.                default:break;
  30.            }
  31.        }
  32.        if(event.type == SDL_KEYUP)
  33.        {
  34.            switch(event.key.keysym.sym)
  35.            {
  36.                case SDLK_UP:
  37.                case SDLK_DOWN:
  38.                case SDLK_LEFT:
  39.                case SDLK_RIGHT: vx = 0; break;
  40.                default:break;
  41.            }
  42.        }
  43.     }
 

Bon modifie un chouille ton deuxieme switch pas besoin de le remettre 4 fois ta remise a 0;

 

Aprés, pour ton histoire de déplacement.
Tu dois perma press up pour avancer ? et left/right pour la faire pivoter ??

 

edit: hum compris, je vai y réflechir un chouille !


Message édité par Coladin le 29-08-2007 à 23:42:29
n°1606047
Dumbledore
Posté le 29-08-2007 à 23:47:53  profilanswer
 

A priori, les fonctions cos et sin prennent des angles en radian
des fois que tu n'y aurait pas pensé...

n°1606053
marco565
Posté le 30-08-2007 à 00:39:15  profilanswer
 

ben en fait il faudrais faire comme dans un jeux de voiture en 2D mais je ne sait pas comment faire (j'aurais juste besoin pour faire tourner la voirure)

n°1606247
Amonchakai
Posté le 30-08-2007 à 12:50:04  profilanswer
 

Salut !
 
Haute moi un doute : quand tu écrit  

Code :
  1. angleR = angle / (2*3.1415)


tu veut dire "angle en radiant égal angle en degré sur 2*PI" ? Si c'est ça, ben c'est un peu faux...  
faut faire ça :

Code :
  1. angleR = angle * 3.1415f / 180.0f


vive les règles de 3 :)

n°1606268
marco565
Posté le 30-08-2007 à 13:28:02  profilanswer
 

Merci bcp sa mache


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

  Aide pour jeu de voiture en c++ avec SDL

 

Sujets relatifs
portage d'un driver windows en qnx besoin d'aide urgentaide c++ et formulaire html
demande aideAide pour la gestion du temps et des applications
aide JSTL et HibernateAide pour petit script pour IRC (débutant)
[JS] Aide pour une petite expression régulièreRésolu
A L'AIDE!!! recuperer et comparer date et heure [VBA]Besoin d'aide pour requête SQL
Plus de sujets relatifs à : Aide pour jeu de voiture en c++ avec SDL


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