如何在课堂外存储相对位置信息?

时间:2016-12-24 14:16:49

标签: python data-structures kivy

我有一个非常简单的python问题,有kivy,但我认为它是一般的架构问题

假设,我想写一个有几个级别的游戏。

问题1 :由于我希望游戏在多个不同的设备上运行,我想使用小部件相对于屏幕尺寸的位置,因为屏幕尺寸会而变化。

问题2 :由于会有很多级别,我想将所有位置信息存储在一个单独的文件中(甚至可能不是.py格式)导入它们。

问题 : 如何在kivy(pygame或任何其他库)实例化之前存储相对于屏幕大小的位置信息?

示例 如何在“游戏”类之外存储以下位置信息:

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

唯一的想法,我能提出的是存储因素

e.g。

rel_x = 0.5
rel_y = 0.6667

然后

pos_x = screen_width * rel_x
pos_y = screen_height * rel_y

但这对我来说很尴尬。有没有更好的方法呢?

1 个答案:

答案 0 :(得分:1)

kivy提供了一些以json,dict或redis格式存储信息的方法。我通常使用json来做这些事情。所以我认为这个信息需要放在一个json文件中。试试吧。

from kivy.storage.jsonstore import JsonStore
store = JsonStore('pos.json')
store.put('pos_x', pos='{}'.format(screen_width * rel_x)

这是如何以json形式存储内容的...所以你可以尝试在屏幕加载之前调用值,方法是在最终return语句之前执行此操作

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'

这只是一个普遍的想法,我希望它可以帮助你