2D开源游戏框架

posts(19) comments(34) trackbacks(0)
  • 联系
  • RSS 2.0 Feed 聚合
  • 管理

公告

我是Lwq49

新版的OGF 0.8.1.0项目代码已上传了!
QQ:21038481
MSN:lwq49@msn.com
欢迎大家加入OGF开源项目小组,Q群是:42407090
目标:打造类似Popcap的开源游戏开发框架

留言簿

  • 给我留言
  • 查看公开留言
  • 查看私人留言

随笔分类(18)

  •  Lego机器人(3)
  •  开源游戏框架(15)

随笔档案(19)

  • 2007年10月 (1)
  • 2007年9月 (18)

文章分类

  •  Lego机器人
  •  开源游戏框架

相册

  • Lego

在CSDN上的开源游戏框架旧文章

  • 开源游戏框架

最新随笔

  • 1. 继续放出OGF 0.8.1版的源代码,请多多支持!!!
  • 2. 关于鼠标消息处理机制的调整
  • 3. 实在佩服D鬼佬,将兴趣与艺术相结合
  • 4. OGF 0.81 debug版代码发布
  • 5. OGF框架范例11 图形对象及对象的区域
  • 6. OGF开发近况 20070806
  • 7. OGF框架之网络应用(下)
  • 8. OGF框架之网络应用(上)
  • 9. OGF框架范例07 布局器
  • 10. OGF框架范例06 物件动作

搜索

  •  

积分与排名

  • 积分 - 23085
  • 排名 - 752

最新评论

  • 1. re: 一些乐高NXT相关的网站与博客
  • 评论内容较长,点击标题查看
  • --business loans
  • 2. re: OGF 0.81 debug版代码发布
  • libc.lib在哪里
  • --j
  • 3. re: 一些乐高NXT相关的网站与博客
  • 评论内容较长,点击标题查看
  • --home loans
  • 4. re: 继续放出OGF 0.8.1版的源代码,请多多支持!!!
  • 谢谢分享,下下来研究下!
  • --Nation
  • 5. re: 一些乐高NXT相关的网站与博客
  • 评论内容较长,点击标题查看
  • --thesis service

阅读排行榜

评论排行榜

View Post

OGF框架范例04 游戏环节

        我对游戏开发的看法是要尽量将游戏细化,最基本的是将游戏划分为多个环节,每个环节尽可能独立处理本环节的事情,所以於生出“CGameSection”这个类模板。在OGF中,当处于某一环节内,其它环节是不会收到任何消息的并且其内的物件也不会渲染,这使环节变得相对地独立。

Sample04
简介:游戏环节
       使用游戏环节对游戏进行分阶段管理.使用环节控制可以将整个游戏流程划分为多个环节,例如:SFLASH窗口环节,菜单环节,游戏环节,结束环节等,具体视游戏大小而定.在此例中,会创建两个环节:CMenuSection, CMainSection,开始时会停留在MenuSection阶段,有一个"Start"文本,当点击后会转换至CMainSection环节,并实现Sample03的效果.


1.添加CMenuSection和CMainSection类,这两类都是基于CGameSection类.

2.修改CMyGameBody类的OnInitialize事件,以在此创建CMenuSection和CMainSection类的实例.

 //初始化事件
bool CMyGameBody::OnInitialize(){
 //创建自定义的环节
 CMenuSection*  pMenuSection = new CMenuSection(MAIN_MENU_SECTION);
 if(pMenuSection){
  Add((IGameSection*)pMenuSection->QueryInterface(IID_IGameSection, VER_IGameSection), pMenuSection->GetSectionID());
 }
 m_pCurrentSection = (IGameSection*)pMenuSection->QueryInterface(IID_IGameSection, VER_IGameSection);

 CMainSection*  pMainSection = new CMainSection(GAME_PLAYING_SECTION);
 if(pMainSection){
  Add((IGameSection*)pMainSection->QueryInterface(IID_IGameSection, VER_IGameSection), pMainSection->GetSectionID());
 }

 return true;
}

3.在CMenuSection类中,重载OnInitialize()事件(用于添加"Start"按钮)和OnMouseClick()事件(用于处理鼠标点击事件),两个事件的代码如下:

//初始化事件
bool CMenuSection::OnInitialize(){
 __super::OnInitialize();

 //创建文本对象
 CGameObjectText*  pGOText = new CGameObjectText();
 _SIZE     siSize;
 _POINT     piPos;

 siSize.cx = siSize.cy = 300;
 piPos.x = 350;piPos.y = 300;
 pGOText->Create("Start", siSize, "font1.fnt");
 pGOText->SetText("Start");
 pGOText->MoveTo(piPos);

 //添加文本对象至指定环节下
 m_pGameView->GetBy("default")->GetBy("default")->Add((IGameObject*)pGOText->QueryInterface(IID_IGameObject, VER_IGameObject), "Start");

 return true;
}

//鼠标点击
bool CMenuSection::OnMouseClick(IGameObject* pGameObject, float x, float y, int nType, int nKey){
 CString szName = pGameObject->GetObjectName();
 if(szName=="Start" && nType == INPUT_MBUTTONDOWN){
  m_lpFMHandles->pGameBody->SwitchSection(GAME_PLAYING_SECTION);
 }
 return true;
}

4.在CMainSection类中,重载OnInitialize()及Sample03范例中,CMyGameBody类中的鼠标,键盘事件

5.将CMyGameBody类的鼠标,键盘事件移植到CMainSection类中(按相同的方法同的内容拷贝,注意要将m_pCurrentSection->GetGameView()改为使用CGameSection内部属性m_pGameView).

5.编译并运行项目

posted on 2007-09-10 23:52 lwq49 阅读(866) 评论(0)  编辑 收藏 引用 所属分类: 开源游戏框架


只有注册用户登录后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
  • 继续放出OGF 0.8.1版的源代码,请多多支持!!!
  • 关于鼠标消息处理机制的调整
  • OGF 0.81 debug版代码发布
  • OGF框架范例11 图形对象及对象的区域
  • OGF开发近况 20070806
  • OGF框架之网络应用(下)
  • OGF框架之网络应用(上)
  • OGF框架范例07 布局器
  • OGF框架范例06 物件动作
  • OGF框架范例05 计时器
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


 
Powered by:
C++博客
Copyright © lwq49