私はいくつかのアドバイスが必要です。私が作っていたゲームのための2つのクラスがあり、これらのクラスは、次のとおりこれを行う良い方法(C++)
グラフィック スプライト
スプライトクラスは、画像のための画像バッファから成り、(x、y)はオフセット、およびA幅と高さ。グラフィックスクラスには画面用のバッファがあります。画面バッファにはスプライト用の画像バッファのようなものがあります。
スプライトのイメージバッファをグラフィックス画面バッファにブリットする方法はありますか?私は2つのアイデアを持っていた:
void Sprite::blit(SDL_Surface* screen)
{
// code goes here
}
またはこの(グラフィックスクラス):
void Graphics::blit(Sprite sprite)
{
// code
}
かさえ、この(もで
は、この(スプライトクラスの)のようなメソッドを持っていますグラフィッククラス):
void Graphics::blit(SDL_Surface* aSpritesImageBuffer)
{
// code
}
これらのすべてに問題があります。どちらのクラスでも、私はスプライトのイメージバッファとグラフィックスコンポーネントのスクリーンバッファの両方を隠すためにカプセル化を使用します。クラスで提供されている関数を使用しないと誰もそれらを操作できないように定数として返されます。これは私がそれをした方法です:
class Graphics
{
public:
const getScreenBuffer() const {return screenBuffer;}
private:
screenBuffer;
};
^スプライトの画像バッファと同じです。 (私のメインクラスで)私が試したので、場合
非常に良いではないでしょうvoid handleRendering()
{
graphics.blit(sprite.getImageBuffer());
}
?
かさえ:
void handleRendering()
{
graphics.blit(sprite);
}
と私はこれが良いとは思わない:
void handleRendering()
{
sprite.blit(graphics.getScreenBuffer());
}
は非constへのconstのようなエラーを取得せずにこれを行うのいずれかのより良い方法がありますか? < <このようなエラーが発生します。
「スプライトを描くのは誰が責任ですか?」 –
画面が表示されますが、スプライトのイメージを公開する必要があり、それが良いとは思わない – evolon696