cocos2dx实现单机版三国杀(一)
首先需要一个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实现单机版三国杀(一)的更多相关文章
- cocos2dx实现单机版三国杀(二)
接上续,东西还没有做完 所以代码免不了改动 之前的头文件现在又改了不少,因为架构也改变了现在主要类就是GameScene.GameUI.PlayInfo.Poker这四个类 前面想的GameLoop ...
- cocos2dx调用浏览器打开网址
安卓端cocos2dx/platform/android路径下CCApplication.h: virtual void openURL(const char* pszUrl); CCApplicat ...
- 使用“Cocos引擎”创建的cpp工程如何在VS中调试Cocos2d-x源码
前段时间Cocos2d-x更新了一个Cocos引擎,这是一个集合源码,IDE,Studio这一家老小的整合包,我们可以使用这个Cocos引擎来创建我们的项目. 在Cocos2d-x被整合到Cocos引 ...
- Cocos2d-x不要随便在onEnter里面addChild
使用任何版本的Cocos2d-x(1.x,2.x,3.0),在onEnter中调用addChild,都要小心谨慎,因为它有可能导致两种莫名其妙的BUG,莫名其妙的BUG当然难以定位了!更何况这个BUG ...
- Cocos2dx中线程优先级
Cocos2dx中线程优先级问题 不论是ios还是android,遇到耗时的任务都要另起线程处理,否则程序不能及时用户的反馈.游戏中如果一圈循环不能在1/frameRate(帧率是30则1/30)秒内 ...
- cocos2d-x事件EventListenerTouchOneByOne没反应
今天写了 cocos2d-x事件EventListenerTouchOneByOne,发现死活没反应,原代码复制到新工程没问题啊, 后来发现cocostudio用的基础容器(ccui.Layout:c ...
- cocos2d-x 3.5以后版本的 luasocket
cocos2d-x 3.5后使用luasocket:local SOCKET = require "socket"; 结果运行就报错:[LUA-print] USE " ...
- cocos2d-x内存管理
Cocos2d-x内存管理 老师让我给班上同学讲讲cocos2d-x的内存管理,时间也不多,于是看了看源码,写了个提纲和大概思想 一. 为什么需要内存管理 1. new和delete 2. 堆上申 ...
- cocos2d-x屏幕分辨率,窗口大小总结
这个东西很烦人,相信很多人都不理解 今天来总结一下,首先有很多概念都要事先弄得清楚明白 1.屏幕分辨率 所谓屏幕分辨率相信很多人都知道他的概念,不就是1280pxX720PX吗?不就是这种形式吗?有什 ...
随机推荐
- String类的获取功能
/* * String类的获取功能: * int length():获取字符串的长度,其实也就是字符个数 * char charAt(int index):获取指定索引处的字符 * int index ...
- 添物零基础到大型全栈架构师 Java实战及解析(实战篇)- 概述
实战篇是在基础之上,进一步提升的内容.通过实战篇可以深入理解Java相关框架和库的使用,能够独立开发小模块,或者按照架构师的指导进行代码编写和完善. 主要讲解核心框架和库的使用和使用场景介绍.通过 ...
- [luoguP2983] [USACO10FEB]购买巧克力Chocolate Buying(贪心)
传送门 按价格排序后贪心 ——代码 #include <cstdio> #include <iostream> #include <algorithm> int n ...
- NOIP2011 提高组合集
NOIP 2011 提高组合集 D1 T1 铺地毯 模拟,题目让你干啥你就干啥 #include <iostream> #include <cstdio> using name ...
- 函数操作(this操作)
1.apply/call函数:会改变this关键字,并且第一个参数作为this关键字. /*apply与call区别*/ console.log(Array.prototype.join.call([ ...
- AWR and ADDM
The Automatic Workload Repository Oracle collect a vast amount of statistics regarding the performan ...
- srvctl error
Hit an strange error just now. [oracle@racnode1 ~]$ srvctl # # An unexpected error has been detected ...
- [dfs] UVALive 3667 Ruler
题目链接: option=com_onlinejudge&Itemid=8&page=show_problem&problem=1668">https://ic ...
- 写给小白的JVM学习指南
Java 虚拟机是学习 Java 的基础,也是迈入高级 Java 开发工程师的必备知识点.所以今天这篇文章我们来聊聊如何从零开始学习 Java 虚拟机. 基础 对于刚刚接触 JVM 的同学来说,JVM ...
- VC中CString和WPARAM之间的相互转换
在传递自己定义消息的过程中.须要转换CString 变量. 在发送消息端使用例如以下方法: SendMessage(WM_MESSAG_MINE,0,(LPARAM)strVal.AllocSysSt ...