2016-12-24 6 views
-1

私は潜在的に、キビと、非常に単純なpythonの質問がありますが、それは一般的な建築の質問であると仮定します。クラスの外に相対位置情報を保存する方法は?

私はいくつかのレベルを持つゲームを書きたいとします。

問題1:私はゲームはいくつかの異なるデバイス上で実行したいので、私は、画面サイズが異なりますので、画面サイズにウィジェットの相対位置を使用します。

問題2:多くのレベルが存在しますので、私は(の.pyフォーマットでさえないかもしれない)別のファイル内のすべての位置情報を保存し、それらをインポートしたいと思います。

質問: kivy(pygameの、または他のライブラリが)でもインスタンス化される前にどのように私は、画面サイズに相対的な位置情報を保存することができますか? 「ゲーム」クラスの外に、次の位置情報を格納する方法

アン例

pos_x = self.width/2 
pos_y = (self.height/3) * 2 

だけアイデアは、私が思い付くことができが要因

例えばを格納することです

rel_x = 0.5 
rel_y = 0.6667 

、その後

pos_x = screen_width * rel_x 
pos_y = screen_height * rel_y 

それは私にぎこちない感じています。これを行うより良い方法はありませんか?

+0

-1の理由は何ですか?間違った命名規則を使用しましたか?私の質問に対する答えは本に書かれているはずですか?少なくとも私に探し求めている言葉を教えてください。匿名のネットは素晴らしい場所ですが、私の目的のために、これは私が何かを学ぶように頼んだので、これはあまり役に立ちません。 – Nebelhom

答えて

1

kivyは、情報をjson、dict、またはredisの形式で保存できるいくつかの方法を提供します。私は通常このようなものを行うためにjsonを使用します。だから私はこの情報をjsonファイルに入れる必要があると思います。これを試してみましょう。

uは最終 return文の前にこれを行うことによって、画面がロードされる前に値を呼び出して試すことができform..so JSONで何かを格納する方法です
from kivy.storage.jsonstore import JsonStore 
store = JsonStore('pos.json') 
store.put('pos_x', pos='{}'.format(screen_width * rel_x) 

class Test(App): 
    def __init__(self,**kwargs): 
     super(Test,self).__init__(**kwargs) 
     self.checker() 
     return Root() 

    def checker(self): 
     store = JsonStore('pos.json') 
     if store.exists('pos_x'): 
      'do what u want to do here' 
     else: 
      'blah blah blah' 

これは単に一般的ですアイデア、それはあなたを助けることを願っています

+0

あなたの入力マンに感謝します。画面サイズがわかる前に相対位置を保存する方法についての考え方私よりも賢明なアプローチがありますか?どうもありがとう :) – Nebelhom

関連する問題