for循环适用于第一次迭代,但适用于lis中的下一项

2024-09-27 07:35:52 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我尝试用pygame创建一个简单的游戏,它有点像“砖块破碎机”,只是没有砖块。你拿一块木板,试着击球,这样球就不会掉到木板下面。当球碰到木板时,它应该朝相反的方向反弹。它对第一个球非常有效,但是当我尝试引入第二个球(当你的比分是10分时),第二个球遵循所有的条件,除了它忽略了木板(只是穿过它)。以下是我怀疑问题所在的代码:

for j in range(0, len(ball_x)):

    ball_y[j] += ball_vely[j]
    ball_x[j] += ball_velx[j]

    if ball_y[j] <= 0:
        ball_vely[j] *= -1

    if ball_y[j] + 55 > y and ball_y[j] + 40 < y and ball_x[j] > x and ball_x[j] < x + 160:
        ball_vely[j] *= -1
        score += 1

        if ball_x[j] > x + 75:
            ball_velx[j] = 10
            ball_velx[j] *= 1 + (ball_x[j] - x + 75)/60
        elif ball_x[j] < x + 75:
            ball_velx[j] = 10
            ball_velx[j] *= -1 * (1 + (x + 75 - ball_x[j])/60)

    if ball_x[j] - 25 <= 0 or ball_x[j] + 45  >= 680:
        ball_velx[j] *= -1
    if ball_y[j] > 795:
        lives -= 1

ball_yball_x,而ball_velxball_vely是速度(它们都存储在一个列表中)。当第二个球掉到屏幕下面时,生命就被夺走了,这对我来说毫无意义。我试着摆脱for循环,而是编写了两次代码,但都没有成功。任何帮助都将不胜感激


Tags: and代码in游戏forif方向条件

热门问题