문제

두 개의 변수 (xspeed 및 yspeed)가있는 공통된 상황을 가지고 있으며 inspeed 아래에서 떨어지면 0으로 독립적으로 설정하고 0을 모두 종료합니다.

가장 효율적인 방법은 무엇입니까?현재 두 가지 방법 (방법 2가 클리너 임)이 있지만, 나는 당신이 더 나은 길을 알고 있는지 궁금해하고있었습니다 ....

Method1:

bool isZeroX = Math.abs(xSpeed)< minSpeed;
bool isZeroY = Math.abs(ySpeed)< minSpeed;

if(isZeroX && isZeroY) return -1;
else if(isZeroX) xSpeed = 0;
else if(isZeroY) ySpeed = 0;
.

Method2:

if(Math.abs(xSpeed)< minSpeed) xSpeed = 0;
if(Math.abs(ySpeed)< minSpeed) ySpeed = 0;
if(ySpeed==0 && xSpeed==0) return -1;
.

도움이 되었습니까?

해결책

할 수 있습니다

if(-minSpread < xSpeed && xSpeed < minSpeed) {
    xSpeed = 0;
    if(-minSpread < ySpeed && ySpeed < minSpeed) {
        ySpeed = 0;
        return -1;
    }
} else if(-minSpread < ySpeed && ySpeed < minSpeed) {
    ySpeed = 0;
}
.

다른 팁

나는 그것이 가장 읽기 쉽기 때문에 두 번째 예를 선호합니다.최적화해야합니다.

객체가 이동 / 중지되었는지 확인하는 우아한 부울 메소드를 만듭니다.

boolean isStopped() {
    if(Math.abs(xSpeed)< minSpeed) xSpeed = 0;
    if(Math.abs(ySpeed)< minSpeed) ySpeed = 0;

    return (ySpeed==0 && xSpeed==0);
}
.

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