GEMINIGHT 警告:您的浏览器不支持JavaScript将无法正常浏览!
Warning: Your browser does not support JavaScript!
📋注册(Register) | 📛登录(Login)
🎲

主站(Home) »  论坛(Forum)  » 程序编写(Program)
shadowice3
注册于:2009年6月29日
等级:新手上路
帖子数:4
积分:31
阅读权限:10
问:通常的一个游戏,比如《异想II》,它采用一种什么方式的设计模式(design patte 1樓
Tags引力关联贴
其实这个问题问的有点笼统了。具体点来说的话,问题出自我自己正边学边弄的一个独立游戏中。
是这样的:
为了我代码的重用性,我把我的图像引擎从游戏引擎中独立出来了。首先我想知道:这样对不对?

然后,为了保证这个库的纯正,我不希望在图像引擎的代码里处理任何和游戏本身有关的东西。比如,我并不希望在图像引擎中出现类似:
if(nextframe==NULL)
{
game->setState(gameover);//这个指针和函数的调用方式是我非常不希望它出现的.....
}
//以上是伪代码,

那么,有没有其他的办法可以让游戏引擎知道图像引擎的运行状态,而不必每一帧,每一次循环都去检索一下呢?(每次检索的话,感觉效率太低了)

难道只有模仿c#的委托机制么?追根究底,委托还是函数指针啊.....


总结问题:
1.我把图像引擎从游戏引擎中独立出来,自成为一个类库,以便于以后写游戏时的重用,这种方法正确吗?可取吗?
2.因为我设计的结构式,游戏引擎里面包含了图像管理引擎,声音控制类和输入控制类。所以,我不希望在创建图像管理引擎的时候,必须把一个游戏引擎对象的指针给它,否则结构上感觉很不美观。这种想法正确么?
3.如果错误,那么请问应该用一种什么方法来看待这种关系?
   如果正确,那么请问我应该是用什么方法来达成这种类似回调函数的效果?函数指针么?
4.可能冒昧了,我有点想知道《异想II》是如何处理当——你鼠标移到一个按钮上,点击按钮以后,数据区域或者场景发生相应变化——这种逻辑效果的?

提问最后,感谢答疑者。


🗓2009-7-26 20:28(约15年前)  👁802
Jeminai

自称:雙子騎士
注册于:2005年5月26日
等级:站长
帖子数:6428
积分:41808
阅读权限:200
2樓

1: 理应如此,便于日后移植留后手。

\N

2:我和你相反,我是把图像管理引擎,声音控制类和输入控制类的指针给游戏引擎随时调用。

\N

3:我是采用游戏引擎初始化时,把各种所需的各种类指针装载进来恭候调用。

\N

4:你要编写一个专门的操作界面UI类,在这里面获取和处理各种消息事件,当然这个类指针也要装进游戏引擎系统里的,然后游戏系统根据UI的获取的消息事件做相应的处理。

\N

 

\N

其实说起来这几句话,实际做起来那麻烦的老了去了。[em82]

SIGNATURE
我的Blog网址:blog.geminight.com
🗓2009-7-26 21:57(约15年前)
shadowice3
注册于:2009年6月29日
等级:新手上路
帖子数:4
积分:31
阅读权限:10
3樓
 受教了。实际做起来有多麻烦,我已经深有体会了啊...[em06]
🗓2009-7-27 10:14(约15年前)

标题(Title):
关键字标签(Tags):
路人:回贴可以不必登录