У меня есть программа, которая случайным образом генерирует 10 символов RPG.Я реализовал возможность сохранять их в characterFile.json
, вот что содержится в этом файле:
[
{
"health": 100,
"name": "da fu en ",
"power": 30,
"sAttackPwr": 60,
"speed": 10,
"type": "Elf"
},
{
"health": 100,
"name": "tuk ar da ",
"power": 90,
"sAttackPwr": 40,
"speed": 50,
"type": "Dragon"
},
{
"health": 100,
"name": "tuk el low ",
"power": 30,
"sAttackPwr": 60,
"speed": 10,
"type": "Elf"
},
{
"health": 100,
"name": "ant en ant ",
"power": 90,
"sAttackPwr": 40,
"speed": 50,
"type": "Dragon"
},
{
"health": 100,
"name": "tuk en el ",
"power": 90,
"sAttackPwr": 40,
"speed": 50,
"type": "Dragon"
},
{
"health": 100,
"name": "ar da ar ",
"power": 90,
"sAttackPwr": 40,
"speed": 50,
"type": "Dragon"
},
{
"health": 100,
"name": "kar ing tuk ",
"power": 30,
"sAttackPwr": 60,
"speed": 10,
"type": "Elf"
},
{
"health": 100,
"name": "da cha ing ",
"power": 50,
"sAttackPwr": 70,
"speed": 30,
"type": "Wizard"
},
{
"health": 100,
"name": "da cha low ",
"power": 50,
"sAttackPwr": 70,
"speed": 30,
"type": "Wizard"
},
{
"health": 100,
"name": "da cha tuk ",
"power": 30,
"sAttackPwr": 60,
"speed": 10,
"type": "Elf"
}
]
(форматирование, когда я вставляю его в SO, неправильное, но как оно изложенов файле правильно)
Я хотел бы иметь возможность читать это обратно в программу, создавая объекты из этого списка.
Это то, что у меня есть до сих пор для чтения файлаобратно в программу:
def openCharsToFile(gameChars):
print("Loading File...")
ans = input("Please ensure the file is called 'characterFile.json', then press [1]...")
while True:
if ans == "1":
with open("characterFile.json") as read_file:
data = json.load(read_file)
print(data)
for x in data:
gameChars = characterClass(data[x][name], data[x][type], data[x][health], data[x][power], data[x][sAttackPwr], data[x][speed])
break
characterClass
- это класс, который я использую для создания экземпляра объекта:
# Base Class for creating an RPG character
class character:
# __init__ method, creates the name, type, health properties
def __init__(self, charName, charType, charHealth):
self.name = charName
self.type = charType
self.health = charHealth
class characterClass(character):
def __init__(self, charName, charType, charHealth, charPower, charSAttackPwr, charSpeed):
character.__init__(self, charName, charType, charHealth)
self.power = charPower
self.sAttackPwr = charSAttackPwr
self.speed = charSpeed
Когда я запускаю этот код, я получаю следующую ошибку:
TypeError: list indices must be integers or slices, not dict
Теперь, как я понимаю, эта ошибка заключается в том, что я пытаюсь найти индекс в списке, но вместо этого отправляю ему весь словарь, который не может превратиться в целое число
Чего мне не хватает, чтобы использовать цикл для считывания этого обратно в мою программу?