0

BooleanVariable Argument List を使用して複数のオブジェクトを渡すときに、複数のオブジェクトに対してテストを行うことは可能"..."ですか?

関数の例:

    bool check_collision( SPRITE sprite, PLATFORM platform ...){
         //do check
         return true;
    }

次のように呼び出します。

    if(check_collision(sprite,platform,platform2,platform3,platform4,platform5)){
          //manipulate sprite
    }

の代わりに:

    if((check_collision(sprite,platform)
        && (check_collision(sprite,platform2)
        && (check_collision(sprite,platform3)
        && (check_collision(sprite,platform4)
        && (check_collision(sprite,platform5)){
        //manipulate sprite
    }

また:

    if((check_collision(sprite,platform)
        || (check_collision(sprite,platform2)
        || (check_collision(sprite,platform3)
        || (check_collision(sprite,platform4)
        || (check_collision(sprite,platform5)){
        //manipulate sprite
    }

を使用してそれらすべてをテストする場合"..."、各プラットフォームを反復処理するか、スプライトを各プラットフォームと比較する必要がありますか? trueブール値のテストが true になるか、1 つだけになるかを確認するために、全員が戻らなければならないのでしょうか? Argumentbool がORor であるかどうかを関数が認識できるように、3 番目を送信する必要があるとAND思います。(つまり、OR の場合は 1 つだけが真である必要があり、AND の場合はすべてが真である必要がありますか?)

現在取り組んでいるプログラム内でテストしましたが、反復を実装していないため、最初のplatform.

4

1 に答える 1

2
#include <stdarg.h>
double checkAll(int count, SPRITE sprite, ...)
{
    va_list ap;
    int j;
    boolean result = false;
    va_start(ap, sprite); //Requires the last fixed parameter (to get the address)
    for(j=0; j<count; ++j){
        result = result || checkCollision(sprite, va_arg(ap, PLATFORM)); 
    }
    va_end(ap);
    return result;
}
于 2013-04-08T12:31:12.033 に答える