制作地图编辑器的语言/GUI库
我正在为我开发的一个应用设计一个跨平台的地图编辑器,但我对选择什么编程语言和图形界面库有点犹豫。简单来说,这个编辑器需要能够解析和输出xml文件。
我对C++、Lua和Perl比较熟悉,不过我也愿意尝试Python(可以借此练习一下)。我更倾向于用脚本语言来提高工作效率。
如果有推荐的方案,我会很感激,谢谢。
另外,我还希望能支持填写表单等功能。
附言:我试过扩展现有的地图编辑器,但发现这样做并不划算,因为它们在基本功能上无法满足我的需求,最终还是得重写整个东西。
3 个回答
在Lua的基础上,我推荐使用IUP来制作图形界面(GUI)。这个工具轻量级,能够在Linux和Windows上使用,而且和Lua的结合非常好。如果你喜欢Gtk,IUP也有一个Gtk的驱动,这样理论上可以在任何支持Gtk的系统上使用。
另一个不错的选择是wxWidgets,它也有一个可以和Lua结合的包装器。
IUP和wxWidgets都包含在Lua for Windows这个软件包里。
我个人比较喜欢用Gtk2
和Perl 5这个组合,但这个组合在Linux系统上效果最好。你打算在哪个操作系统上运行呢?
下面是一个使用Gtk2的Perl 5脚本示例:
#!/usr/bin/perl
use strict;
use warnings;
use Gtk2;
Gtk2->init;
my $window = Gtk2::Window->new;
my $vbox = Gtk2::VBox->new;
my $label = Gtk2::Label->new("click the button");
my $button = Gtk2::Button->new("click me");
my $i;
$window->signal_connect(destroy => sub { Gtk2->main_quit });
$button->signal_connect(clicked => sub { $label->set_text(++$i) });
$window->add($vbox);
$vbox->add($label);
$vbox->add($button);
$window->show_all;
Gtk2->main;
我推荐使用Python和PyQt来完成这个工作。Qt提供了一个叫做QGraphicsScene的类,用于管理场景(也就是可以放置不同层次的物体、缩放、碰撞检测、事件处理、坐标转换等等),还有一个配套的控件叫QGraphicsView,用来显示这些内容。它还支持拖放功能,这样就可以实现互动式的物体放置。
用这些类来实现一个地图其实很简单,只需要创建一些QGraphicItems(比如矩形、图形等),然后把它们添加到场景中,Qt会处理剩下的事情。你可以通过阅读文档来了解这些内容是如何结合在一起的,特别是那篇名为“图形视图框架”的文档。我最近为一个客户实现了类似的功能,对这种方法非常满意。