Проблема с форматированием шаблонов Python - PullRequest
0 голосов
/ 08 апреля 2019

Я создал игру в боулинг с питоном, и формат шаблона ведет себя странно.

Wrong output

На картинке первая часть правильная. Однако, как только я добавляю бросок от одного пользователя, переменная счета перемещается вправо. Но затем он остается на месте до конца игры. Я не понимаю, почему это происходит.

Это мой код для справки (показаны только функции, относящиеся к форматированию):

template = "{0:6}"
template_name = "{0:10}"
template_score = "{0:64}"

def next_turn():
    global current_turn
    global counter
    global current_turn_name
    global frame_counter
    global frame_max_counter

    if current_turn >= player_counter:
        print(frame_counter, frame_max_counter)
        if frame_counter >= frame_max_counter:
            endgame()
        print("Next frame!")
        frame_counter += 1
        current_turn = 0
        counter += 1

    for keys in players.keys():
        if players[keys].order == current_turn + 1:
            current_turn_name = keys
            current_turn += 1
            break

    main_game()


def update_screen():
    global template_score
    global counter
    print("Names     1 --- 2 --- 3 --- 4 --- 5 --- 6 --- 7 --- 8 --- 9 --- 10 --- score")
    for names in players.keys():
        print(template_name.format(names), end='')
        for key, value in players[names].frames.items():
            print(template.format(value), end='')
        print(template_score.format(players[names].score))
        print("\n")
        template_score = "{0:" + str(70 - 6 * counter) + "}"


def main_game():
    os.system("cls")
    update_screen()
    print(current_turn, player_counter)
    roll = input("It is now {}'s turn! What is your roll?: ".format(current_turn_name))
    players[current_turn_name].roll(roll)

Таким образом, структура программы такова, что, когда пользователь вводит туда бросок, счет добавляется к его общему количеству, а бросок сохраняется на его имя. Затем я вызываю next_turn (), чтобы определить, кто следующий игрок или следующий кадр. Переменная Score перемещается после первого броска, поэтому эта строка: if current_turn >= player_counter не имеет значения.

Любой шаг в правильном направлении приветствуется

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...