【发布时间】:2016-01-12 22:08:25
【问题描述】:
我正在尝试创建一个较小的游戏,我需要一个矩形在窗口内从左向右移动。请注意,这不是完整的代码。下面是一个创建的窗口类的sn-p和它的run函数。
我可以画出矩形,现在它也在移动。但是,当我向上/向下按下时,它也会向右移动,但我希望它自动完成。如果我将调用movement() 的for 循环移动到while 之外(我认为它应该......?),矩形就会消失。
另外需要注意的是,运动应该通过矢量pcEnhet 调用,因为稍后我将与其他精灵一起使用它。
void Spelplan::run() {
SDL_RenderClear(render);
for (PCKomponent* k : pcEnhet)
k->draw();
SDL_RenderPresent(render);
bool spela = true;
while (spela) {
SDL_Event eve;
while (SDL_PollEvent(&eve)) {
switch (eve.type) {
case SDL_QUIT:
spela = false;
break;
case SDL_KEYDOWN:
switch (eve.key.keysym.sym) {
case SDLK_DOWN:
for (PCKomponent* k : pcEnhet)
k->knappNer(eve);
break;
case SDLK_UP:
for (PCKomponent* k : pcEnhet)
k->knappUpp(eve);
break;
}//keysym switch
SDL_RenderClear(render);
for (PCKomponent* k : pcEnhet)
k->draw();
SDL_RenderPresent(render);
}//eve.type switch
for (PCKomponent* k : pcEnhet) {
k->movement();
k->draw();
}
}//while SDL_Poll
}//while spela
}
void Spelare::movement() {
area.x++;
}
void Spelare::draw() {
SDL_RenderCopy(sp->getPlan(), spelareTexture, NULL, &area);
}
【问题讨论】:
标签: c++ while-loop sdl