从游戏运行过程来分析斗地主设计思路
2014-07-07 17:16
274 查看
<1>第一步
1,进入GameScene构造函数,进行各个数据成员的创建(只是创建这里并没有初始化,各种程序初始化信息的具体实现是在init函数中,由各个init**函数来实现)。
2,与之对应的是析构函数~GameScene(),它完成数据的一些清理工作,在构造函 数中new出来的,那就CC_SAFE_DELETE,通过create()出来并且retain的,那就CC_SAFE_RELEASE。
<2>第二步
1,进入init函数,在其中完成程序信息的具体初始化。
比如: A,初始化背景(这个背景略蛋疼,像素是800,600导致后边屏幕像素适配很麻烦)
B,创建一副扑克(放在桌子正中间,并且是朝背面摆放)
C,初始化玩家信息并且设定好位置类型等(这里的玩家不仅包括玩家、电脑、还有底牌、出的牌等)
D,洗牌(运用数组的randomObject和exchangeObject函数来实现洗牌)
E,初始化菜单信息。(叫分的、出牌不出的、胜负等菜单,里面的各个菜单项采用局部变量
并且初始化时将菜单隐藏掉,这样里面的菜单项就隐藏了,因为菜单是父节点,
父节点都隐藏了,子节点自然就都隐藏了)
F,初始化NPC不出牌按钮(因为出牌的话,自然就直接把牌出出来了,不出的话就显示一下不出就
行了,这个也是添加到层中后先隐藏起来)
G,初始化地主标签(设置默认地主的位置,并且隐藏起来)
H,开启scheduleUpdate来启动update定时器(从而每一帧都检测游戏当前状态,是发牌、叫分、出牌、还是胜负等状态。其实这个和碰撞检测的有点像,碰撞检测往往也开启这个定时器每一帧都进行碰撞检测,比较好的地方是这种手法的灵活运用,不像我第一次写的一直在考虑权限,比如地主和出牌权限是怎么传递的,把自己都传递蒙了)
<3>第三步
1,这个是比较重要的一步,它驱动着整个游戏的逻辑循环。由构造函数中的m_iState被初始化为0,因此
定时器一旦开启后,第一步就是游戏开始发牌,发牌的过程中会调用回调函数调整牌的位置。
2,当发完54张牌后,改变m_iState的数值为1,进入第二个游戏状态:叫分。
玩家叫分void NpcCall(Player* npc,Player* npc1),第二个参数只是为了通知他,当自己叫最大分
时,他不能再叫分了。
3,叫完地主后,改变游戏状态m_iState为2,即出牌。同时卸下叫分定时器。
4, /**玩家出牌与跟牌**/
出牌类型分为2种:跟牌和出牌。(当2个Npc都没有出牌时,自己出牌;当有Npc出牌时,自己
需要跟牌,跟牌最基本的就是要大于之前NPC要出的牌。不管是NPC还是玩家,每出一次牌都会调
用IsOutPkFinish来判断是否是否有人出完牌,当有人出完牌,立即改变游戏状态m_iState来判断输
赢)
出牌过程:
A,清理上次出的牌。
B,
/**NPC出牌与跟牌**/
A,NpcOutPoker(m_npcTwo,m_arrGenPk,m_npcTwoOut);
B,NpcGenPoker(m_npcTwo,m_arrGenPk ,m_npcTwoOut);
由此可见,Npc出牌和跟牌过程中,第二个和第三个参数很有意思。要出的牌,也就是要跟的牌。
1,进入GameScene构造函数,进行各个数据成员的创建(只是创建这里并没有初始化,各种程序初始化信息的具体实现是在init函数中,由各个init**函数来实现)。
2,与之对应的是析构函数~GameScene(),它完成数据的一些清理工作,在构造函 数中new出来的,那就CC_SAFE_DELETE,通过create()出来并且retain的,那就CC_SAFE_RELEASE。
<2>第二步
1,进入init函数,在其中完成程序信息的具体初始化。
比如: A,初始化背景(这个背景略蛋疼,像素是800,600导致后边屏幕像素适配很麻烦)
B,创建一副扑克(放在桌子正中间,并且是朝背面摆放)
C,初始化玩家信息并且设定好位置类型等(这里的玩家不仅包括玩家、电脑、还有底牌、出的牌等)
D,洗牌(运用数组的randomObject和exchangeObject函数来实现洗牌)
E,初始化菜单信息。(叫分的、出牌不出的、胜负等菜单,里面的各个菜单项采用局部变量
并且初始化时将菜单隐藏掉,这样里面的菜单项就隐藏了,因为菜单是父节点,
父节点都隐藏了,子节点自然就都隐藏了)
F,初始化NPC不出牌按钮(因为出牌的话,自然就直接把牌出出来了,不出的话就显示一下不出就
行了,这个也是添加到层中后先隐藏起来)
G,初始化地主标签(设置默认地主的位置,并且隐藏起来)
H,开启scheduleUpdate来启动update定时器(从而每一帧都检测游戏当前状态,是发牌、叫分、出牌、还是胜负等状态。其实这个和碰撞检测的有点像,碰撞检测往往也开启这个定时器每一帧都进行碰撞检测,比较好的地方是这种手法的灵活运用,不像我第一次写的一直在考虑权限,比如地主和出牌权限是怎么传递的,把自己都传递蒙了)
<3>第三步
1,这个是比较重要的一步,它驱动着整个游戏的逻辑循环。由构造函数中的m_iState被初始化为0,因此
定时器一旦开启后,第一步就是游戏开始发牌,发牌的过程中会调用回调函数调整牌的位置。
2,当发完54张牌后,改变m_iState的数值为1,进入第二个游戏状态:叫分。
玩家叫分void NpcCall(Player* npc,Player* npc1),第二个参数只是为了通知他,当自己叫最大分
时,他不能再叫分了。
3,叫完地主后,改变游戏状态m_iState为2,即出牌。同时卸下叫分定时器。
4, /**玩家出牌与跟牌**/
出牌类型分为2种:跟牌和出牌。(当2个Npc都没有出牌时,自己出牌;当有Npc出牌时,自己
需要跟牌,跟牌最基本的就是要大于之前NPC要出的牌。不管是NPC还是玩家,每出一次牌都会调
用IsOutPkFinish来判断是否是否有人出完牌,当有人出完牌,立即改变游戏状态m_iState来判断输
赢)
出牌过程:
A,清理上次出的牌。
B,
/**NPC出牌与跟牌**/
A,NpcOutPoker(m_npcTwo,m_arrGenPk,m_npcTwoOut);
B,NpcGenPoker(m_npcTwo,m_arrGenPk ,m_npcTwoOut);
由此可见,Npc出牌和跟牌过程中,第二个和第三个参数很有意思。要出的牌,也就是要跟的牌。
相关文章推荐
- [Android]开发数独游戏思路分析过程
- 面向对象系统分析设计过程-整体思路
- GEF源码分析(三) 模拟GEF设计思路,解剖GEF2 附图:包含GEF的Editor创建时序图
- 面向对象系统分析设计过程-详细设计
- 用js写“算24”游戏的思路分析与实现代码
- DirectUI相关文章(三)-DirectUI 设计思路分析
- Gamebryo 游戏引擎分析(一)整体设计
- 新产品研发 分析设计过程.rar
- [转]ASP.NET 2.0运行原理及其过程简要分析
- 目前软件分析设计过程中的主要问题 推荐
- 微内核过程引擎的设计思路和构架(刊登在第七期银弹杂志)
- ASP.NET 2.0运行原理及其过程简要分析
- 微内核过程引擎的设计思路和构架(刊登在第七期银弹杂志) [收藏]
- 完美解决双核运行游戏不稳定问题,并提升XP运行效率正文分析错误
- ASP.NET 2.0运行原理及其过程简要分析
- 嵌入式uCLinux内核启动过程分析与设计(ZT)
- 微内核过程引擎的设计思路和构架(刊登在第七期银弹杂志)
- 微内核过程引擎的设计思路和构架
- 软件在线升级设计方案及演变过程分析
- ASP.NET 2.0运行原理及其过程简要分析