Мне нужен совет. У меня есть 2 класса для игры, которую я делаю, и эти классы:
Графика
Sprite
класс sprite состоит из буфера изображения для изображения, смещения (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 к non-const? << Я получаю такую ошибку. </p>