2015-10-15 17 views
0

我想通過添加保存/加載功能(不得不使用文件不幸)來完成使用python的任務的最後動作。我定義了四個函數,併爲每個函數編寫代碼,但我沒有提供任何內容,因爲它不想工作,我們的教師對文件的說明是非常基本的。通過Python中的文件命令操作變量

def savegame(): 
    f=open("savefile.txt","w") 
    f.write(playeroneright/playeroneleft/playertworight/playertwoleft/playertworight/computerright/computerleft) 
    f.close() 

def opengame(): 
    f=open("savefile.txt") 
    lines=f.readlines() 
    playeroneright=lines[0] 
    playeroneleft=lines[1] 
    playertworight=lines[2] 
    playertwoleft=lines[3] 
    computerright=lines[4] 
    computerright=lines[5] 
    f.close() 

def newgame(): 
    deletecontent("savefile.txt") 
    f=open("savefile.txt","w") 
    f.write(1) 
    f.write(1) 
    f.write(1) 
    f.write(1) 
    f.write(1) 
    f.write(1) 
    f.close() 
    opengame() 

def deletecontent(pfile): 
    fn=pfile.name 
    pfile.close() 

第一函數(遊戲存檔)應該採取的每個變量,並保存在不同的行的它的數值,因爲它當前在遊戲成立(遊戲操縱變量,playeroneright等等之一)。它應該將其保存在文件savefile.txt中。

第二個函數(opengame)應該取文件中當前保存的任何內容,並將該文件分配給該變量,基本上是一個加載函數。

第三個函數(新遊戲)應該將遊戲重置爲起始點(其中所有變量都取值1),然後使用上述函數打開遊戲。

最後一個函數(deletecontent)僅用於第三個函數來清除文檔,以便它可以分配所有新值。

這些是我到目前爲止的嘗試,我還沒有很好的文件,但我試圖找出更多。如果任何人有任何想法(最好是簡單的,如果可能的話),這將是非常棒的。謝謝!

+0

看起來你很接近滿足要求。你錯過了什麼?另外,爲什麼newgame()調用opengame()?好像你應該有一個主函數,如果需要的話調用newgame(),然後調用opengame。 –

+0

是的,可以工作,我只是在newgame中使用了opengame,因爲在newgame中,我將值重置爲1,並在opengame中分配變量,所以每次我使用newgame時,我也必須使用opengame。 – Eric

回答

2

只是爲了讓你去(不在這裏做其他人的功課;)

def savegame(playerone_right, playerone_left, ....): 
    f=open("savefile.txt","w") 
    f.write(playerone_right + "\n") 
    f.write(playerone_left + "\n") 
    ... 
    f.close() 

「\ n」 導致斷行(新行) +上的兩個字符串將它們連接起來。

一般來說,你會選擇其他方式pickle,json,...,但它看起來像你的例子中給出的格式。

要真正使用這些函數,您需要將變量保存在某處並將它們作爲需要它們的參數提供給函數,或者使用global variables

使用全局變量,你的情況加:

global playeroneright, playeroneleft, playertworight, playertwoleft, playertworight, computerright, computerleft 

各功能的使用這個變量的開始。 現在你不需要再給它們作爲參數了,因爲每個函數都可以使用全局變量。

這並不是解決這個問題最好的方法,但是如果不向你介紹更多的模式,這應該是最簡單的方法。

+0

謝謝,這真的很有幫助。我已經修復了大部分內容,但是當我在opengame()中賦值變量時,它只賦值給其中的兩個,剩下的都留空(我只是打印了變量,只有兩個變量指示我們被賦值價值1),我不知道爲什麼只有一些會工作,而其餘的我猜測被忽略。 – Eric