È più efficace di includere una funzione di “posizione di controllo” in una “funzione mossa” per un gioco, o al di fuori come una funzione esterna?

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

Domanda

Sto creando un gioco in C ++ (a proposito, fa il codice che uso importa?), Che scovare essere vagamente descritto come un gioco da tavolo, e mi chiedo quale di questi due "controllare se il carattere è fuori dai limiti" funzioni è più efficiente:

ONE:

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

DUE

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

In sostanza, il primo si muove ogni entità, quindi controlla tutte le posizioni entità e li ripristina di conseguenza, e il secondo fa in modo che i giocatori si muovono non lo sposta fuori dai limiti, reather che aspettare fino alla fine del loop.

Mi piacerebbe sapere quale di questi due sistemi (?) È più efficiente o più veloce rispetto agli altri, o, se sono entrambi uguali, che uno di questi sarebbe un migliore stile di codifica?

È stato utile?

Soluzione

Vorrei fare in modo che mai si muovono è legale prima di spostarlo. In questo modo si mantiene uno stato sano di mente, invece di cercare qualcosa e lasciando il "board" in uno stato non valido. Ma rende anche più senso in modo orientato agli oggetti. L'oggetto non può fare una mossa non valida quindi la mossa può essere attendibile.

Altri suggerimenti

Il secondo è più veloce (non fare e disfare). Vorrei anche che è il più pulito, ma questa è una questione di opinione.

Controllo prima di trasferirsi sarebbe più veloce, risparmio, suppongo, le probabilità di una persona di uscire dai limiti essere notevolmente basso.

Per quanto riguarda lo stile, vi consiglio di non il controllo dei confini dall'interno il metodo Move (), anche se tale verifica viene estratta in un proprio metodo, come che ti dà due "ragioni per cambiare" la mossa () metodo su tutta la linea (rompendo così Responsabilità singolo , alcune persone fanno rispettare solo questo a classe livello, ma mi raccomando per i metodi quando si può ottenere via con esso).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top