【问题标题】:Associating an account with a set of data将帐户与一组数据相关联
【发布时间】:2015-12-11 18:19:31
【问题描述】:
DCprice = 100
ACprice = 10
FCprice = 500
TCprice = 5000
Gold = 0
Multiply = 1
autoclickers = 0

def SaveGame():
    with open('objs.pickle', 'wb') as f:
         pickle.dump([Gold, DCprice, Multiply, ACprice, FCprice, TCprice, Multiply, autoclickers], f)

def Load():
    with open('objs.pickle', 'rb') as f:
        return pickle.load(f)

这是我保存游戏数据的代码。 我想知道的是,我如何将一个帐户与每个数据相关联。所以对于

([Gold, DCprice, Multiply, ACprice, FCprice, TCprice, Multiply, autoclickers],

将保存在一个拥有用户名和密码的帐户中。

所以我的问题:我不知道该怎么做,任何正确方向的提示都会很好

【问题讨论】:

    标签: python tkinter pickle


    【解决方案1】:

    创建一个Account 对象。这正是类和对象的用途:

    class Account(object):
        def __init__(self, username, password, dc=0, ac=0, fc=0, tc=0, gold=0, multiply=1):
            self.username = username
            self.password = password
            self.dcPrice = dc
            self.acPrice = ac
            self.tcPrice = tc
            self.gold = gold
            self.multiply = multiply
    

    第一次运行代码时,您可以创建几个帐户:

    accounts = [Account("joe", "secret"), 
                Account("sally", "password", gold=100)]
    

    如果要将账户0的黄金数量设置为1000,可以这样:

    accounts[0].gold = 1000
    

    您可以腌制和取消腌制accounts 数组,因为它由简单的数据类型组成。例如:

    with open('objs.pickle', 'wb') as f:
        pickle.dump(accounts, f)
    

    【讨论】:

    • 为什么里面有黄金?是必需的吗? (在帐户字典中)
    • @Csarg:我只是在猜测您想将什么与帐户关联。你可以在对象中放置任何你想要的东西。
    【解决方案2】:

    你可以像这样转储一个数据结构:

    data = {
      'username': username,
      'password': password,
      'account_info': [Gold, DCprice, Multiply, ACprice, FCprice, TCprice, autoclickers],
      }
    

    或者,对于多个帐户:

    data = [{
      'username': a.username,
      'password': a.password,
      'account_info': [a.gold, a.dcprice, a.multiply, a.acprice, a.fcprice, a.tcprice, a.autoclickers],
      } for a in accounts]
    

    然后,转储并保存该对象:

    pickle.dump(data, f)
    data = pickle.load(f)
    

    【讨论】:

    • “登录”或“访问”定义的帐户怎么样?
    • 其实我更喜欢Bryan的回答。
    【解决方案3】:

    作为替代方案,您可以将数据存储在数据库中,例如 MySQL。您所要做的就是设置表并使用连接器将数据插入表中。例如,使用 MySQL:

    import mysql.connector
    mysql.connector.connect(user='', password='', host='', database='')
    INSERT INTO table_name values (Gold, DCprice, Multiply, ACprice, FCprice,
    TCprice, Multiply, autoclickers)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多