게임의 '이동 기능'에 '위치 확인' 기능을 포함하는 것이 더 효율적인가요, 아니면 외부 기능으로 외부에 포함하는 것이 더 효율적인가요?

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

문제

저는 C++로 게임을 만들고 있는데(말하자면, 제가 사용하는 코드가 중요합니까?), 이 게임은 느슨하게 보드 게임이라고 설명할 수 있는데, 이 두 가지 중 "문자가 범위를 벗어났는지 확인"하는 것이 무엇인지 궁금합니다. 기능이 더 효율적입니다.

하나:

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

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

기본적으로 첫 번째는 모든 엔터티를 이동한 다음 모든 엔터티 위치를 확인하고 그에 따라 재설정하고, 두 번째는 루프가 끝날 때까지 기다리지 않고 플레이어가 움직여 경계 밖으로 이동하지 않도록 합니다.

이 두 가지(시스템?) 중 어느 것이 다른 것보다 더 효율적이거나 빠른지, 또는 둘 다 동일하다면 어느 것이 더 나은 코딩 스타일이 될지 알고 싶습니다.

도움이 되었습니까?

해결책

나는 움직이기 전에 움직이는 것이 합법적인지 확인할 것입니다. 그렇게하면 무언가를 시도하고 무효 상태에 "보드"를 남기지 않고 제정신 상태를 유지합니다. 또한 객체 지향 방식으로 더 의미가 있습니다. 객체는 유효하지 않은 움직임을 만들 수 없으므로 이동을 신뢰할 수 있습니다.

다른 팁

후자가 더 빠릅니다(실행 취소 및 실행 취소 안 함).나는 또한 그것이 더 깨끗하다고 ​​생각하지만 그것은 의견의 문제입니다.

이사하기 전에 점검하는 것이 더 빨라질 것입니다. 저장하십시오. 한계를 벗어나는 사람의 확률은 현저하게 낮습니다.

스타일과 관련하여 권장합니다 ~ 아니다 Move () 메소드 내에서 경계를 확인하는 경우, 확인이 자체 메소드로 추출 되더라도 Move () 메소드를 선 아래로 내리는 두 가지 "변경 이유"를 제공하므로 단일 책임; 어떤 사람들은 수업 수준에서만 이것을 시행하지만, 당신이 그것을 멀리 할 수있는 방법에 대해서는 권장합니다).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top