Pickle用户输入Python 3

2024-06-09 23:22:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我很绝望,因为我已经试着让这个工作很长时间了。在

我在做一个文本冒险,一些用户输入选择播放器的hp,dmg,你能命名的。在

我想做一个保存函数,但是每次加载时,播放器都有默认参数。在

示例:

class player:
    def __init__(self, hp, dmg):
        self.hp = hp
        self.dmg = dmg

def save(obj):
    save_file = open('C:\\Users\\XXXXX XXXX\\Desktop\\Game\\save.dat', 'wb')
    pickle.dump(obj, save_file)
    save_file.close()

def load():
    load_file = open('C:\\Users\\XXXXX XXXX\\Desktop\\Game\\save.dat', 'rb')
    loaded_game_data = pickle.load(load_file)
    return loaded_game_data

def start():
    player.hp = input('Player Hp')
    player.dmg = input('Player Dmg')

player = player(0, 0)

start()

请不要只告诉我我做错了什么,还要告诉我如何做对。我真的不想再这样了-谢谢你!在

我给播放器加载以下内容:

^{pr2}$

Tags: selfobjsavedefloadopen播放器users
1条回答
网友
1楼 · 发布于 2024-06-09 23:22:20

以下是运行良好。用大写的首字母重命名您的Player类,以避免名称冲突。我在最后添加了一些测试调用,播放器加载了预期的(不是默认的)统计数据。在

import pickle

class Player:
    def __init__(self, hp, dmg):
        self.hp = hp
        self.dmg = dmg

def save(obj):
    save_file = open('save.dat', 'wb')
    pickle.dump(obj, save_file)
    save_file.close()

def load():
    load_file = open('save.dat', 'rb')
    loaded_game_data = pickle.load(load_file)
    return loaded_game_data

def start():
    player.hp = input('Player Hp: ')
    player.dmg = input('Player Dmg: ')

player = Player(0, 0)

start()
save(player)
loaded_player = load()
print loaded_player.hp, loaded_player.dmg

相关问题 更多 >