gpt4 book ai didi

c++ - sdl 45 度运动

转载 作者:行者123 更新时间:2023-11-30 20:14:07 27 4
gpt4 key购买 nike

我试图让我的物体以 45 度对角线移动。当它达到屏幕宽度时,它应该弹起来,我在某个地方犯了一个大错误,但无法弄清楚。

distance = 0;
etiSpeed = 1;

t2 = SDL_GetTicks();
delta = (t2 - t1) * 0.001;
t1 = t2;

distance += etiSpeed * delta;



ball_x = ball_x * distance * ball_x_vel;
ball_y = ball_y * distance * ball_y_vel;

if (ball_x < SCREEN_WIDTH)
{
ball_x_vel = 1;
DrawSurface(screen, ball, ball_x, ball_y);
}

else if (ball_x = SCREEN_WIDTH)
{
ball_x_vel = -1;
DrawSurface(screen, ball, ball_x, ball_y);
}

最佳答案

你的测试不正确

if (ball_x = SCREEN_WIDTH)

正在将ball_x位置设置为SCREEN_WIDTH,作为 bool 测试,该位置将为true,因此将执行下一个代码块。我认为您正在尝试测试

if (ball_x == SCREEN_WIDTH)

但这也是不正确的,应该是

if (ball_x >= SCREEN_WIDTH)

即使这仍然太简单,如果球在屏幕外,您需要重新定位球。

if (ball_x >= SCREEN_WIDTH)
ball_x = (SCREEN_WIDTH - 1) - (ball_x -(SCREEN_WIDTH-1));

假设你有

#define SCREEN_WIDTH 40
...
ball_x = 40;
if (ball_x >= SCREEN_WIDTH)
ball_x = (SCREEN_WIDTH - 1) - (ball_x -(SCREEN_WIDTH-1));

计算结果为 39 - (40-39) = 38,当球超出 1 时,反弹 1。

关于c++ - sdl 45 度运动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27848749/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com