cocos2dx实现单机版三国杀(一)

摘要:
首先,您需要一个UI交互类GameUI层和一个游戏驱动程序类。负责游戏逻辑的循环被临时定义为GameSceneGameSceneobj调用update来更新游戏,addchildgameUIobj呈现UI。上面是cocos2d类,下面需要一些辅助类,例如PlayerInfo玩家信息类,以存储玩家信息;扑克类负责制作我们的卡片。Gamesceneobj负责更新playerinfoobjdate,而gameuiobj负责呈现playerinfoobjate,如玩家化身、生活、装备等。该甲板由调用Shuffle功能的Gamesceneobj实现。每次调用都会“创建”一个新牌组。实现是成对地随机交换总元素的位置,并执行长度-1次。

首先需要一个UI交互类 GameUI   -layer

一个游戏驱动类,负责游戏逻辑的循环 暂时定为GameScene- scene 

GameScene obj 调用update 更新游戏,addchild gameUI obj 呈现UI.

上面的都是cocos2d 类

下面需要一些辅助类

比如 PlayerInfo 玩家信息类,存储玩家信息;Poker 类 负责构建我们的牌(主要是显示在 gameui obj 上)。

gamescene obj  负责更新 playerinfo obj date,而gameui obj 负责呈现 playerinfo obj  date,比如玩家头像、生命、装备等等。

Poker 类主要构建于 gameui obj 绘制牌,因为poker类只有一个sprite_pic 需要绘制,故我在进行非绘制操作时,对于牌的操作是以int来代表具体的牌型(因为暂时牌型较少,且

忽视 花色和数字),当需要绘制牌时,只需要根据传入的int 来翻译成指定类型的xx.png图片,在画面上就是一张指定的牌。

牌的绘制必然是因为玩家信息的改变(手牌数),所以需要实现画面和数据的"同步更新",比如为playerinfo obj ->手牌槽 添加元素a时,gameui obj 也需要构建 a对应的poker 。

暂时还没考虑用牌,只有摸牌和弃牌。牌堆由gameScene obj 调用洗牌function 实现,每次调用"创建"一个新的牌堆,实现是 总元素两两随机交换位置,执行length-1次。

游戏逻辑的循环由update实现,主要是判断 isgameover->switch(currenstatet){  case state1,case state2.....  } siwtch 负责各阶段操作.

//下面是已经写了的gameui 声明

#pragma once
/*
主游戏界面UI

*/

#include "cocos2d.h"
#include "ui/CocosGUI.h"
#include "PlayInfo.h"

USING_NS_CC;
class GameUI:public cocos2d::Layer
{
//friend class GameScene;
public:
bool init();

virtual void onEnter();
virtual void onExit();

void menuReOpen(Ref*pSender);//重开
void menuExit(Ref*pSender);//退出游戏
void menuaddpoker(Ref*pSender);
void menuusepoker(Ref*pSender);
void menugiveuppoker(Ref*pSender);

void update();
/* 玩家摸牌 显示 */
void addPoker( int ,int);
/* 玩家使用牌(包括回合内外) 显示 */
void usePoker(int num=1);
/* 玩家弃牌 显示 */
void giveupPoker();

CREATE_FUNC(GameUI);

//初始化角色信息
void initRoleInfo(PlayInfo* player);

//初始化对手信息
void initFoeInfo(PlayInfo* player);

Label*CurrenState;
private:
std::vector<Poker*>showpokerslot;
Sprite*bg;//背景图片
Sprite*equipment;//装备栏图片
Sprite*pokerSlot;//手牌槽背景图片
Sprite*rolePicInfo;//角色ui图片信息
//Vector<Sprite*>roleHealthInfo;

Sprite*foeInfoShow;


Label* timelabel;
float time;

};

免责声明:文章转载自《cocos2dx实现单机版三国杀(一)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Oracle 查询两个时间段内的所有日期列表使用numpy教你复习线性代数基础下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章