cocos2dx实现象棋之运动】的更多相关文章

1.头文件 void moveStone(int moveid, int killid, int x, int y); void moveComplete(CCNode*, void*); bool canMove(int moveid, int killid, int x, int y); bool canMoveJiang(int moveid, int killid, int x, int y); bool canMoveShi(int moveid, int x, int y); boo…
下面我们通过一个实例介绍一下如果通过层加速度计事件实现访问加速度计.该实例场景如下图所示,场景中有一个小球,当我们把移动设备水平放置,屏幕向上,然后左右晃动移动设备来改变小球的位置. 下面我们再看看具体的程序代码,首先看一下HelloWorldScene.h文件,它的代码如下: #ifndef __HELLOWORLD_SCENE_H__ #define __HELLOWORLD_SCENE_H__ #include "cocos2d.h" #define kBall_Tag     …
在博客上,以实现创建的游戏场景.而一些button,因为button落实到事件作出详细答复,需要使用一些功能摆棋.为此我特意button上的背面的具体实施, 在摆棋前先理清一下摆棋的思路: 1.创建一个Stone类处理棋子信息 2.建立一个表保存棋子信息 3.创建棋子 4.初始化棋子 5.摆棋子 摆棋的效果: 玩家持红棋 玩家持黑棋 创建一个Stone类用于处理棋子的信息.设置Stone类由CCSprite派生而来 //棋子类 class Stone : public CCSprite { pu…
开始界面 #ifndef SCENESTART_H #define SCENESTART_H #include "cocos2d.h" #include "SceneGame.h" USING_NS_CC; class SceneStart : public CCLayer { public: //SceneStart(); static CCScene * scene(); CREATE_FUNC(SceneStart) bool init(); bool ccT…
比如要让角色跳起来 1.如果是用到物理引擎,那么在物理世界中,可以用 hero->getPhysicsBody()->setVelocity(Vec2(0, 400));  //给主角一个向上的速度 如果不想让主角一点就跳,而是点完后等执行完一个跳跃的动作后落到地面后再跳的话,可以给这个语句加一个条件判断执行,这个语句里面的+5是关键 if (_hero->getPositionY()<_positionY+_hero->getContentSize().height/2+5…
好久都没写文章了,就来一篇吧.这种方法是在制作<胖鸟大冒险>时用到的.<胖鸟大冒险>中使用Box2D来进行物理模拟和碰撞检測,因此对每一个机关须要创建一个b2body.然后<胖鸟>是依据<超级马里奥兄弟>设计的,所以机关能够是各种运动轨迹的平台,绕圈转的乌龟,蹦蹦跳的乌龟等.假设用box2d来做这些运动的话要自己写这些轨迹.可是Cocos2d-x已经提供了非常多的action,自己添加action也非常方便.反过来用sprite去设置box2d的b2body…
cocos2dx 动画是个非常奇妙的东西~~. 这里看到的是一个物体,在运动的过程中会不断地翻转的过程. 两个动画一起来~~ 以下的代码中涉及到:CCAnimation(补间动画 )  CCAnimate(动画)  CCDelayTime(延迟动作)  CCFadeTo(设置透明态度) CCSequence(动作序列)  CCSpawn(让精灵的若干个动画同一时候运行)  CCRepeateForever(无限循环)  CCCallFuncN(瞬时动作中  node回调函数)  CCMoveTo…
前情回顾 上一个博文我们提到象棋运动的函数dealWithChess,但是只是说该函数完成了棋子的选择和移动功能 其实在这个函数里,在移动棋子之前,是要对棋子的移动是否合法进行判断的,我们一起来看看如何对棋子进行判断的 判断移动规则入口 在dealWithChess中,关注如下代码,这个judgeAction就是判断棋子移动是否合法的入口了…
之前两个博客讲述了象棋的规格和工程文件之后,我们继续深入的从代码开始学习cocos2dx 首先从程序入口main函数开始 main函数 int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(lpCmdLine); #ifde…
上一篇博文我们看到了象棋的效果图,这一张我们来看象棋代码的整体概述 让我们先对整个代码框架有个了解. 主目录: 主目录包含内容如上图: classes目录:业务代码 proj.win32:包括main.cpp和工程文件 Resorces:代码中用到的资源 剩下三个文件我们不用,不解释了 classes目录: classes目录代码如上图 这里包含了一下代码文件,以cpp为例解释 WelCome.cpp:是欢迎页面的实现 AppDelegate.cpp:是app委托类,对cocos2dx应用程序的…
象棋描述 在说代码之前,我们先让象棋效果登场,以方便大家对代码的理解 欢迎界面 中国象棋程序,运行起来的第一个界面是一个欢迎界面,该欢迎界面在停留一秒后进入游戏界面 游戏主界面 新局:所有棋子归位,状态复位 开始:在开了[新局]之后,点击[开始]开始游戏,只有点击开始之后,才能移动棋子 悔棋:局面往后退一步 难度:该功能未实现 选中棋子 如果某个棋子选中,该棋子用绿色框围住,表示选中状态 移动棋子 当棋子被选中后,鼠标继续再点空地,如果符合规则,那么棋子就会移动到目标坐标 吃棋子 选中己方的棋子…
我在上一篇博客中介绍了象棋的功能.在接下来的博客中将向大家介绍使用Cocos2d-X怎样一步一步开发中国象棋 开发工具: Cocos2d-X2.2.3 VS2012 项目的文件夹: Classes:存放公共代码 proj.android:用于开发Android上的Cocos2d-X游戏 proj.win32:用于开发Windows上的Cocos2d-X游戏 Resource:存放游戏资源 Classes文件夹: AppDelegate.h/AppDelegate.cpp:设置游戏属性 AppMa…
前情回顾 在之前的学习中,我们已经了解到,下棋主界面是由CCMainMenu类实现的,在它的init函数中,初始化了 主界面需要的各种数据,包括:创建控件,初始化32个棋子,初始化执行变量等等,在这个博文中,我们 主要来学习,32个棋子是如何被初始化并显示在界面上的.这个显示和initCoordinate以及 了解32个棋子显示在界面的目的,是为了让大家更好理解32个棋子的数据结构,这些数据结构在当棋子走动 时,需要改动,所以必须要理解. initCoordinate void CCMainMe…
前情回顾 上个博客说道我们象棋程序进入了欢迎界面,在欢迎界面下等待一秒进入主界面 进入主界面的关键代码如下: CCScene* pScene = CCMainMenu::scene();  创建scene ... CCDirector::sharedDirector()->replaceScene(ps);  显示scene 最关键的是CCMainMenu::scene函数,说明后面要显示的scene类型是CCMainMenu类型的 所以接下来我们一起来看CCMainMenu是怎么回事 CCMa…
改编来源:http://cn.cocos2d-x.org/tutorial/lists?id=103 在cocos2dx官网看到了这么个教程,是cocos2dx 2.x版本的,于是用 cocos2dx 3.2 照着敲了一遍,原先的代码里面有些bug也顺道修了一下. 实现了个主体功能,开始啦,走棋及其判断,胜负判断. 效果图如下: 代码下载地址: http://files.cnblogs.com/adoontheway/chess.rar 资源可以用这个里面的资源: http://cn.cocos…
转载自ufolr的博客 原文连接:http://blog.csdn.net/ufolr/article/details/7624851 最近项目中需要一个落叶的效果,本来想用粒子特效来实现,但是几经调试,虽然调出了落叶的效果,但是并不是十分理想,最大的不足就是落叶是平面的,没有立体感,虽然把落叶做小之后却是立体感的感觉会有所缓解,但总不能把树叶无限的缩小吧,而且立体感的缺失在粒子特效中确实是一个始终存在的问题.作为一个最求品质的程序猿,最终还是决定自己设精灵动作来实现.  在分析了粒子特效实现的…
在上一节中实现了走棋,这篇博客将介绍中国象棋中的走棋规则 在写博客前先可能一下象棋的走棋规则: 1)将 将的坐标关系:横坐标相等,纵坐标相减绝对值等于1,或者纵坐标相等,横坐标相减绝对值等于1 将的特殊要求:目标坐标坐落于九宫内 将的例外情况:假设两个老将面对面而中间没有棋子阻拦.老将能够直接飞到对方九宫吃对方老将 2)士 士的坐标关系:纵坐标和横坐标相减的绝对值都是1, 士的特殊要求:目标坐标坐落于九宫内 3)象 象的坐标关系:纵坐标和横坐标相减的绝对值都是2 象的特殊要求:象眼不能有棋子,不…
在前面两节(第一节.第二节)中介绍了中国象棋的功能和project文件.在这篇博客中将介绍中国象棋的開始场景的实现 在写代码前先理清一下实现開始场景的思路: 1.打开游戏后进入開始场景,场景上显示一个红色的帅和黑色的将.而且两个棋子在同一条直线上(两个棋子的y坐标同样) 2.当玩家单击红色的帅后,红色的帅一边向右移动一边依照顺时针方向旋转,黑色的将一边向左移动一边依照逆时针方向旋转 3.当玩家单击黑色的将后,红色的帅一边向右移动一边依照顺时针方向旋转.黑色的将一边向左移动一边依照逆时针方向旋转…
在上一节中实现了新局,至此中国象棋的准备工作差点儿相同都完毕了,在接下来的博客中将介绍玩家的走棋和一些游戏属性的设置,今天先介绍走棋和走棋规则 老规则,先看走棋的效果图,然后依据效果图一步一步分析游戏逻辑,最后会贴出代码 走棋分为两个步骤: 第一步选棋:通过点击棋子实现选棋子,当选中某个棋子的时候,选择框会套在选中的棋子上 第二步走棋:通过点击棋盘上的位置能够实现棋子的移动,当点击的位置是同意棋子移动的位置时,棋子会移动到点击的位置 走棋的实现思路 1.游戏走棋时採用红先黑后原则,红棋和黑棋轮流…
前情回顾 通过CCMainMenu的init函数,已经把所有的按钮,棋子都摆放完毕了,但是这个时候,棋子是不能走动的,只有在开始游戏之后才能移动棋子. 点击…
设计完開始界面后就要设计游戏界面了 为了理清设计思路先看一张游戏界面效果图 游戏界面设计思路: 1.在窗体上放一张桌子 2.在桌子上放一个棋盘 3.在棋盘右边加入新局button,暂不实现详细的功能 4.在棋盘右边加入開始button,暂不实现详细的功能 5.在棋盘右边加入悔棋button,暂不实现详细的功能 6.在棋盘右边加入难度button,暂不实现详细的功能 7.在棋盘右边加入声音button,暂不实现详细的功能 8.在棋盘右边加入返回button.暂不实现详细的功能 9.在桌子右边加入一…
引言Cocos2d-x引擎中有很多Action,这样可以方便的让开发者调用相应的Action去完成一些动作,例如:移动,弹跳,淡入淡出等.可在实际的开发过程中,由于游戏的需要,显然地,引擎自带的Action是完全不够用的,很多时候都需要我们自己去写.今天我就来分享一个让精灵和粒子绕着圆角矩形运动的实例,细讲一下实现过程(仅凭个人想法实现,如有其他更好的方法,欢迎交流分享). 效果该实例类似天天爱消除等系列游戏中的按钮特效: 实现方法刚开始本来考虑自己定义一条圆角矩形的路径,即建一个自己的动作模块…
我所理解的Cocos2d-x(完全基于Cocos2d-x3.0,深度剖析计算机图形学,OpenGL ES及游戏引擎架构,全面提升游戏开发相关知识) 秦春林 著   ISBN 978-7-121-24625-8 2014年11月出版 定价:79.00元 404页 16开 内容提要 <我所理解的Cocos2d-x>针对最新的 Cocos2d-x 3.x版本,介绍了Coco2d-x游戏引擎的基本架构.渲染机制,以及各个子模块的功能和原理,并结合OpenGL ES图形渲染管线,深入探讨了游戏开发中涉及…
Cocos2d-x 3.x游戏开发之旅 钟迪龙 著   ISBN 978-7-121-24276-2 2014年10月出版 定价:79.00元 516页 16开 内容提要 <Cocos2d-x 3.x游戏开发之旅>是<Cocos2d-x游戏开发之旅>的升级版,修改了Cocos2d-x 2.0版进阶到3.0版后的一些内容,新增了对CocoStudio.UI编辑器.Cocos2d-x 3.x新特性以及网络方面的知识点.主要介绍常用的API使用方式:如何通过官方Demo获取更多关于Coc…
游戏物理引擎是指在游戏中涉及物理现象的逻辑处理,它用于模拟现实世界的各种物理规律(如赛车碰撞.子弹飞行.物体掉落等),让玩家能够在游戏中有真实的体验. Cocos2D-x中支持Box2D和Chipmunk两种第三方开源物理引擎.这两种物理引擎功能上没有本质的区别,只是Chipmunk是用C语言实现的,Box2D是用C++语言实现的.Box2D目前相对使用更为广泛,所以本节只了解Box2D物理引擎. 要学习Box2D物理引擎,我们先来了解一些Box2D中定义的重要概念,这些概念是构成Box2D世界…
我想接触过游戏引擎的同学,对粒子系统应该不会陌生.它用于解决由大量按一定规则运动(变化)的微小物质在计算机上的生成和显示问题.粒子系统在游戏中有着非常广泛的应用,可以模拟很多现象,如火花.爆炸.烟雾.星云.流水.落花等. 粒子系统(partical system)在粒子效果中对所有粒子进行统一控制和调度,它的常见功能如下: ·产生粒子:也被称作粒子发射器(emitter). ·控制粒子:随时间更新粒子的位置.速度以及其他状态. ·回收粒子:当粒子的生存周期结束后就会被系统回收. Cocos2D-…
Action -动作.所有精灵的表现,人机交互的表现,都是动作.cocos2dx 里面封装的动作可谓是丰富! Action有三个子类 1.FiniteTimeAction类是所有在有限时间能够完成的动作(action)的基类. 2.Follow是一种“跟随”某一个节点的动作. 3.Speed类改变一个action的运行速度,使他持续更长时间 (speed>1)或者更短的时间(speed<1).(Speed对象不能作为一个动作序列的一部分, 因为它不是一个ActionInterval对象) 其次…
物理引擎通过为刚性物体赋予真实的物理属性的方式来计算运动.旋转和碰撞反映.为每个游戏使用物理引擎并不是完全必要的—简单的“牛顿”物理(比如加速和减速)也可以在一定程度上通过编程或编写脚本来实现.然而,当游戏需要比较复杂的物体碰撞.滚动.滑动或者弹跳的时候(比如赛车类游戏或者保龄球游戏),通过编程的方法就比较困难了.那么着时候使用物理系统可以为游戏带来一些很明显的优点: 1)更加真实的对现实世界的模拟,以牛顿力学为基础的游戏效果. a) 游戏中的精灵们运动起来更真实:相互碰撞,自由下落等各种效果更…
在Cocos2D-x里面创建Tile Map地图是需要用到.tmx的地图文件的,那么创建Tile Map地图文件,我们可以通过地图编辑器来创建,地图编辑器可以在网站:http://www.mapeditor.org 上进行下载,然后通过地图编辑器就可以导入.tmx的地图文件.那么为什么我们不直接用图片作为地图呢,而是使用.tmx文件来创建地图.那么有一个很重要的原因就是因为使用Tile Map地图无论你的地图多大,内存占用只是每个不同Tile的总和,所以使用Tile Map是非常省内存的一种做法…
视差就是从有一定距离的两个点上观察同一个目标所产生的方向差异.从目标看两个点之间的夹角,叫做这两个点的视差角,两点之间的距离称作基线.只要知道视差角度和基线长度,就可以计算出目标和观测者之间的距离.游戏开发中利用视觉上的误差,即通常所说的视错觉. 如果我们的游戏中有地图的移动,就无法避免滚动视差.也就是说离实现越远的地方移动速度越慢,这样才可以形成景深不一样的视觉效果. 在Cocos2D-x里面我们可以使用CCParallaxNode类来实现这种视差的效果.CCParallaxNode可以很容易…