Я создал игру в боулинг с питоном, и формат шаблона ведет себя странно.
На картинке первая часть правильная. Однако, как только я добавляю бросок от одного пользователя, переменная счета перемещается вправо. Но затем он остается на месте до конца игры. Я не понимаю, почему это происходит.
Это мой код для справки (показаны только функции, относящиеся к форматированию):
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
не имеет значения.
Любой шаг в правильном направлении приветствуется