StupidBeauty
Read times:1488Posted at:Wed Feb 22 20:47:25 2012
- no title specified

ClanLib教程翻译:ClanLib教程 – 第1部分:起步,ClanLib Tutorial – Part 1: Getting Started

第1部分 : 起步

欢迎来到ClanLib 教程系列,我们的最终目的是使用C++来构建一個稳腚的多人游戏架构。前两個部分是关于ClanLib 的一般用法的,而后面的部分将會更多地面向网络、游戏和架构来讲。在整個系列中,妳會学到海量的关于ClanLib的东西,因为我们會从关到尾使用它来作为我们的框架。我们會尽量小步前进,专注于代码而不是理论。

最终实现的网络架构不會是高度稳固(highly scalable)、超级先进以至于能够支撑一個海量(Massive)用户的游戏的,在教程中没空做那种调优。但是它能够支撑小型的多人游戏,并且可在它的基础上加入更多扩展性和其它先进特性。

由于代码是用C++写的,因此读者需要对那個语言比较熟悉才行。妳可以使用Linux 或Windows 作为妳的开发平台。在第1部分中,我们會配置好ClanLib 环境,并且以一個小的例子程序来确认一下它能工作。

安装ClanLib

所有的代码都會使用ClanLib 游戏开发包,它是一個跨平台的C++开发库。本质上,这個库通过一個帅气的(streamlined)编程接口提供咯一系列的功能。

要开始干活的话,我们需要先确认妳的环境已经配置好咯。如果妳是使用Linux,则下载源代码包并且阅读linux编译向导,或者干脆通过妳的Linux 发行版来下载预编译的二进制包。这些示例都會使用ClanLib 2.2。

如果在这一步有任何问题,就去ClanLib论坛寻求帮助吧 – 他们是一群活雷锋,回答问题也很快。另外在freenode.net上还有一個IRC 频道,叫做#ClanLib。用妳最爱的irc 客户端连接吧,或者直接通过网页客户端连接。在他们自己写的概述系列中也能看到很多ClanLib 文档,或者看看编程接口参考文档

示例程序的项目文件

妳需要为这些示例程序创建某种编译系统或项目文件。Linux编译向导中提供咯一些简单的Makefile,可以拿来用。这個教程不會赘述这一点,但是,如果妳无法自己完成这一点的话,我们會在每一部分中提供一個Visual Studio 2010 解决方案文件和一個简单的Makefile。

创建一個本座驾到(Hello World)程序

让我们开始吧,创建一個非常简单的程序,它會显示一個终端窗口并且输出一句问候语。这是用来测试妳的ClanLib 环境是否正常工作的。

#include <ClanLib/core.h>

#include <ClanLib/application.h>

class ConsoleProgram

{

public :

static int main ( const std :: vector < CL_String > & args )

{

CL_SetupCore setup_core ;

CL_ConsoleWindow console_window ( "Console", 80, 200 );

CL_String now = CL_DateTime :: get_current_local_time ().to_short_datetime_string ();

CL_Console :: write_line ( "At %1, we say Hello ClanLib!", now );

CL_Console :: wait_for_key ();

return 0 ;

}

} ;

// 创建一個全局的程序对象,妳必须写这一行,否则程序在启动时會无法定位到妳的程序对象。

CL_ClanApplication app (& ConsoleProgram :: main );

首先我们包含两个ClanLib 模块 – Core和Application。Core(核心)包含咯在程序里面要用到的大量通用功能 – 内存管理、事件、信号、线程、字符串、数学、输入输出、资源和其它。这是在任何ClanLib 程序中唯一一個必需的模块。

ClanApplication 模块及其对应的CL_ClanApplication类是ClanLib 中的一個利民性的模块,能帮助妳创建一個跨平台的main 函数。就像ClanLib 中的其它模块一样,它不是必须的,妳可以用其它方式自行实现,例如在 Linux 上用void main()而在 Windows 上用WinMain。为咯保持可移植性,我们在这個教程系列中都會用它。

在Linux 中,妳需要在Makefile 里手动添加正确的链接库。

我们有一個叫ConsoleProgram 的类,它有一個叫main 的静态函数,然后我们创建CL_ClanApplication 的一個全局实例。这個main 函数會在程序启动时被调用,所有的命令行参数都會位于args 向量中。

每個ClanLib 模块(除ClanApplication之外)都需要初始化一個CL_SetupXXX 对象,该对象會将对应的模块进行初始化。在这個示例里我们只使用ClanCore,所以我们将它初始化。在下一部分中妳将看到有更多的模块被初始化咯。

我们创建一個CL_ConsoleWindow 来显示我们的输出。在Linux 中,这不會做任何事情,因为妳已经打开咯一個终端窗口咯。这個可以用来在后续的开发中进行调试和输出记录信息。

最后,我们输出一句话,然后等待用户按下按键再关闭窗口,以免让终端窗口立即就关闭咯。

下载此部分的源代码和项目文件

希望妳成功地将它编译运行起来咯。如果是的话,祝贺妳成功配置好ClanLib!如果不是,那么找出问题并且解决吧,因为我们将要继续前进咯。真正的快感来自于下一部分,我们将會在屏幕上显示一些更好玩的东西。

在下一部分,我们将说说在屏幕上画东西的事 – 来阅读第2部分

Your opinions
Your name:Email:Website url:Opinion content:
- no title specified

HxLauncher: Launch Android applications by voice commands