Calcul de distance avec des cases [Résolu]

cs_cyber37 111 Messages postés mardi 25 octobre 2005Date d'inscription 19 novembre 2010 Dernière intervention - 16 juin 2007 à 18:01 - Dernière réponse : tsainvet 96 Messages postés samedi 27 mars 2004Date d'inscription 14 décembre 2017 Dernière intervention
- 13 mai 2009 à 00:57
voila bonjours a tous je me demande coment on fait pour calculer la distance entre 2 "cases"

enfin je veut faire un simulateur qui dit le nombres de cases entre la premiere et la 2 eme

en gros faire genre :

case (5-100) est a X cases de la case (20,58)
quand je dit case en faite c'est une position ^^ au debut je pensais que c'etait le calcul (avec l'exemple du dessus) : (5-20)+(-100+58)
(en gros chercher la diference entre 5 et 20 puis l'aditionner a la difference entre -100 et 58

en faisant par rapport a une feuille de tableur google la formule pour trouver le nombres de cases qui les separe est :

POWER(POWER(D45-D46;2,0)+POWER(E45-E46;2,0);0,5)

je sais pas trop comment expliquer en faite mais sa revien a faire comme sur se lien :
http://ulzbug.free.fr/calculator.xls
a la case J45
Afficher la suite 

Votre réponse

3 réponses

florenth 1105 Messages postés dimanche 1 août 2004Date d'inscription 17 août 2008 Dernière intervention - 16 juin 2007 à 18:44
+3
Utile
Salut !
Mais c'est tout soimplement le théorème de Pythagore ! A condition bien sûr que toutes tes cases aient même taille et soient carrées.
Dans ce cas:

<hr size="2" width="100%" />uses
  Math;

[...]

var
  X1, X2, Y1, Y2: Integer;
  Distance: Double;
begin
  Distance := Hypot(X1 - X2, Y1 - Y2)
end;
<hr size="2" width="100%" />Avec, dans ton cas, X1 5, Y1 -100, X2 = 20, Y2 = 58

N'est-ce pas trivial ?

A++
Flo
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de florenth
cs_cyber37 111 Messages postés mardi 25 octobre 2005Date d'inscription 19 novembre 2010 Dernière intervention - 17 juin 2007 à 18:24
0
Utile
a c'est juste pythagore ! que je suis bete ^^ en plus pythagore est le truck le plus simple (a la calculette bien sur lol car pour calculer les racinecaré a la main  ....) bref donc merci pour ta reponse et je vais tester ! merci
Commenter la réponse de cs_cyber37
tsainvet 96 Messages postés samedi 27 mars 2004Date d'inscription 14 décembre 2017 Dernière intervention - 13 mai 2009 à 00:57
0
Utile
voila si cela peu aidé  je suis sur la creation  dun outils de calcule pour  un jeu de strategie en ligne ..
qui etait  tribalwars  je suis actuelement entrain de le mettre a jours pour guerre tribal  et kingAge

peu etre trouvera tu  ce que tu a besoin dans ce peti bout de code ...

(( mettre  dans la liste des uses     math))

procedure TForm1.BitBtn1Click(Sender: TObject);
 VAR
  d,vitesse: real;
  ax, ay, bx, by,temps: Extended;
  heure, minute : Extended;
  seconde : integer;


  lancier:Real;
  lancier1:string;


begin


//************ ici on met la valeur  de déplacement  de l'unité choisi
lancier:=18
 lancier1:=FloatToStr(lancier);

//************************* ici  coordonnée  village ax ay


  ax := StrToInt(Edit1.Text);  
  ay := StrToInt(Edit2.Text);

//***************************ici coordonnée village by dy


  bx := StrToInt(Edit3.Text);
  by := StrToInt(Edit4.Text);


  vitesse :=lancier;


//******************************************ici  on calcule  la distance entre les deux villages
   d := sqrt(power(ax - bx, 2) + power(ay - by, 2));


//******************************************ici on calcule  le temp de deplacement
  temps := d * vitesse;
  heure :=  temps / 60 ;
  minute := temps - (Floor(heure) * 60);
  seconde := round((temps - (Floor(heure) * 60) - Floor(minute)) * 60);


//********************************  ici on choisi la date et heure de depart et  on affiche le résulta
  
DateTimePicker3.Time := DateTimePicker2.Time + (heure / 24);
  DateTimePicker4.Date := DateTimePicker1.Date + (heure / 24);


  Edit6.Text :=  floatToStr(Floor(heure))+' h '+
                 floatToStr(Floor(minute))+' min '+
                 floatToStr(seconde)+' sec';


end;

j'espere que ça aidera 
Commenter la réponse de tsainvet

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.