class Pong {
public:
Pong(int speed) {
gSpeed = speed;
gPongBG = SDL_LoadBMP("pongBG.bmp");
gPongBGSurf = gPongBG;
gPongRect.w = 800;
gPongRect.h = 460;
gPongRect.x = 700;
gPongRect.y = 220;
gPongPlayer = SDL_LoadBMP("pongPlayer.bmp");
gPongPlayerRect.h = 50;
gPongPlayerRect.w = 10;
gPongPlayerRect.x = 50;
gPongPlayerRect.y = 0;
}
~Pong() {
}
void drawPong() {
gPongBGSurf = gPongBG;
SDL_BlitSurface(gPongBGSurf, NULL, gScreenSurface, &gPongRect);
SDL_BlitSurface(gPongPlayer, NULL, gPongBGSurf, &gPongPlayerRect);
}
void movePlayer() {
gPongPlayerRect.y++;
}
Следующий код делает это так, что gPongPlayerRect делает несколько копий самого себя, а не перемещает его, как я планировал. Позже в коде я обновляю главное окно с именем gWindow, а поверхность главного окна - wScreenSurface. Если я блистал плеер прямо на поверхности окна, он перемещается, поэтому я предполагаю, что проблема в том, что старая поверхность gPongBGSurf остается даже обновленной. Как я могу это исправить? Благодаря!Рисование нескольких экземпляров одного и того же прямоугольника вместо его перемещения
Спасибо! Посмотрю на него, когда я вернусь домой :) –
Как-то это сработало. Я не уверен, как, Джозеф, вам интересно объяснить, как это сделать? :) –
И, gPongBGSurf является фактически файлом bmp ... как я мог перезагрузить картинку вместо этого? –