É mais eficiente incluir uma função "Localização de verificação" em uma função "Mover" para um jogo ou fora como uma função externa?

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

Pergunta

Estou criando um jogo em C ++ (falando nisso, o código que eu uso importa?), Qual é o que é frouxamente descrito como um jogo de tabuleiro, e estou me perguntando qual desses dois "verifique se o personagem está fora dos limites" Funções é mais eficiente:

1:

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

DOIS

//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
}

Essencialmente, o primeiro move todas as entidades, depois verifica todas as entidades posiciona e as redefine de acordo, e a segunda garante que os jogadores se movam não o tirem dos limites, o que espera até o final do loop.

Eu gostaria de saber qual desses dois sistemas?) É mais eficiente ou mais rápido que o outro, ou, se ambos são iguais, qual deles seria um estilo de codificação melhor?

Foi útil?

Solução

Eu me certificaria de que sempre se mova seja legal antes de movê -lo. Dessa forma, você mantém um estado são em vez de tentar algo e deixar o "quadro" em um estado inválido. Também faz mais sentido de maneira orientada a objetos. O objeto não pode fazer um movimento inválido, portanto, a mudança pode ser confiável.

Outras dicas

O último é mais rápido (não está fazendo e desfazendo). Eu também pensaria que é o mais limpo, mas isso é uma questão de opinião.

Verificar antes de se mover seria mais rápido, exceto, suponho, as chances de uma pessoa sair dos limites sendo notavelmente baixa.

Sobre estilo, eu recomendo não Verificando os limites do método move (), mesmo que essa verificação seja extraída em seu próprio método, pois isso fornece duas "razões para alterar" o método move () na linha (assim quebrando assim Responsabilidade única; Algumas pessoas apenas aplicam isso no nível da aula, mas eu o recomendo para métodos quando você pode se safar).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top