C++:La “Distance” entre 2 coordonnées dans un tableau 2D
-
21-12-2019 - |
Question
Pour un jeu que je suis en train d'écrire j'ai besoin de trouver un entier de valeur pour la distance entre les deux ensembles de coordonnées.C'est un Tableau 2D qui détient les différentes cartes.(Comme l'original de zelda).Le plus vous vous éloignez du centre (5,5) plus le nombre est élevé devrait être en raison de la difficulté des ennemis augmente.Idéalement, il devrait être entre 0 et 14.L' tableau est 11x11.
Maintenant, j'ai essayé d'utiliser la pythagore la formule que je me souviens de lycée, mais c'est crachent débordement de numéros.Je ne peux pas comprendre pourquoi.
srand(rand());
int distance=sqrt(pow((5-worldx), 2)-pow((5-worldy), 2));
if(distance<0) //alternative to abs()
{
distance+=(distance * 2);
}
if(distance>13)
{
distance=13;
}
int rnd=rand()%(distance+1);
Monster testmonster = monsters[rnd];
La solution
srand(rand());
ne fait pas de sens, elle doit être srand(time(NULL));
ne pas utiliser de pow
pour le carré, il suffit d'utiliser x*x
votre formule est également erroné, vous devez ajouter un numéro de concert pas moins
sqrt
de retour double
et jeté à l' int
arrondir vers le bas
je pense sqrt
retournez toujours un nombre positif
vous savez abs
il existe de droite?pourquoi ne pas l'utiliser?aussi distance = -distance
est mieux que distance+=(distance * 2)
srand(time(NULL));
int dx = 5 - worldx;
int dy = 5 - worldy;
int distance=sqrt(dx * dx + dy * dy);
if(distance>13)
{
distance=13;
}
int rnd=rand()%(distance+1);
Monster testmonster = monsters[rnd];
Autres conseils
C'est un ^ 2 + b ^ 2= c ^ 2, pas moins.Une fois que vous avez appelé SQRT avec un argument négatif, vous êtes seul.
Vous soustrayez des carrés à l'intérieur de votre racine carrée, au lieu de les ajouter («...- pow ...»).