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];
Était-ce utile?

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 ...»).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top