2017-09-03 12 views
1

私はテキストベースのゲームを作っています。私は保存と読み込みのシステムを持っていますが、それは流暢に動くゲームですが、もっと使いやすいGUIを作ってみたかったのです。私はkivyを使うことにしました。私は画面の使い方や画面間の切り替え方法を学びましたが(基本的に私は面白いことがあります)、私のアプリで変数を使い、さまざまなファイルに進捗状況を保存できるようにしたいと考えています。例:.pyと.kvファイル間の変数の共有、読み込みと保存

ボタンがあります。

presentation = Builder.load_file("Baller.kv") #loads the .kv file I am using 
class BallerApp(App): 
    ego = 0 #here the ego stat is set to 0 
    def build(self): 
     return presentation 

今すぐ実行している間、私はその変数に1を追加したいと言う:ボタンを押すと、のは「自我」statに1ずつ上がる私はそうのような私の.pyファイルに自我スタットを持っているとしましょうプログラム(私は 'on_release:ego = ego + 1'のようなものが必要であると仮定しています)を実行し、アプリケーションが実行されている間にego変数を1として保存します。私のゲームのあらかじめ決められたセーブポイントで、この「エゴ」変数を数字1として「stats.txt」というファイルにエクスポートしたいのですが、どうすればいいですか?

最後に、アプリを開いたとき、あなたはこのホームメニューで迎えています

enter image description here

「ロードゲーム」ボタンが押されたときにどのように私は、このケースでは(単に統計をロードします自我変数)を私のkivyアプリケーションに追加しますか?私は通常のPythonプログラムでそれを行う方法を知っていますが、アプリケーションの実行中に変数を変更する方法はありますか?

は、私はこの問題に受ける任意の助けを事前にいただきありがとうございます:)

答えて

0

以下の例を参照してください。

main.py

class RootWidget(BoxLayout): 
    ego_stat = NumericProperty(0) 

    def update_ego_stat(self): 
     self.ego_stat += 1 

    def save_ego_stat(self): 
     with open("ego_stat.txt", "w") as fobj: 
      fobj.write(str(self.ego_stat)) 

    def load_ego_stat(self): 
     with open("ego_stat.txt") as fobj: 
      for stat in fobj: 
       self.ego_stat = int(stat.rstrip()) 


class TestApp(App): 

    def build(self): 
     return RootWidget() 


if __name__ == "__main__": 
    TestApp().run() 

test.kv

#:kivy 1.10.0 

<RootWidget>: 
    orientation: "vertical" 
    Label: 
     id: lbl_wid 
     font_size: 70 
     center_x: root.width/4 
     top: root.top - 50 
     text: str(root.ego_stat) 
    Button: 
     text: "ego stat" 
     on_release: root.update_ego_stat() 
    Button: 
     text: "save ego stat" 
     on_release: root.save_ego_stat() 
    Button: 
     text: "Load Game" 
     on_release: root.load_ego_stat() 

出力:

enter image description here

+0

おかげさまで、ありがとう、いつもこれを理解しようとしています。 –

+0

完全に働いた:) –

関連する問題