Я пытаюсь создать игру Yahtzee в python, но у меня возникают проблемы с занесением очков в составленную мной таблицу. Таблица представляет собой список, каждый элемент которого соответствует одной строке. Каждый элемент (то есть каждая строка) представляет собой f-строку, которая извлекает значение из словаря в фигурных скобках.
Позже в коде я обновляю значение, которое вызывается в строке, и печатаю строку. По какой-то причине печатается старое значение из словаря.
from random import randrange
def roll(saved):
global roll
roll = []
for i in range(5 - len(saved)):
roll.append(str(randrange(1,7)))
global roll_og
roll_og = roll
roll.sort()
print("Avaliable dice : " + ",".join(roll))
def avaliable_points():
#numbers
global roll_og
for i in range(1,7):
if roll_og.count(str(i)) > 0:
points[str(i)] = roll_og.count(str(i)) * i
def print_table(table):
for i in table:
print(i)
saved = []
points = {
"1" : "",
"2" : "",
"3" : "",
"4" : "",
"5" : "",
"6" : ""
}
avaliable_grid = [
" _____________________________ _____________________________",
"| |Player 1|Player 2| | |Player 1|Player 2|",
"|-----------|--------|--------| |-----------|--------|--------|",
f"|Ones |{points[str(1)]}| | |3 of a Kind| | |",
f"|-----------|--------|--------| |-----------|--------|--------|",
f"|Twos |{points[str(2)]}| | |4 of a Kind| | |",
f"|-----------|--------|--------| |-----------|--------|--------|",
f"|Threes |{points[str(3)]}| | |Full House | | |",
f"|-----------|--------|--------| |-----------|--------|--------|",
f"|Fours |{points[str(4)]}| | |S. Straight| | |",
f"|-----------|--------|--------| |-----------|--------|--------|",
f"|Fives |{points[str(5)]}| | |L. Straight| | |",
f"|-----------|--------|--------| |-----------|--------|--------|",
f"|Sixes |{points[str(6)]}| | |Chance | | |",
"|-----------|--------|--------| |-----------|--------|--------|",
"|#############################| |YAHTZEE | | |",
"|-----------|--------|--------| |-----------|--------|--------|",
f"|Sum | | | |#############################|",
"|-----------|--------|--------| |-----------|--------|--------|",
f"|Bonus | | | |TOTAL SCORE| | |",
" ----------------------------- ----------------------------- ",
]
roll(saved)
avaliable_points()
print(points)
print_table(avaliable_grid)
Таблица, которая меня интересует, - это список available_grid
, а словарь - это словарь points
. Все остальные функции в коде - это те, которые определяют, сколько точек go в каждом слоте в таблице.
Avaliable dice : 1,2,2,4,6
{'1': 1, '2': 4, '3': '', '4': 4, '5': '', '6': 6}
_____________________________ _____________________________
| |Player 1|Player 2| | |Player 1|Player 2|
|-----------|--------|--------| |-----------|--------|--------|
|Ones || | |3 of a Kind| | |
|-----------|--------|--------| |-----------|--------|--------|
|Twos || | |4 of a Kind| | |
|-----------|--------|--------| |-----------|--------|--------|
|Threes || | |Full House | | |
|-----------|--------|--------| |-----------|--------|--------|
|Fours || | |S. Straight| | |
|-----------|--------|--------| |-----------|--------|--------|
|Fives || | |L. Straight| | |
|-----------|--------|--------| |-----------|--------|--------|
|Sixes || | |Chance | | |
|-----------|--------|--------| |-----------|--------|--------|
|#############################| |YAHTZEE | | |
|-----------|--------|--------| |-----------|--------|--------|
|Sum | | | |#############################|
|-----------|--------|--------| |-----------|--------|--------|
|Bonus | | | |TOTAL SCORE| | |
----------------------------- -----------------------------
Я распечатал словарь после того, как изменил его, чтобы проверить, действительно ли он был изменен.