制作地图编辑器的语言/GUI库

7 投票
3 回答
1184 浏览
提问于 2025-04-16 03:43

我正在为我开发的一个应用设计一个跨平台的地图编辑器,但我对选择什么编程语言和图形界面库有点犹豫。简单来说,这个编辑器需要能够解析和输出xml文件。

我对C++、Lua和Perl比较熟悉,不过我也愿意尝试Python(可以借此练习一下)。我更倾向于用脚本语言来提高工作效率。

如果有推荐的方案,我会很感激,谢谢。

另外,我还希望能支持填写表单等功能。

附言:我试过扩展现有的地图编辑器,但发现这样做并不划算,因为它们在基本功能上无法满足我的需求,最终还是得重写整个东西。

3 个回答

2

在Lua的基础上,我推荐使用IUP来制作图形界面(GUI)。这个工具轻量级,能够在Linux和Windows上使用,而且和Lua的结合非常好。如果你喜欢Gtk,IUP也有一个Gtk的驱动,这样理论上可以在任何支持Gtk的系统上使用。

另一个不错的选择是wxWidgets,它也有一个可以和Lua结合的包装器。

IUP和wxWidgets都包含在Lua for Windows这个软件包里。

4

我个人比较喜欢用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;
2

我推荐使用Python和PyQt来完成这个工作。Qt提供了一个叫做QGraphicsScene的类,用于管理场景(也就是可以放置不同层次的物体、缩放、碰撞检测、事件处理、坐标转换等等),还有一个配套的控件叫QGraphicsView,用来显示这些内容。它还支持拖放功能,这样就可以实现互动式的物体放置。

用这些类来实现一个地图其实很简单,只需要创建一些QGraphicItems(比如矩形、图形等),然后把它们添加到场景中,Qt会处理剩下的事情。你可以通过阅读文档来了解这些内容是如何结合在一起的,特别是那篇名为“图形视图框架”的文档。我最近为一个客户实现了类似的功能,对这种方法非常满意。

撰写回答