#c #visual-studio #sdl
#c #visual-studio #sdl
Вопрос:
Прямо сейчас я пытаюсь заставить объект food перемещаться. Кто-нибудь может помочь мне понять, почему? Я использую SDL и c , объект успешно перемещается, но в процессе его размазывается. Это мой код здесь. И когда я имею в виду размазывание, это похоже на то, что он добавляет больше квадратов позади него, делая его похожим на размазывание. Я не знаю.
void create_Rect(SDL_Renderer* amp;renderer, int x, int y, int w, int h, int colorRed, int colorGreen, int colorBlue, int colorA)
{
SDL_Rect r;
r.x = x;
r.y = y;
r.w = w;
r.h = h;
SDL_SetRenderDrawColor(renderer, colorRed, colorGreen, colorBlue, colorA);
// Render rect
SDL_RenderFillRect(renderer, amp;r);
// Render the rect to the screen
SDL_RenderPresent(renderer);
}
void input(SDL_Renderer* renderer)
{
Food food = { 15, 15, 200, 200 };// stuct for food object
while (isRunning)
{
SDL_Event event;
while (SDL_PollEvent(amp;event))
{
create_Rect(renderer, food.x_Pos, food.y_Pos, food.Height, food.Width, 0, 0, 255, 255);// the food object
if (event.type == SDL_QUIT)
isRunning = false;
if (event.type == SDL_KEYDOWN)
{
switch (event.key.keysym.sym)
{
case SDLK_LEFT:
food.x_Pos -= 15;
cout << "Crouiser1" << endl;
break;
case SDLK_UP:
food.y_Pos -= 15;
cout << "Crouiser2" << endl;
break;
case SDLK_RIGHT:
food.x_Pos = 15;
cout << "Crouiser3" << endl;
break;
case SDLK_DOWN:
food.y_Pos = 15;
cout << "Crouiser4" << endl;
break;
case SDLK_ESCAPE:
isRunning = false;
break;
}
}
}
SDL_Delay(1);
SDL_RenderPresent(renderer);
}
}
Комментарии:
1. Я не использовал SDL, но, полагаю, вам нужно очистить и перерисовать экран для каждого кадра
2. @AlanBirtles но когда я это делаю, экран просто становится синим, цветом объекта.
3. Как указано в документации , перед вызовом SDL_RenderClear вам нужно установить для цвета рисования что-то другое.
4. @Botje когда я пытаюсь это сделать, экран просто становится 1 цветным.
5. @Botje спасибо, я думаю, я понял это. Это потому, что у меня было более одного объекта, и я использовал их в функции, поэтому она очищала его для этих объектов, но не для того, что я хотел.