SimpleCG程序运行框架介绍

        SimpleCG对于不同类型的APP可以使用不同的运行框架。当前开发框架分别有简单的动画、一般界面APP,游戏类APP。使用方法如下:

一、简单动画演示

        这种是最简单的,一般直接按时间顺序绘制动画每一祯就可以了,基本不涉及交互界面。这种模式的程序在前面已经有许多演示了,基本前面的很多绘制演示都是采用这种方式的框架。最大的特点就是不需要界面交互,按流程顺序绘制就行了。与大家学习C语言时的控制台交互非常相似。下面看看怎么使用这种框架:

首先是包含头文件,动画演示框架包含的头文件是CGBoard.h

#include "../import/include/CGBoard.h"

然后需要链接库文件

#ifdef _DEBUG
#pragma comment(lib,"../import/lib/SimpleCG_MDd.lib")
#else
#pragma comment(lib,"../import/lib/SimpleCG_MD.lib")
#endif

 接着定义绘制函数及运行框架代码

void DrawProcess()
{
	//此处添加动画绘制代码
}
int _tmain(int argc, _TCHAR* argv[])
{
	if( !ShowingBoard(C_IMAGE_WIDTH,C_IMAGE_HEIGHT, DrawProcess))
		return 1;
	CloseBoard();
	return 0;
}

其中DrawProcess名字可以随便取,只要是不含参数及返回值的函数就可以,并把它作为ShowingBoard的第三个参数调用即可,另外两个参数分别是画布长度及宽度。所以整个框架如下所示:

#include "../import/include/CGBoard.h"

#define C_IMAGE_WIDTH			640
#define C_IMAGE_HEIGHT			480
#ifdef _DEBUG
#pragma comment(lib,"../import/lib/SimpleCG_MDd.lib")
#else
#pragma comment(lib,"../import/lib/SimpleCG_MD.lib")
#endif
void DrawProcess()
{
	//绘制
}
int _tmain(int argc, _TCHAR* argv[])
{
	if( !ShowingBoard(C_IMAGE_WIDTH,C_IMAGE_HEIGHT, DrawProcess))
		return 1;
	CloseBoard();
	return 0;
}

演示例子可以看看前面介绍的汉诺塔动画中秋贺卡动画​​​​​​​。

二、界面APP

        第二种比较常见使用是应用界面APP,这种是典型的Windows界面APP。类似以下的界面

这个是一个录屏软件,可以看到这种界面最大的特点就是有一些控件。所以可以接受用户的交互操作,对用户的操作进行一些反馈输出。下面看看这种框架如何使用。

首先包含的头文件不一样,需要包含SimpleCG.h

#include "../../import/include/SimpleCG.h"

 然后链接库文件

#ifdef _DEBUG
#pragma comment(lib,"../../import/lib/SimpleCG_MDd.lib")
#else
#pragma comment(lib,"../../import/lib/SimpleCG_MT.lib")
#endif

 然后是框架调用代码:


	if( !InitApp(C_IMAGE_WIDTH, C_IMAGE_HEIGHT))
		return 1;

	Redraw();
	ReflushWindow();

	RunningApp();
	ReleaseApp();

下面看看整体代码:

#include "../../import/include/SimpleCG.h"

#ifdef _DEBUG
#pragma comment(lib,"../../import/lib/SimpleCG_MDd.lib")
#else
#pragma comment(lib,"../../import/lib/SimpleCG_MT.lib")
#endif


void Redraw()
{
	//根据用户输入进行绘制
}
LRESULT OnRButtonDown( HWND hWnd, WPARAM wParam, int nX, int nY )
{
	Redraw();
	return TRUE;
}
int _tmain(int argc, _TCHAR* argv[])
{
	SetMouseProcess( enumINMSG_LBUTTONDOWN, OnLButtonDown);
	if( !InitApp(C_IMAGE_WIDTH, C_IMAGE_HEIGHT))
		return 1;
	
	Redraw();
	ReflushWindow();

	RunningApp();

	ReleaseApp();
	return 0;
}

可以看到这里添加了设置鼠标点击的操作代码。所以可以根据用户对输入的操作进行反馈输出。在前面我们的一个课程设计的例子程序---学生信息管理系统就是一个使用这种框架的典型例子,同学可以下载源码察看。 

三、游戏APP

        最后一种是简单游戏框架。这种就是游戏运行框架,一般就是一个游戏循环,然后更新和绘制游戏画面。介绍这种框架就是为了接下来介绍小游戏编写做准备的。链接库文件和头文件与界面APP类似,不同的地方是框架运行模式。游戏框架是按固定频率刷新页面,更新画面内容。整个框架代码如下所示:

#include "../import/include/SimpleCG.h"


#define C_IMAGE_WIDTH			640
#define C_IMAGE_HEIGHT			480

#ifdef _DEBUG
#pragma comment(lib,"../import/lib/SimpleCG_MDd.lib")
#else
#ifdef _W64
#pragma comment(lib,"../import/lib/x64/MTRelease/SimpleCG_MT64.lib")
#else
#pragma comment(lib,"../import/lib/SimpleCG_MT.lib")
#endif
#endif


//绘制游戏
void RenderGame()
{
	//绘制界面
	
}
//更新游戏状态
void UpdateGame( UINT nElapse )
{
	static int s_nLastTick = 0;
	if( ( nElapse - s_nLastTick )<120 )
		return;

	s_nLastTick = nElapse;

}


LRESULT OnLButtonDown( HWND hWnd, WPARAM wParam, int nX, int nY )
{
	return false;
}
LRESULT OnLButtonUp( HWND hWnd, WPARAM wParam, int nX, int nY )
{
	return false;
}
LRESULT OnRButtonDown( HWND hWnd, WPARAM wParam, int nX, int nY )
{
	return false;
}
LRESULT OnRButtonUp( HWND hWnd, WPARAM wParam, int nX, int nY )
{
	return false;
}
LRESULT OnMouseMove( HWND hWnd, WPARAM wParam, int nX, int nY )
{
	return false;
}


//初始化游戏
void InitGame(HWND hWnd)
{
	srand(GetTickCount());
	//按键处理初始化
	GetMouseInput()->onMouseDownLeft	= OnLButtonDown;
	GetMouseInput()->onMouseDownRight	= OnRButtonDown;
	GetMouseInput()->onMouseUpLeft		= OnLButtonUp;
	GetMouseInput()->onMouseUpRight		= OnRButtonUp;
	GetMouseInput()->onMouseMove		= OnMouseMove;
	
}

int _tmain(int argc, _TCHAR* argv[])
{
	SCG_GameLoopInfo info;
	info.nFPS				= 60;
	info.nHeight			= C_IMAGE_HEIGHT;
	info.nWidth				= C_IMAGE_WIDTH;
	info.pFunDrawProcess	= RenderGame;
	info.pFunFrameUpdate	= UpdateGame;
	info.pFunInitGame		= InitGame;
	info.pFunInput			= NULL;

	if( !StartGameLoopEx( &info ))
		return 1;
	return 0;
}

通过以上代码,将在UpdateGame中不断更新游戏状态,并依据不同状态使用在RenderGame中绘制 相应游戏内容就可以了,大大简化了小游戏开发的过程。后面将通过具体游戏介绍游戏框架的使用。

四、结语

        通过以上三个框架的内容介绍,同学们可以依据所设计软件的特点选择适当的框架进行SimpleCG的应用开发。后续将用几个小游戏的例子进一步介绍游戏框架的开发方法,后续将介绍的游戏有扫雷、贪吃蛇、俄罗斯方块、五子棋等,有兴趣的同学可以关注并留意后续文章介绍。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

b2b160

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值