Python - не может сделать число в переменной выше - PullRequest
0 голосов
/ 29 апреля 2020

Я программирую понг игры на python, и я не хочу, чтобы мяч был быстрее, когда он отскакивает от летучей мыши. Поэтому я попытался добавить

global SPEED
SPEED + 25

в функцию upper_speed, которая будет срабатывать каждый раз, когда мяч отскакивает от летучей мыши. короткая версия кода игры здесь:

...

BALL_SIZE = 20
BAT_WIDTH = 10
BAT_HEIGHT = 100
SPEED = 250  # (in pixels per second)
BAT_SPEED = SPEED * 1.5  # (in pixels per second)

...

def higher_speed(SPEED, x):
    x = 25
    global SPEED
    SPEED + x
    return SPEED

    # bounce left
    if ball_position[0] < BAT_WIDTH + BALL_SIZE / 2:
        if bat_min < bat_position[0] < bat_max:
            # bat bounces ball
            BALL_SPEED[0] = abs(BALL_SPEED[0])
            global SPEED
            higher_speed()
        else:
            # bat hadn't bounced the ball, player loses
            score[1] += 1
            reset()

    # bounce right
    if ball_position[0] > WIDTH7777 - (BAT_WIDTH + BALL_SIZE / 2):
        if bat_min < bat_position[1] < bat_max:
            BALL_SPEED[0] = -abs(BALL_SPEED[0])
            higher_speed()
        else:
            score[0] += 1
            reset()

...


Пожалуйста, помогите. Я ценю ваше время:).

1 Ответ

2 голосов
/ 29 апреля 2020

Несколько вещей здесь:

Прежде всего, значение не изменяется, поскольку оно не назначено в первую очередь, ваша функция должна выглядеть следующим образом:

def higher_speed(SPEED, x):
    x=25
    global SPEED
    SPEED += x

Second , если вы перезаписываете x в начале функции и используете SPEED как глобальное, зачем передавать его?:

def higher_speed():
    global SPEED
    SPEED += 25

В-третьих, согласно Python PEP8 Стандарты, заглавные слова предназначены только для констант, было бы неплохо использовать увеличение скорости, поэтому оно должно выглядеть так:

SPEED_INCREASE = 25

def higher_speed():
    global speed
    speed += SPEED_INCREASE 

И, наконец, вообще плохая идея использовать глобальные переменные, вы можете проверить эту статью или Google, так что постарайтесь избежать этого, тогда это должно выглядеть так:

def higher_speed(speed):
    return speed+SPEED_INCREASE

speed = higher_speed(speed)

или вы можете установить это inline:

speed += SPEED_INCREASE

Надеюсь, это помогло!

...