2017-12-27 25 views
-1

안녕하세요. 저는 파이썬 텍스트 모험을하고 있으며 모든 주요 변수 인벤토리, 위치 및 금을 저장하는 저장 기능이 있습니다. 그런 다음 2 개의 변수를 추가했는데 작동하지 않습니다. 미리 감사드립니다. 파이썬 피클 IndexError : 튜플 인덱스가 범위를 벗어났습니다.

다음은 제 작업 코드입니다.

def do_save(self, arg): 
    saveGame = open('savegame.txt', 'wb') 
    saveValues = (inventory, gold, location) 
    pickle.dump(saveValues, saveGame) 
    saveGame.close() 

def do_load(self, arg): 
    global inventory 
    global gold 
    global location 
    global equiped 
    global health 
    loadGame = open('savegame.txt', 'rb') 
    loadValues = pickle.load(loadGame) 
    inventory = loadValues[0] 
    gold = loadValues[1] 
    location = loadValues[2] 
    loadGame.close() 

내가지고있어 오류 메시지가 IndexError입니다

def do_save(self, arg): 
    saveGame = open('savegame.txt', 'wb') 
    saveValues = (inventory, gold, location, equiped, health) 
    pickle.dump(saveValues, saveGame) 
    saveGame.close() 

def do_load(self, arg): 
    global inventory 
    global gold 
    global location 
    global equiped 
    global health 
    loadGame = open('savegame.txt', 'rb') 
    loadValues = pickle.load(loadGame) 
    inventory = loadValues[0] 
    gold = loadValues[1] 
    location = loadValues[2] 
    equiped = loadValues[3] 
    health = loadValues[4] 
    loadGame.close() 

를 작동하지 않는 코드 : 튜플 지수 범위

+1

정확한 추적 오류 란 무엇입니까? 'loadValues'는 아마 당신이 생각하는만큼 많은 원소를 포함하지 않을 것입니다. 그 내용이 무엇인지 확인 했습니까? – Carcigenicate

+1

첫눈에 2 개의 스 니펫이 올바르게 보입니다. 첫번째 스 니펫의'do_save'와 두 번째 스 니펫의'do_load'를 섞지 않았습니까? 그것으로 무엇인가를하기 전에'loadValues'를 프린트 해보십시오. 또한 'arg'는 사용하지 않는 것 같습니다. – CristiFati

답변

0

에서 나는 해결책을했다지만 코드가 가장 효율적인 방법이 아닐 수도 있습니다.

def do_save(self, arg): 
    saveGame = open('savegame.txt', 'wb') 
    saveValues = (inventory, gold, location, equiped, health) 
    saveValues1 = (equiped, health) 
    pickle.dump(saveValues, saveGame) 
    pickle.dump(saveValues1, saveGame) 
    saveGame.close() 

def do_load(self, arg): 
    global inventory 
    global gold 
    global location 
    global equiped 
    global health 
    loadGame = open('savegame.txt', 'rb') 
    loadValues = pickle.load(loadGame) 
    inventory = loadValues[0] 
    gold = loadValues[1] 
    location = loadValues[2] 
    equiped = loadValues[3] 
    health = loadValues[4] 
    loadGame.close() 
    displayLocation(location)