IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Réalisation d'un jeu de voiture 2D


Sujet :

Algorithmes et structures de données

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 10
    Points : 10
    Points
    10
    Par défaut [Résolu] Réalisation d'un jeu de voiture 2D
    bonjour je recherche des exemples de programme ou l'on peut deplacer un objet sur le plan 2d avec comme variable a chaque instant l'acceleration vitesse et position.
    ce que je veux faire c'est en fait un jeux de voiture ou par exemple les touche UP= avance
    down = recul
    right=tourner a droite ->rotation de la voiture a droite
    left= tourner a gauche ->rotaton de la voiture a gauche



    alpha=(A,x,x1)=(A,y,y1)
    etat initial ///////////////////////////////// etat a l'instant t
    pour l'instant j'experimente mes actions sur un rectangle que j'arrive a faire tourner sur place et a faire avancer selon X et Y dans le repere generale A,X,Y

    mais je ne sais pas comment composer la rotation de la voiture et la translation de la voiture dans la direction de son repere relatif A,x1,y1 de tel maniere que losque je tourne d'un angle alpha par rapport au repere general la voiture avance selon X1

    voila si vous pouvez m'aider ce serait super

  2. #2
    Membre régulier
    Homme Profil pro
    Fabricant de ressorts - programmeur amateur
    Inscrit en
    Janvier 2003
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Fabricant de ressorts - programmeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2003
    Messages : 70
    Points : 79
    Points
    79
    Par défaut
    Si tu n'aimes pas la trigonométrie, arrete le développement tout de suite.

    Il s'agit ici d'un simple calcul trigonométrique. Il va d'abord falloir transformer ton angle de degré en radian => alpha(rad)=alpha(deg)*pi()/180

    ensuite des déplacements : on considère que V est ta vitesse par instant de calcul. xa et ya tes positions de départ et alpha l'angle (en radian) de rotation par rapport à l'axe X.
    ton point d'arrivée est donc:
    xb=xa+V*cos(alpha)
    yb=ya+V*sin(alpha)

    est-ce que ça répond à ta question?[/b]
    mac pro bi-quad néhalem (2009) (16 proc et 8Go me MeV)
    Programmation : HTML - Javascript - PHP - AJAX - CSS : niveau amateur pour l'ensemble.

  3. #3
    Membre du Club
    Inscrit en
    Juin 2003
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 62
    Points : 43
    Points
    43
    Par défaut
    Ici ce n'est d'ailleurs pas un problème de Java

  4. #4
    Membre à l'essai
    Inscrit en
    Novembre 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    je vais tester ca ce soir .
    je vous tiens au courant .

    c'est cclair c'est plutot un probleme de cinematiqeu du point

  5. #5
    Membre du Club
    Homme Profil pro
    Editeur
    Inscrit en
    Juillet 2002
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Editeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 39
    Points : 50
    Points
    50
    Par défaut
    mais alors ce n'est pas un problème d'algorithmique ?

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Août 2003
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 247
    Points : 276
    Points
    276
    Par défaut
    Pour ce genre de problème, il vaut mieux utiliser des vecteur pour représenter l'état d'un objet. Cette représentation est très proche du monde physique. Il est donc très facile d'appliqué une force à un objet (on additionne le vecteur force au vecteur de l'objet) et l'accélération coule de source, il n'y a pas besoins de la programmer, elle se produit spontanément.

  7. #7
    Membre à l'essai
    Inscrit en
    Novembre 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    ca marche pas mal

    j'appuie sur up -> ca avance
    down -> ca recule
    right -> ca tourne a droite
    left-> ca tourne a gauche

    tout se passe bien seulement le probleme reste lorsque ke j'appuie sur UP + Right ->impossible c'est soit l'un soit l'autre...
    j'ai essayé de mettre genre dans

    public synchronized void keyPressed(KeyEvent e)

    la condition

    else if( (e.getKeyCode() == KeyEvent.VK_UP)&&(e.getKeyCode() == KeyEvent.VK_RIGHT))
    {
    compostion de la translation et de la rotation
    }

    mais ca ne marche pas..
    Est ce qu'e quelqu'un a une idee...?

    PS: au fait pourquoi mon message est il dans cette section???

  8. #8
    Membre régulier
    Homme Profil pro
    Fabricant de ressorts - programmeur amateur
    Inscrit en
    Janvier 2003
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Fabricant de ressorts - programmeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2003
    Messages : 70
    Points : 79
    Points
    79
    Par défaut
    là, je répondrais que ça correspond plus à un problème de physique du clavier.
    Il doit y avoir des touches qui sont prioritaires sur d'autres, c'est peut-être la raison pour laquelle beaucoup de jeux préfèrent le pavé numérique pour les déplacements. (7 combinaison de 4 et 8 )(9 combinaison de 6 et 8 ) (5 stop) etc...

    pour le déplacement de section (j'y suis pour rien) mais ça correspond plus à un problème algorythmique qu'au java pur.
    mac pro bi-quad néhalem (2009) (16 proc et 8Go me MeV)
    Programmation : HTML - Javascript - PHP - AJAX - CSS : niveau amateur pour l'ensemble.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    [quote="gege2mars"]else if( (e.getKeyCode() == KeyEvent.VK_UP)&&(e.getKeyCode() == KeyEvent.VK_RIGHT))[quote]Hm, regarde ta condition... C'est moi ou une même fonction peut pas rendre deux résultats différents ?
    Là il y a effectivement un problème :GetKeyCode te revoie ou VK_UP ou VK_RIGHT, mais ça peut pas être égal aux deux en même temps. Pour détecter l'appui sur les deux touches à la fois, ça va être coton oO

    Bon courage, quand même. A défaut de t'avoir aidé j'ai mis le doigt sur l'erreur. Je connais encore trop peu le Java pour te donner plus d'indications.

    -Wintermute

  10. #10
    Membre à l'essai
    Inscrit en
    Novembre 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    j'ai refléchi et en fait la meilleur solution est de faire un thread sur la fonction rouler qu'on active lorsqu'on "press" up et k'on qu'on arrete lorsqu'on on "release" up

    merci a tous pour m'avoir aider

  11. #11
    tintin22
    Invité(e)
    Par défaut
    Je pense que y a mieux que les Threads, c'est d'utiliser des booléens
    si UP pressé alors UpPresse = Vrai
    si Down pressé alors DownPresse = Vrai
    ...et ainsi de suite pour les autres touches
    ne pas oublier de faire le contraire , c'est-à-dire
    si Up relaché alors UpPresse = faux
    ....
    ensuite tu fais
    si UpPress alors Avancer
    si UpDown alors Reculer
    .....
    Voilà, j'espère que ça marche !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 13/06/2007, 11h01
  2. Collision dans un jeu de voiture
    Par japle dans le forum Physique
    Réponses: 5
    Dernier message: 21/07/2006, 14h33
  3. Réalisation d'un jeu Mastermind
    Par cybercom dans le forum Pascal
    Réponses: 43
    Dernier message: 14/05/2006, 20h11
  4. [3D][Jeu]Réalisation d'un jeu avec java3D
    Par Janitrix dans le forum 3D
    Réponses: 2
    Dernier message: 22/04/2006, 23h22
  5. Jeu de voiture
    Par lucyole dans le forum Assembleur
    Réponses: 10
    Dernier message: 15/05/2005, 18h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo