def move_dot(window, center, radius, velocity):
    size = (window.get_width(), window.get_height())
    for index in range(0, 2):
        # update center at coordinate
        center[index] = center[index] + velocity[index]
        # dot edge outside window?
        if (center[index] <= radius) or (center[index] + radius >= size[index]):
        # change direction
            velocity[index] = - velocity[index]

Это мой код выше для программы, которая подпрыгивает внутри окна. У меня есть вопрос: что я использую для замены строки if (center[index] <= radius) or (center[index] + radius >= size[index]): ONLY , чтобы ее центр касался края окна, а не подпрыгивал, когда один из его краев касается края окна. (Я приложу полный вопрос ниже, чтобы кто-нибудь лучше понимал, что я пытаюсь сделать.


[какой код должен заменить «условие оператора if», если вы хотите, чтобы точка отскакивала, когда ее центр касается края окна, вместо того, чтобы отскакивать, когда один из ее краев касается края окна? Вы можете только изменить условие. Вы не можете добавить или удалить какой-либо другой код.]


Я пробовал использовать код if (center[index] <= 0) or (center[index] + radius >= size(window(500,400))): & if (center[index] <= 0) or (center[index] + radius >= size[window]): и получаю сообщение об ошибке Incorrect: It should bounce when either coordinate of the center is less than or equal to 0 or larger than or equal to the size (width or height) of the window.. Может ли кто-нибудь направить меня или помочь мне, пожалуйста. Спасибо

-1
Mark 29 Июл 2020 в 05:22

1 ответ

Лучший ответ

По сути, вы хотите, чтобы мяч отскакивал, когда мяч в центре ударяется о край окна. В настоящее время он закодирован для отскока при ударе мяча краем .

Просто удалите радиусный зазор при проверке положения шара:

if (center[index] <= 0) or (center[index] >= size[index]):
0
Mike67 29 Июл 2020 в 05:34
Это сработало, мне пришлось удалить части «если» и «:», чтобы отправить. Большое спасибо
 – 
Mark
29 Июл 2020 в 05:51