我目前正在使用游戏币创建一个基于文本的游戏,并且我希望用户有一种方法来存储他们的信息,以便他们以后可以登录。这可以在不连接到 Internet 的情况下实现吗?
user3184436
问问题
39 次
1 回答
0
在我发现泡菜之前,我被这个问题困扰了一周。
加载信息
import pickle
from getpass import getpass
username = raw_input('What would you like your username to be? ')
username2 = raw_input('Please enter the same username again: ')
while username != username2:
print 'The usernames do not match.'
username = raw_input('What would you like your username to be? ')
username2 = raw_input('Please enter the same username again: ')
pword = getpass("What would you like your password to be? ")
pword2 = getpass("Please reenter the password: ")
while pword != pword2:
print 'The passwords do not match'
pword = getpass('What would you like your password to be? ')
pword2 = getpass('Please reenter the password: ')
money_left = 0
logininfo = [username, pword, money_left]
pickle.dump(logininfo, open( "%s.p" %username, "wb"))
print 'Your username is %s, and your password is %s. You have $%d ingame money.' % (username, pword, money_left)
检索信息
import pickle
from getpass import getpass
login = raw_input('Enter your username')
password = getpass("Enter your password: ")
if pickle.load(open("%s.p"%login, "rb"))[1] == password:
username = pickle.load(open("%s.p"%login, "rb"))[0]
pword = pickle.load(open("%s.p"%login, "rb"))[1]
money_left = pickle.load(open("%s.p"%login, "rb"))[2]
print 'You have successfully logged in as %s and you have $%d ingame money.' %(login, money_left)
这应该有效,它对我有用。getpass 是可选的,但它会在您输入密码时防止字符回显。您还可以更改“money_left”的金额。这基本上创建了一个名为“%sp”%username 的文件。因此,如果您的用户名是 pickler,它将创建一个名为 pickler.p 的文件。
于 2014-01-11T22:41:01.307 回答