我有一个非常简单的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
但这对我来说很尴尬。有没有更好的方法呢?
答案 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'
这只是一个普遍的想法,我希望它可以帮助你