我需要一些建議。我有2類遊戲,我想提出,這些類別是:一個很好的OO方式來做到這一點(C++)
圖形 精靈
精靈類由圖像緩衝器的用於圖像中,(X,Y)偏移,以及寬度和高度。圖形類有一個屏幕緩衝區。屏幕緩衝區可能會讓事情發生,像精靈的圖像緩衝區。
有沒有推薦的方法將精靈的圖像緩衝區傳輸到圖形屏幕緩衝區?我有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的任何更好的方法? < <我得到這樣的錯誤。
問問自己「誰來負責繪製精靈?」 – 2011-12-17 06:24:10