同人星球BBS -> 游戏制作 -> [讨论]4.9日晚和叶叶讨论STG制作的补充 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

littlewater 06-04-10 12:24

我们说道 STG的大致结构的时候我因为实验室关门被赶走了。。。

叶叶觉得STG的过程应该是用 过程化 (我这么理解)的方式来实现
其实本身GAME都是一个过程,从开始到循环GAME再结束,理论上过程化做GAME是标准的

按照叶叶的打算是把选择项等当作主程式,而基本的游戏过程是副程式
简单的讲就是这么回事:)当然如果要考虑到N多细节恐怕也不容易实现

OO给我们一个更完美的方案,类似于把整个过程封装为一个对象来看:
GAMEOBJ有自身的构造和析构函数,当然为了显式调用(有时候也不得不这样),你可以自己再额外添加一套init end的程式,从WINDOWS编程进入的一套整体都可以被GAMEOBJ封装起来

//
class GAMEOBJ
{
// member :
private :
...
HWND * hwnd_main ; .... // 这里宣告变量
public :
// 一般不推荐使用可以直接修改的成员变量,原因叶叶知道了

// function :
private :
bool init () ;
void loop() ; // 主要函数
void end() ;

public :

} ;

// implements
... ...


而相对在主程式中(一般是WINMAIN函式)仅仅只要在全局宣告一个GAMEOBJ的变数,然后在后面进行初始化+回圈+结束即可

面向对象的体系结构强调封装隐藏,相对于制作细节模块的人员(当然做小游戏的时候都是你自己)它不需要知道内部细节,但是仅仅调用几个做好的模块/函式即可

(水水即兴发挥,有什么问题跟帖巴!~重在参与)

櫻葉 06-04-10 22:09
意思是說只要使用這種方法就可以不用去造其他的副程式了嗎?

不..應該是說副程式都使用CLASS去造了..這樣的好處我是不太懂..方便物件導向?

另外
public :

private:
的用法是了解了...不過不推薦使用public的原因我還是一知半解..

還有講到那個基類跟子類的用法

class Flier { ... } (這是基類)
class Enemy : public Flier {}(這是子類?)
class Player: public Flier {} (這是子類?)

今日測試了一下沒能搞定這種用法...可能是我理解錯誤了...可以再講清楚些嗎><

littlewater 06-04-10 22:17
我说的是不很清楚拉
很笼统的。。。
叶叶哪里不明白说下,或者
哪里有错说明下XD

櫻葉 06-04-12 00:19
這個主題先保留XD..我有空把問題貼上來..呵呵..趕作業趕到快死掉XD..

tczzya 06-06-15 17:41
[s:4] 小声的说:基类和子类是相对的,class a:public(或者private,protect) b
的话,b是a的基类,a是b的子类。
另外,不放public的原因可能是怕数据未做检测而引起错误,因为可能传进一个未初始化的变量等。


查看完整版本: [-- [讨论]4.9日晚和叶叶讨论STG制作的补充 --] [-- top --]

Powered by PHPWind v5.3 Code © 2003-05 PHPWind
Time 0.037331 second(s),query:4 Gzip enabled

You can contact us