asdwer_123
Июль 19, 2022 00:20:17
Start = 'yes'
if Start == "yes":
asd = open("data_players.txt", "w+")
dsa = asd.read()
print(dsa)
if dsa == "1":
file = open('data_players.txt','r+')
file.write("0")
file.close
print('save')
elif dsa == 0:
print('good')
Хочу чтобы если нету в файле баланса то создать и продолжить дальше
а если есть то добавить его в переменую и после когда кончится типо игра сохранило баланс в файл (той же)
сложно очень и не понятно
ZerG
Июль 19, 2022 09:56:22
import os
# Add fuction for work with user data
def save_user_data(file, value=None):
"""Func return saved user data or create new
Parameters:
file (str): file name
value (int): new user value
Returns:
user value (int)
"""
# add file path
file_path = os.path.join(os.getcwd(), file)
# Check if file is exist
if os.path.exists(file_path):
file_mode = "r+"
else:
file_mode = "w+"
# work with file
with open(file_path, file_mode) as user_data:
# update user data
if value:
balance = str(value)
user_data.writelines(balance)
else:
# read user data
balance = user_data.readline()
# if user data isn't added yet
if balance == "":
balance = "0"
user_data.writelines(balance)
return int(balance)
# Read users data at start app
user1 = save_user_data("user1.txt")
user2 = save_user_data("user2.txt")
print(f"User1: {user1} | User2: {user2}")
# Update users vars in main app cycle
for i in range(0, 2):
user1 = user1 + 1
user2 = user2 + 1
# or you can saved user data every time without end save
# save_user_data("user1.txt", user1)
# save_user_data("user2.txt", user2)
print(f"User1_updated: {user1} | User2_updated: {user2}")
# End save
save_user_data("user1.txt", user1)
save_user_data("user2.txt", user2)
print(f"User1_saved: {user1} | User2_saved: {user2}")
User1: 8 | User2: 8
User1_updated: 10 | User2_updated: 10
User1_saved: 10 | User2_saved: 10
FishHook
Июль 19, 2022 11:16:56
asdwer_123
Хочу чтобы если нету в файле баланса то создать и продолжить дальше
а если есть то добавить его в переменую и после когда кончится типо игра сохранило баланс в файл (той же)
мне кажется разумнее иметь два конфига - один дефолтный, с которым начинается игра и который поставляется вместе с кодом, а сохранения происходят в хоум каталоге пользователя
asdwer_123
Июль 19, 2022 13:26:38
FishHook
Ну я пробую сохранить файл в C
а чтобы там сохранять нужно запустить от имени адм.
можно сохранить канешно в другой диск но у человека может быть взамен D

например E

и скрипт просто умрет
FishHook
Июль 19, 2022 13:42:03
asdwer_123
то есть вы пишите на питоне игру виндовз-онли? А зачем такое ограничение? Питон кроссплатформенный язык, то есть ваша программа будет без проблем работать хоть на винде, хоть на никсах, хоть на маке, хоть на андроиде. Но вы искусственно ограничиваете применение жестко задавая пути характерные только для виндовз
asdwer_123
Июль 19, 2022 13:47:38
FishHook
asdwer_123то есть вы пишите на питоне игру виндовз-онли? А зачем такое ограничение? Питон кроссплатформенный язык, то есть ваша программа будет без проблем работать хоть на винде, хоть на никсах, хоть на маке, хоть на андроиде. Но вы искусственно ограничиваете применение жестко задавая пути характерные только для виндовз
Ну а куда лучше сохранять файлы ? чтобы можно было использовать их как вы говорите
FishHook
хоть на винде, хоть на никсах, хоть на маке, хоть на андроиде.
FishHook
Июль 19, 2022 14:17:09
asdwer_123
в домашний каталог пользователя, конечно. Ваши игры же не сохраняют сейвы в корень диска С, правильно? Каким-то образом, они определяют, где лежат данные текущего пользователя и пишут туда, а так как игры запускаются от имени того же пользователя, не возникает никаких проблем с правами доступа и не засераются системные каталоги. Только не спрашивайте “а как это сделать”, это гуглится за секунду, пусть будет вашим домашним заданием
ZerG
Июль 19, 2022 16:46:33
asdwer_123
Ты издеваешься?
Я ж тебе рабочий код выложил
там файлы будут сохраняться рядом с запущеным приложением
ну а если хочешь в юзера лить поменяй строку
file_path = os.path.join(os.getcwd(), file)
file_path = os.path.join(os.environ['APPDATA'], file)