我有兴趣创建一个使用分形图来获得更真实地理的游戏.但是,我发现的唯一的分形图程序只有Windows,例如Fractal Mapper.不用说,它们也不是开源的.
是否有可用的开源分形图创建器,最好是Python或C/C++?理想情况下,我想要一些可以"插入"程序,而不是独立的东西.
由于Python是一种动态的解释语言,因此您无需在运行代码之前编译代码.因此,只需编写代码,运行代码,查看发生的问题并修复它们就非常容易.使用热键或宏可以使这非常快.
因此,因为很容易立即看到程序的输出和可能发生的任何错误,所以我还没有使用调试工具.有什么情况可能要求使用真正的调试器与我目前使用的方法?
在我陷入困境之前我想知道,因为我不知道如何解决这个问题而感到沮丧.
我有一个从pickle文件导入数据的应用程序.它适用于Windows,但Mac和Linux的行为很奇怪.
在OS X中,除非我将文件类型设置为*.*,否则pickled文件(文件扩展名".char")不可用作选择.然后,如果我选择一个具有.char扩展名的文件,它将不会加载,从而产生错误
Run Code Online (Sandbox Code Playgroud)unpickle_file = cPickle.load(char_file)ValueError:无法将字符串转换为float
但是,如果我创建一个没有.char扩展名的文件,该文件将加载正常.
在Linux中,当我使用"文件打开"对话框时,我的pickle文件是不可见的,无论它们是否具有文件扩展名.但是,我可以在Nautilus或Dolphin下看到它们.它们根本不存在于我的应用程序中.
编辑这是保存代码:
def createSaveFile(self):
"""Create the data files to be saved and save them.
Creates a tuple comprised of a dictionary of general character information
and the character's skills dictionary."""
if self.file_name:
self.save_data = ({'Name':self.charAttribs.name,
<snip>
self.charAttribs.char_skills_dict)
self.file = open(self.file_name, 'w')
cPickle.dump(self.save_data, self.file)
self.file.close()
Run Code Online (Sandbox Code Playgroud)
这是开放代码:
def getCharFile(self, event): # wxGlade: CharSheet.<event_handler>
"""Retrieve pickled character file from disk."""
wildcard = "Character files (*.char) | *.char | All files (*.*) | *.*"
openDialog …Run Code Online (Sandbox Code Playgroud) 我正在尝试为游戏创建角色生成向导.在一个班级中,我计算角色的属性.在另一个类中,我将根据角色的属性向用户显示哪些专业可用.但是,我不记得如何在不同的类之间传递变量.
这是我的一个例子:
class BasicInfoPage(wx.wizard.WizardPageSimple):
def __init__(self, parent, title):
wiz.WizardPageSimple.__init__(self, parent)
self.next = self.prev = None
self.sizer = makePageTitle(self, title)
<---snip--->
self.intelligence = self.genAttribs()
class MOS(wx.wizard.WizardPageSimple):
def __init__(self, parent, title):
wiz.WizardPageSimple.__init__(self, parent)
self.next = self.prev = None
self.sizer = makePageTitle(self, title)
def eligibleMOS(self, event):
if self.intelligence >= 12:
self.MOS_list.append("Analyst")
Run Code Online (Sandbox Code Playgroud)
问题是我无法弄清楚如何使用BasicInfoPage类中的"智能"变量到MOS类.我在互联网上尝试过几种不同的东西但似乎没什么用.我错过了什么?
编辑我在发布之后意识到我没有那么好解释.我试图从20世纪80年代创建一个计算机版本的Twilight 2000 RPG.
我正在使用wxPython来创建向导; 我的类的父类是来自wxPython的向导.该向导将引导用户创建一个字符,因此"基本信息"页面(类BasicInfoPage)允许用户为角色的属性提供角色的名称和"滚动".这就是"自我智能"的来源.
我正在尝试在向导中使用为她的页面创建的属性,用户可以选择角色的特性.可用的专业取决于角色的属性,例如,如果智力足够高,角色可以是英特尔Anaylst.
我编程已经好几年了,尤其是OOP创意.这就是为什么我对如何用类和方法创建本质上是全局变量感到困惑.
很多时候,我会在wxPython应用程序中对静态文本使用相同的字体方案.目前我正在SetFont()调用每个静态文本对象,但这似乎是很多不必要的工作.但是,wxPython演示和wxPython In Action书中没有讨论这个问题.
有没有办法轻松地将相同的SetFont()方法应用于所有这些文本对象,而不是每次都进行单独的调用?
我正在制作一个理想的适合向导概念的程序; 用户完成了为游戏创建角色的步骤.
但是,我意识到向导的局限性使得设计"优雅"逻辑流变得困难.例如,因为向导的所有页面都是同时初始化的,所以我不能在一个页面中输入的值可用于下一个页面.我必须在每个页面上放置一个按钮以获取上一页的值,而不是简单地自动填充字段.
我已经考虑过使用向导的替代方案.我认为最好的想法是在一个面板上有一些按钮来改变另一个面板上的信息,例如分割窗口.
但是,我在wxPython中找不到关于如何动态更改面板的任何文档.到目前为止我发现的一切都非常静态,因此使用了向导.即使是"wxPython in Action"一书也没有提到它.
是否有任何教程可以制作"动态面板"或更好地管理向导?
我在 wxPython 中有一个文本框,它获取dictionary.items() 的输出,并在将项目添加到字典时将其显示给用户。然而,原始数据非常难看,看起来像
[(u'BC',45)
(u'CHM',25)
(u'CPM',30)]
Run Code Online (Sandbox Code Playgroud)
我知道dictionary.items()是一个元组列表,但我似乎不知道如何制作一个与wxPython的SetValue()方法兼容的好格式。
我尝试过迭代列表和元组。如果我使用print语句,输出就很好。但是当我用 SetValue() 替换print语句时,它似乎只获取每个元组的最后一个值,而不是元组中的两个项目。
我还尝试创建一个字符串并将该字符串传递给 SetValue(),但同样,我只能获取元组中的一项或另一项,而不能同时获取两项。
有什么建议么?
编辑:是的,我将dictionary.items()的结果传递到wxPython应用程序中的文本字段。我只是寻找类似的结果,而不是像上面这样的结果:
BC 45
CHM 25
CMP 30
Run Code Online (Sandbox Code Playgroud)
没什么特别的,只是简单地从每个元组中提取每个值并制作一个可视列表。
我尝试制作一个字符串格式并将其传递给 SetValue() 但它挂在元组中的两个值上。它要么双重打印每个字符串并将整数加在一起,要么简单地返回整数,具体取决于我如何格式化它。
我对制作桌面小部件感兴趣,类似于 Apple 的 Dashboard 或 Vista 的东西。如果可能的话,我想让它们跨平台。Opera 的小部件是跨平台的,但要求用户安装 Opera,因此这是一个很大的限制。
我知道大多数小部件都是用 HTML/XML、CSS 和 Javascript 制作的。有没有办法使用 Python 创建它们?
更新:我确实找到了一个谈论睡衣的网站。有人有这方面的经验吗?如果有,它的功能/限制是什么?
关于另一个问题,您如何考虑可能发生变化的路径?例如,如果一个程序正在调用与该程序位于同一目录中的文件,则可以简单地使用*nix中的路径“.\foo.py”。然而,显然 Windows 喜欢硬编码路径,例如“C:\Python_project\foo.py”。
如果路径改变会发生什么?例如,该文件可能不在 C: 驱动器上,而是位于拇指驱动器或可以更改驱动器号的外部驱动器上。该文件可能仍与程序位于同一目录中,但它与代码中的驱动器号不匹配。
我希望该程序是跨平台的,但我希望我可能必须使用os.name或其他东西来确定要使用哪个路径代码块。
我正在制作游戏,其中一种方法根据技能值计算角色的基本命中数.该方法当前单独计算每个值,因为每种技能可以在短,中和长范围内使用.
我原本以为我可以将技能组合成一个元组并迭代它,动态创建每个命中数.但我不知道它是否真的有可能,因为我目前每个命中数都分配给它自己的变量.
我还想过为每个范围创建一个方法,并将元组作为参数传递.我可以使用结果值创建一个新的元组或列表,然后将它们分配给各个变量,但我不知道它是如何以这种方式更好,除了它看起来不那么复制和粘贴.
这是我现在拥有的:
def calcBaseHitNumbers(self, dict):
"""Calculate character's base hit numbers depending on skill level."""
self.skill_dict = dict
self.rifle = self.skill_dict.get('CRM', 0)
self.pistol = self.skill_dict.get('PST', 0)
self.big_gun = self.skill_dict.get('LCG', 0)
self.heavy_weapon = self.skill_dict.get('HW', 0)
self.bow = self.skill_dict.get('LB', 0)
#self.skill_tuple = (self.rifle, self.pistol, self.big_gun, self.heavy_weapon,
# self.bow)
#---Short range
## for skill in self.skill_tuple:
## self.base_hit_short = skill * 0.6
self.charAttribs.bhCRM_short = self.rifle * 0.6
self.charAttribs.bhPST_short = self.pistol * 0.6
self.charAttribs.bhHW_short = self.heavy_weapon * 0.6
self.charAttribs.bhLCG_short = self.big_gun * 0.6 …Run Code Online (Sandbox Code Playgroud)