Est-il plus efficace d'inclure une fonction « vérification de l'emplacement » dans une « fonction de déplacement » pour un jeu, ou à l'extérieur comme une fonction externe?

StackOverflow https://stackoverflow.com/questions/958060

Question

Je crée un jeu en C ++ (parlant de ça, fait le code que j'utilise la matière?), Qui coudl être vaguement décrit comme un jeu de société, et je me demande qui de ces deux « vérifier si le caractère est hors des limites » fonctions est plus efficace:

UN:

int main()
{
    //display board
    //get player input
    //move player
    //if player is out of bounds,
      //force player back into bounds
}

DEUX

//int main()
{
    //same thing, except without last two lines.
}
void move(char input)
{
    //if input does not place player out of bounds
      //move player according to input
}

Pour l'essentiel, le premier se déplace chaque entité, puis vérifie toutes les positions des entités et les remet à zéro en conséquence, et le second assure que les joueurs se déplacent ne le déplace pas en dehors des limites, reather que d'attendre jusqu'à la fin de la boucle.

Je voudrais savoir lequel de ces deux systèmes (?) Est plus efficace ou plus rapide que l'autre, ou, si elles sont toutes deux égales, dont l'un d'entre eux serait un meilleur style de codage?

Était-ce utile?

La solution

Je veillerais que jamais déplacer est légal avant de le déplacer. De cette façon, vous garder un état sain d'esprit au lieu d'essayer quelque chose et de quitter le « conseil » dans un état non valide. Il est aussi plus judicieux d'une manière orientée objet. L'objet ne peut pas faire un mouvement invalide donc le déménagement peut faire confiance.

Autres conseils

Ce dernier est plus rapide (Ne pas le faire et défaire). Je pense aussi qu'il est plus propre, mais c'est une question d'opinion.

Vérification avant de passer serait plus rapide, économiser, je suppose, les chances d'une personne de sortir des limites étant remarquablement faible.

En ce qui concerne le style, je vous recommande pas vérifier les limites de l'intérieur de la méthode move (), même si le chèque est extrait dans sa propre méthode, comme cela vous donne deux « raisons de changer » le mouvement méthode () la ligne (brisant ainsi de responsabilité unique, certaines personnes appliquent ce phénomène à la classe niveau, mais je le recommande pour les méthodes quand vous pouvez sortir avec elle).

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