我需要一些建议。我有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