2016-12-24 65 views
-1

我有可能一个很简单的问题,蟒蛇,与kivy,但我相信它是一个通用的架构问题如何在课堂外存储相对位置信息?

想,我想要写一个游戏,有几个层次。

问题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文件中。让我们试试这个。

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

那怎么东西存储在一个JSON form..soü可以尝试通过最终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' 

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

+0

感谢您的输入人。有关如何在屏幕大小已知之前最好地存储相对位置的想法?有没有比我更明智的方法?非常感谢 :) – Nebelhom