-1

わかりました、コードが実際にはちょっと大きいので、すぐにお詫びします。問題は、私はSDLを使って実際に学んでいるということです。なんとかアニメーションを作成できましたが、もう少し深く掘り下げたいと思いました。これがコードの仕組みです

App - Uses: これにはメイン ループ、Init 関数、Render 関数があり、ソフトウェア全体はここから作成されます。

アニメーション - 使用: これにはクラス アニメーションのすべての関数が含まれ、宣言されます。Running という bool 変数が true の場合にのみ機能します。

Surface - Uses: ファイルをサーフェスにロードし、特定の色を透明にし、画像または画像の一部を MainSurface に描画します。

イベント - 用途: これには、イベントに対するすべての仮想機能があります。

オブジェクト - 用途: これが大きな部分です。それは完璧に機能していました。以前は、メイン クラスに Yoshi という名前の Surface を用意し、その Surface を使用してアニメーションを操作していました。メインクラスに「キャラクター」を配置する方法は少し混乱し、画面に複数の画像があると問題が発生するだろうと思いました。そのため、独自の SDL_Surface、画面上の独自の位置を持つ Object というクラスを作成することにしました。独自の変数は、それがどのフレームであるかを決定しました。私がしたことは、APPクラスのこのクラスにオブジェクトを作成したことです...

Object MainCharacter;

そのため、そのキャラクターを単独で操作することができ、画面上に別のオブジェクトを表示する必要がある場合は、

Object *SecondCharacter;

など...そのため、OBJECT クラスはアニメーションを呼び出します。APP クラスは、このような関数によって、すべての画像をレンダリングします。

MySurface::OnDraw(Surf_Display, MainCharacter.Img_Surface, MainCharacter.RetrievePosX(), MainCharacter.RetrievePosY(), MainCharacter.RetrieveFrameByID(0), MainCharacter.RetrieveFrameByID(1), 64, 64);

ええと...しかし、問題は、コードが機能しなくなるということです。これは完成したコードにはほど遠いですが、この問題をすぐに修正したいので、ベースができてから完成させます。

すべてのファイルは次のとおりです。一部のファイルは行数が多すぎません。また、私を助けてくれるかもしれない人を助けるために、いくつかのコメントを書きました。


ヘッダー:

Animation.h - http://pastebin.com/v4REcmBd

Object.h - http://pastebin.com/KdeamZTG

Events.h - http://pastebin.com/dpQ7zwpG

CApp.h - http://pastebin.com/5zZYwDjv

Surface.h - http://pastebin.com/S66ChQ3f


ソース:

Surface.cpp - http://pastebin.com/KRgAkHpw

Object.cpp - http://pastebin.com/RtDRwVj4

Events.cpp - http://pastebin.com/dpXn8Rh3

OnRender.cpp - http://pastebin.com/AqgMTacb

OnLoop.cpp - http://pastebin.com/UAeAt7y6

OnInit.cpp - http://pastebin.com/1iiZVeyK

OnEvent.cpp - http://pastebin.com/AjRXnKC1

OnCleanUp.cpp - http://pastebin.com/cv0M11nV

CApp.cpp - http://pastebin.com/L0jhfWY8

Animation.cpp - http://pastebin.com/0BZhh6TG


よし、以上です。それらのいくつかは本当に短いです。誰かが私の間違いを見つけるのを手伝ってくれるなら、私はうれしいです. それはさておき、私は本当にソフトウェアの構造について意見を求めたいのですが、私がやっていることは実用的だと思いますか? SDL ソフトウェアまたはゲームを作成するときに、どのデザインを使用しますか???

4

1 に答える 1