Bonjour, cliquez-ici pour vous inscrire et participer au forum.
  • Login:



+ Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

Calcul de distance entre deux points sur une matrice de 13 [pour conception de jeu]

  1. MTroy

    Date d'inscription
    mars 2008
    Âge
    29
    Messages
    5

    Calcul de distance entre deux points sur une matrice de 13 [pour conception de jeu]

    Bonjour à tous,

    Avant tout je précise que ma question porte sur les matrices et les distance matricielles.

    Je m'appelle Hassan je suis bachelier en génie chimique (bien que mon problème se situe au niveau informatique)

    Je travail actuellement sur un projet de jeu par navigateur.
    Un jeu de conquêtes de territoires rapides à la troisième personne
    Et où il faut se déplacer en véhicule de guerre à travers une carte pour annexer les territoires.

    La configuration de ma carte s'apparente à une matrice de 13 sous forme de grille et avec un totale de 117 cases. La voici en image pour mieux comprendre :




    Lorsqu'un joueur part en conquête aux commandes de son bolide il doit entrer le numéro de la case de destination pour connaitre le temps de trajet.

    Mon but et de calculer la distance entre le point de départ et le point d'arrivée pour ensuite évaluer le temps de trajet et l'afficher à l'écran du joueur.

    Alors j'ai déjà beaucoup cogiter sur un calcul qui ne fonctionne qu'en suivant une indexation de coordonnées du genre A1 B2 C5 etc...

    Or je cherche à calculer cette distance entre les points uniquement à partir des deux numéros de cases.

    En me concertant avec mes testeurs il était convenu que le voyage d'un bout à l'autre de la carte devait durer 30min pour s'en tenir au règles du jeu, mais ce type de restrictions n'importe plus.

    Je remercie celles et ceux qui sauront m'éclairer.

    Whisper

    -----

    Dernière modification par MTroy ; 27/03/2008 à 22h35. Motif: erreur de frappe
     


    • Publicité



  2. Coincoin

    Date d'inscription
    octobre 2003
    Localisation
    Paris
    Âge
    32
    Messages
    16 546

    Re : Calcul de distance entre deux points sur une matrice de 13 [pour conception de jeu]

    Salut,
    Le mieux est de revenir aux numéros de lignes et de colonnes.
    Considérons les cases x et y.
    La colonne de x est x%13 où le % représente le modulo (j'utilise des notations de programmation informatique pour coller au problème). Notons la x_c : x_c=x%13.
    La ligne de x est x_l=(x-x_c)/13+1 (le +1 servant à numéroter les lignes à partir de 1 et non de 0).

    Tu fais pareil pour y : y_c=y%13 et y_l=(y-y_c)/13+1.

    Ensuite, la distance t'est donnée par la somme des différences si tu n'autorises que les déplacement horizontaux et verticaux (et pas diagonaux) : d=abs(y-c-x_c)+abs(y_l-x_l) où abs est la valeur absolue.

    Tu peux remplacer le 13 par le nombre de colonnes que tu veux.
    Encore une victoire de Canard !
     

  3. MTroy

    Date d'inscription
    mars 2008
    Âge
    29
    Messages
    5

    Re : Calcul de distance entre deux points sur une matrice de 13 [pour conception de jeu]

    merci pour cette explication , le souci c'est que j'en etais déjà arrivé à cette conclusion et avait trouver ce calcul (je travail en php) pour mon ancienne carte :

    own sector représente la case de dpéart et target sector celle d'arrivée
    (la fonction substr() sert à retourner un segment d'une chaine de caractère)

    • pour fonctionner ce calcul demande que chaque case soit indexée de la manière suivante :

    pour les lignes :
    case 1 = 2010
    case 2 = 2020
    case 3 = 2030 etc...

    pour les colonnes :
    case 1 = 1010
    case 2 = 1020
    case 3 = 1030 etc...

    le segment 10 de l'index 1020 représente donc la ligne et le segment 20 de l'index 1020 représente la colonne.

    ainsi je calcul la distance entre ces deux points en utilisant ce calcul :

    $x1a = substr($ownSector, 0, 2);
    $x2a = substr($targetSector, 0, 2);
    $y1a = substr($ownSector, 2, 2);
    $y2a = substr($targetSector, 2, 2);

    $reta = ( round(sqrt(pow(($x1a-$x2a), 2) + pow(($y1a-$y2a), 2))) ) / 2;


    le problème avec ce calcul c'est qu'il ne s'applique pas à ma nouvelle carte car elle est de configuration impaire , il faudrait une matrice de 10 pour cela
    Et je suis malheureusement contraint à n'utiliser que les deux numéros pour faire le calcul
    (pour raisons de sécurité dans le code)


    PS: j'autorise les déplacements diagonaux...
    Dernière modification par MTroy ; 27/03/2008 à 23h09.
     

  4. MTroy

    Date d'inscription
    mars 2008
    Âge
    29
    Messages
    5

    Re : Calcul de distance entre deux points sur une matrice de 13 [pour conception de jeu]

    En fait je m'excuse j'ai répondu en vitesse car je devais rapidement sortir :/

    Oui donc ca fonctionne très bien avec le modulo je n'y avais pas songer et je pense que c'est applicable aussi pour les diagonales puisque l'on est sencé mettre plus de temps et en calculant je trouve bien une valeur double.

    Un grand merci à toi Coincoin pour avoir répondu aussi vite que l'éclair

    voila je met le code en php ça pourra toujours servir à d'autres

    <?php

    // (example de cases)
    $x = 31;
    $y = 45;

    $x_c = $x%13;
    $x_l = ($x-$x_c)/13+1;

    $y_c = $y%13;
    $y_l = ($y-$y_c)/13+1;

    $d = abs($y_c-$x_c)+abs($y_l-$x_l);

    echo $d;

    ?>

    Merci encore

    MTroy
     

  5. MTroy

    Date d'inscription
    mars 2008
    Âge
    29
    Messages
    5

    Re : Calcul de distance entre deux points sur une matrice de 13 [pour conception de jeu]

    Par contre cela ne marche pas avec les points 27 et 39

    lorsque l'on veut aller d'un bout à l'autre de la carte de gauche à droite on met le meme temps que pour aller case par case....

    comment y remedier ?
     


    • Publicité



  6. MTroy

    Date d'inscription
    mars 2008
    Âge
    29
    Messages
    5

    Re : Calcul de distance entre deux points sur une matrice de 13 [pour conception de jeu]

    Up ! je cogite toujours mais je ne trouve pas d'autre solution que faire une matrice de 10 en démarrant de zero.
     


    • Publicité







Sur le même thème :





 

Discussions similaires

  1. distance de deux points sur une courbe
    Par jojos001 dans le forum Mathématiques du supérieur
    Réponses: 5
    Dernier message: 26/06/2007, 18h47
  2. Distance entre deux points
    Par surfer_ix dans le forum Mathématiques du collège et du lycée
    Réponses: 7
    Dernier message: 23/11/2006, 09h20
  3. Distance entre deux points
    Par Plasma dans le forum Mathématiques du collège et du lycée
    Réponses: 10
    Dernier message: 07/08/2006, 07h34
  4. distance entre deux points
    Par sheol dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 25/05/2005, 23h39
  5. Calcul de distance entre 2 points sur la terre..
    Par le Bosco dans le forum Mathématiques du supérieur
    Réponses: 5
    Dernier message: 07/04/2004, 14h28