泡菜用户输入-Python 3 [英] Pickle user inputs - Python 3

查看:95
本文介绍了泡菜用户输入-Python 3的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我很绝望,因为我一直在努力使它工作.

I am pretty desperate, since I have tried to get this working in a long time.

我正在进行一次文字冒险,其中一些用户输入会选择播放器的hp,dmg,并命名.

I'm making a text adventure where some user inputs choose the player's hp, dmg, you name it.

我想创建一个保存功能,但是每次加载它时,播放器都有默认参数.

I want to make a save function, but every time I load it, the player has default parameters.

示例:

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()

请不仅告诉我我做错了什么,而且还要告诉我如何正确做.我真的很需要这个-谢谢!

Please don't just tell me what I do wrong, but also how to do it right. I really need this out of my head - Thank you!

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

I load the player with the following:

>>>print(player.hp)   # To make sure the HP is 0
0
>>>player.hp = 100    # I now change the HP to 100
>>>save(player)       # Saving the player with 800 HP and 0 DMG
                      # Restarting Python
>>>load()             # Loading the player
>>>print(player.hp)   # Check if the HP is 100 as I saved it.
0                     # The HP is 0...
                      # I expected 100 as I saved it.

推荐答案

以下代码运行良好.用大写的首字母重命名您的Player类,以避免名称冲突.我在末尾添加了一些测试调用,并向播放器加载了预期的(非默认)统计信息.

The following runs well. Rename your Player class with an uppercase initial to avoid name conflicts. I added some test calls at the end, and the player is loaded with the intended (not default) stats.

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

这篇关于泡菜用户输入-Python 3的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆