游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1717|回复: 4

[求助]有关游戏程序设计的问题

[复制链接]

17

主题

282

帖子

436

积分

中级会员

Rank: 3Rank: 3

积分
436
发表于 2008-8-5 19:02:00 | 显示全部楼层 |阅读模式
一个有多个关卡的小游戏,渲染的方式应该如何设计比较合理呢?

以下是我原来的方式:

//渲染游戏
VOID Render()
{
        g_pSceneManager->GetDevice()->Clear( 0, NULL, D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER,
                D3DCOLOR_XRGB(0,0,0), 1.0f, 0 );
        g_pSceneManager->BeginRender();
        switch(g_pGameState)
        {
        case LOGO:        //欢迎界面
                break;
        case MENU:        //菜单选择画面
                g_pMenu->Render();
                break;
        case STORYMODEL:        //故事模式
                break;
        case FREEMODEL:                //自由模式               
                break;
        case OPTION:        //选项
                break;
        case HEROLIST:        //排行榜
                break;
        }        
        g_pSceneManager->EndRender();
}

g_pGameState是一个枚举值 enum GameSate{ LOGO,MENU, STORYMODEL,FREEMODEL,OPTION, HEROLIST, EXIT };
用来表示目前渲染的是哪一种界面
在主Render函数中通过switch判断渲染的状态进入进行对应的渲染

例如g_pMenu就是一个MainMenu(主界面菜单)的对象

这样一来我就要为每一种GameState写一个含有Render方法的类来进行相应的显示
然后为每一个关卡再写一个含有Render方法的类来进行关卡的渲染

不知道这样的设计是否得当?
更好更普遍的设计应该是怎样的呢?

149

主题

4981

帖子

5033

积分

论坛元老

Rank: 8Rank: 8

积分
5033
QQ
发表于 2008-8-5 20:24:00 | 显示全部楼层

Re:[求助]有关游戏程序设计的问题

可以参考设计模式里的状态模式
或者就用switch

19

主题

638

帖子

638

积分

高级会员

Rank: 4

积分
638
发表于 2008-8-5 20:50:00 | 显示全部楼层

Re:[求助]有关游戏程序设计的问题

把GameState做成抽象基类,有Render和Update方法。然后只要Update和Render当前的GameState就行了。
对于有些很类似的状态,可以直接用同一个GameState子类类型的多个实例,改改参数就是一个新的GameState对象。

17

主题

282

帖子

436

积分

中级会员

Rank: 3Rank: 3

积分
436
 楼主| 发表于 2008-8-5 21:17:00 | 显示全部楼层

Re:[求助]有关游戏程序设计的问题

多谢ls2位的帮助

待我仔细想想~

5

主题

115

帖子

115

积分

注册会员

Rank: 2

积分
115
发表于 2008-8-5 22:05:00 | 显示全部楼层

Re:[求助]有关游戏程序设计的问题

建议看《面向对象的游戏程序设计》
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-21 19:15

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表