0

私はゲーム制作の真のスタートのためにシンプルな汎用エンジンを構築しています。そして、エンジンの制作において何らかの形で整理され、まともなものにしようとしています。つまり、私が横に投げるものにしたくないのです。計画したものを作ったら。

表示するオブジェクトを追加します。s、drawObjectこれらは移動するか、移動しないか、アニメーションを作成するか、または作成しないかのいずれかです。

彼らがアニメーションを持っている場合、私は単一を初期化したいですanimationSet、そしてこれはその中にanimationSetxxxを持ってanimationCompいます。私はきちんとしようとしていて、メモリとCPU使用率の「最適化」(すでにロードされているイメージポインタの共有など、頭に浮かんだものは何でも)に取り組んできたので、配列で未使用のメモリを要求したくありませんでした。

そのため、最初は、追加したアニメーションが必要なオブジェクト、つまりアニメーションではないためメモリを使用していないオブジェクトに対してのみ、後でanimationSetS* animationSet = NULL;実行することを計画していました(正しいですか?)。そして、この質問がポップアップしました!(タイトル)animationSet = animationSetS[spacesINEED];NULL

    struct animationComp {
        SDL_Rect* clip;
        int clipsize;
    };

    struct animationSetS {
        animationComp* animation;
        int currentFrame;
        int currentAnimation;
        int animationNumber;
    };

    struct drawObject { // Um objecto.
        char* name;
        SDL_Surface* surface;
        bool draw = true;
        float xPos;
        float yPos;
        bool willMove = false; // 0 - Won't move, 10 - Moves alot, TO IMPLEMENT
        bool isSprite = false;
        animationSetS* animationSet;
    };

質問にたくさん手を出して、ごめんなさい。ここでの説明の返信については、次の10分以内に返信します...おそらく1時間ですか?以上。ありがとう!

4

2 に答える 2

3

これを実際にC++で実装する必要がある場合(作成時に)、C ++標準ライブラリを使用してみませんか?好き

struct animationSetS {
    std::vector< std::shared_ptr<animationComp> > animation;
    // ...
}
于 2012-12-25T23:12:20.190 に答える
3

ASSERT(ptr != NULL);ポインタをNULLに設定すると、ポインタに、使用していたメモリにたまたまあるものからのゴミの値が誤って含まれていないことを追加して知ることができます。

したがって、何らかの理由で、適切に設定される前にオブジェクトを使用することになった場合は、それを検出できます。

また、フィールドを使用しない場合でも、delete stuff;[最初に割り当てられていると仮定して]呼び出すことができます。

変数を初期化しないままにしておくと、その有効範囲内の任意の値を持つことができることに注意してください[一部のタイプでは、有効範囲外です。たとえば、ポインターと浮動小数点値は「プロセッサーで許可されていない値」になる可能性があります]。これは、コードが初期化されているかどうかをコード内で「伝える」ことは不可能であることを意味しますが、初期化しないと、事態はひどく悪くなります。

于 2012-12-25T23:04:48.933 に答える