Как исправить остановку погрузочной штанги до конца - PullRequest
1 голос
/ 05 февраля 2020

Я пытаюсь создать загрузочную полосу, но вот что получилось. ПОМОГИТЕ МИЭ

from time import sleep
def fill_rect():
    global fill_r
    global fill_v
    global rect_x
    global speed_fill
    fill(fill_r,fill_v,0)
    rect(width/2 - 100, height/2 - 12.5,rect_x,25)
    if rect_x <= 200 - speed_fill :
        rect_x = rect_x + speed_fill
        fill_r = fill_r + 5
        fill_v = fill_v -2
        speed_fill = speed_fill + 1


def setup():
    global fill_r
    global fill_v
    global rect_x
    global speed_fill
    background(0,100,255)
    size(500,500)
    speed_fill = 1
    fill(0)
    rect(width/2 - 100, height/2 - 12.5,200,25)
    rect_x = 1
    fill_r = 25
    fill_v = 100

def draw():
    global fill_r
    global fill_v
    global rect_x
    fill_rect()

загрузочная панель либо не go полностью спит импорт в этом коде бесполезен, если я изменяю параметры оператора if в функции fill_rect (), строка загрузки выходит за пределы

Ответы [ 2 ]

1 голос
/ 05 февраля 2020

Используйте min для ограничения rect_x до конца бара:

rect_x = min(200, rect_x + speed_fill)

Бар быстро заполняется. Проблема в том, что ускорение слишком сильное:

speed_fill = speed_fill + 1

Уменьшите ускорение (например, 0,1):

def fill_rect():
    global fill_r, fill_v, rect_x, speed_fill

    fill(fill_r, fill_v, 0)
    rect(width/2 - 100, height/2 - 12.5, rect_x, 25)

    if rect_x <= 200:
        rect_x = min(200, rect_x + speed_fill)
        speed_fill += 0.1
        fill_r += 5
        fill_v -= 2


Обратите внимание, частотой кадров можно управлять с помощью frameRate().

0 голосов
/ 05 февраля 2020

я нашел способ остановить его в конце прямоугольника с любым ускорением

def fill_rect():
    global fill_r
    global fill_v
    global rect_x
    global speed_fill
    fill(fill_r,fill_v,0)
    rect(width/2 - 100, height/2 - 12.5,rect_x,25)
    if rect_x <= 200   :
        if rect_x > 200 - speed_fill:
            rect_x = 200 - speed_fill
        rect_x = rect_x + speed_fill
        fill_r = fill_r + 5
        fill_v = fill_v - 2
        speed_fill = speed_fill + 1


...