搭建项目
项目组织策略
为了记录开发过程,我们决定以每阶段对应一个项目的方式来组织程序,为此我们通过解决方案来管理多个项目。

首先我们先创建一个空白解决方案,然后向该解决方案中添加一个控制台应用项目。

之后,每进行到一个阶段,我们便向此解决方案添加一个项目。在解决方案中,当前活动项目是以粗体文本显示,你可以通过项目的右键菜单设置为启动项目将选定项目激活。

然后,拷贝Easy2D SDK到解决方案文件夹,并新建一个Res文件,最终带来个文件夹结构如下图。

配置Easy2D
在项目中使用Easy2D有两种方式
第一种方式是将Easy2D.h和Easy2D.lib拷贝到项目目录下。

第二种方式是配置附加库目录的方式;如果你的程序有很多第三库支持,这通常是更合理的方式。需要注意的是,我们项目中必须有.c或.cpp文件,配置对话框才能显示出C/C++选项,其中
- 附加包含目录:这里指定的是开发库相关的头文件所在目录
- 附加库目录:这里指定的是开发库提供的库文件(.lib)所在目录


依照图中配置完目录后,我们就可以编写程序来验证项目配置的正确性了。
程序
#include <stdio.h>
#include "Easy2D.h"
//=============================================================================
// 绘制场景
//=============================================================================
void Render()
{
}
//=============================================================================
// 键盘事件处理
//=============================================================================
void Keyboard(E2DKeyboardEvent kbe, E2DScancode sc)
{
printf("%-12s", "Keyboard: ");
printf("%-14s", kbe == E2D_KEYDOWN ? "KeyDown" : "KeyUp");
printf("key: %d\n", sc);
}
//=============================================================================
// 鼠标事件处理
//=============================================================================
void Mouse(E2DMouseEvent me, E2DMouseButton button, int x, int y, int lbs, int mbs, int rbs)
{
printf("%-12s", "Mouse: ");
printf("%-14s", me == E2D_MOUSEBUTTONDOWN ? "ButtonDown" : me == E2D_MOUSEBUTTONUP ? "ButtonUp" : "Move");
printf("point: [%3d, %3d]\t", x, y);
printf("state: [%d, %d, %d]\n", lbs, mbs, rbs);
}
//=============================================================================
// 程序入口点
//=============================================================================
int main()
{
if (E2D_Init("PushBox", 300, 200))
{
E2D_RenderFunc(Render);
E2D_KeyboardFunc(Keyboard);
E2D_MouseFunc(Mouse);
E2D_Run();
E2D_Release();
}
}
程序将Easy2D库组织了起来,因为游戏需要通过键盘来便捷的移动角色,通过鼠标进行关卡选择等操作,因此我们向Easy2D注册了相应的回调函数。在这些回调用中,我们打印出了鼠标及键盘的产生的事件,及对应的按键状态。通过Visual Studio的开始执行命令启动程序后,执行效果如下。
