سؤال

لقد حصلت على حالة مشتركة حيث لديك اثنين من المتغيرات (زبيد و يسبيد) التي أريد أن تحدد بشكل مستقل إلى الصفر عندما تقع تحت مينسبيد ، والخروج عندما يكونون على حد سواء الصفر.

ما يمكن أن يكون الأسلوب الأكثر فعالية?لدي حاليا طريقتان (الطريقة 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