#python
#python
Вопрос:
У меня есть файл настроек для игры, подобной monopoly, которую я создаю, в файле настроек есть такие параметры, как количество людей, играющих и еще много чего, я хотел бы знать, как импортировать настройки из этого текстового файла и перенести их в разные переменные, например, количество игроков в файле настроекперейдите к переменной numPlayers в реальном коде, чтобы я мог использовать ее для других игр, а также использовать настройки в коде
Это мой код:
def inputs(line, typeinp=None, start=None, end=None):
while True:
string = input(line)
if typeinp != None:
try:
if typeinp == "string":
string = str(string)
elif typeinp == "integer":
string = int(string)
if start != None and end != None:
while not (string >= start and string <= end):
print("Please input a number between", str(start) "-" str(end))
string = int(input(line))
break
except:
print("Plese input a", typeinp)
else:
break
return string
# Settings file, if user chooses to run setup this is all the setup questions
def gameSettingsSetup():
settingsCheck = open("settings.txt", "r")
print("Lets setup")
# Int Setup questions
numPlayers = str(inputs('How many real players are playing: ', "integer"))
numAIplayers = str(inputs('How many AI players will be playing?: ', "integer"))
AILevel = str(inputs("What AI difficulty level would you like? (Easy, Normal, Hard): "))
while True:
if AILevel == "Easy" or AILevel == "Normal" or AILevel == "Hard":
startingMoney = str(inputs("How much money does everyone start with? Max: 10 000 (Keep in mind "
"this does not affect the property prices) ", "integer", 100, 10000))
break
else:
print("Please enter a valid input (make sure to capitalize the first letter)")
AILevel = str(inputs("What AI difficulty level would you like? (Easy, Normal, Hard): "))
# sends over the settings into the text file as well as monoset check
if "MonoSet1-1" in settingsCheck.read():
with open("settings.txt", "w") as file:
file.write("MonoSet1-1: true" "n")
file.write("numPlayer: " numPlayers "n")
file.write("numAIplayer: " numAIplayers "n")
file.write("AI Level: " AILevel "n")
file.write("startingMoney: " startingMoney "n")
file.close()
# Allows for access to the settings file and drops values into a list
settings = []
with open("settings.txt") as file:
for line in file:
line = line.split(":")
line = line[1]
line = line.rstrip("n")
line = line[1:]
line = line.split(" ")
try:
for x in range(len(line)):
line[x] = int(line[x])
line = (line[0], line[1])
except:
line = line[0]
settings.append(line)
file.close()
print("Alright the setup is complete, Your game will start now....")
time.sleep(1)
return settingsCheck, settings
Комментарии:
1. Рассмотрите возможность использования файла settings.json вместо текстового файла. Это позволит вам обращаться к переменным как к ключам в dict.
2. для хранения данных лучше использовать другой формат — файл JSON, .ini, yaml или модуль pickle
3. Если вам нравится
.ini
формат файла для сохранения настроек, рассмотрите возможность использования configparser4. Если вы хотите иметь возможность редактировать файл, я бы рекомендовал .ini/configparser . Слишком легко случайно повредить файлы json и yaml при редактировании.