- 博客(24)
- 收藏
- 关注
原创 cocos2d-x飞机大战——敌人生成、移动,从json表中获取数据
一、配置json表,从json表中获取数据1、配置json表:“{}”代表对象,“[]”代表数组,“:”左边表示键,右边表示值,数据之间用“,”隔开,具体配置表如下[ { "id":1001, "atc":100, "hp":100, "interval":2, "pics": ["Plane1_0.png.
2018-09-10 19:32:15
926
原创 cocos2d-x飞机大战——飞机移动的动画效果
具体需求:飞机向左移动播放向左移动动画,向右移动播放向右移动的动画实现思路:cocos2d-x里面提供了Animation类,该类继承Ref和Clonable,并不继承Action基类,所以无法直接传入Node::runAction()方法中,但Animate类却继承了Action类,且可以用Animation类来进行构造。所以具体实现方法是:用Animation类加载动画,Animate...
2018-09-07 16:36:44
951
原创 cocos-2dx 中类之间的关系
一、Node、Ref所有类都继承自Ref类,Ref类具有retain():保留当前对象指针,让其不会被自动释放,因此程序员要主动释放调用了retain的指针release():释放该对象指针)autorelease():将该对象丢入自动释放池,每运行一帧,cocos引擎会自动清除所有池子中未被使用的指针,cocos宏定义的CREATE_FUNCTION会默认将创建的对象丢入自动释放...
2018-09-07 16:34:56
517
原创 cocos2d-x飞机大战——加载页面到游戏菜单,再从游戏菜单进入地图
为了节省内存,提高效率,大多数游戏开发者会将零碎的图片合成一张图片(使用TexturePacker可以实现合图功能,shoeBox可以拆图)1、使用cocos2d-x引擎如何获取合图中的某一张图首先应当获取精灵帧缓冲区,将合图加载进缓冲区://获取精灵帧缓冲区,里面存放精灵帧 SpriteFrameCache* pCache=SpriteFrameCache::getInstanc...
2018-09-05 20:33:51
488
原创 cocos-2dx引擎helloWorld文件初步认识
头文件:#ifndef __HELLOWORLD_SCENE_H__#define __HELLOWORLD_SCENE_H__#include "cocos2d.h"USING_NS_CC;class HelloWorld : public cocos2d::Layer{public: static cocos2d::Scene* createScene(); ...
2018-09-04 20:39:17
237
原创 C++类的对象作为函数参数和返回值的传递方式
一、普通数据作为函数参数的和返回值的传递方式:作为函数参数(形参结合):主调函数调用被调函数时,主调函数已经被压入了运行栈中,首先将要传递的参数压入运行栈的一段特殊区域中(这段内存,主调函数和被调函数都可以访问到),再将被调函数压入运行栈中(被调函数的形参此时才具有内存,且在此时将主调函数的实参赋值给形参)完成了形参结合。作为函数返回值:主调函数调用被调函数时,被调函数运行结束,返...
2018-09-03 20:59:36
13261
1
原创 C++控制台RPG游戏:对话系统
具体实现思路:CTalk类继承窗口基类,里面封装了updata()和onRander()方法,里面包含了结构体SArrTalk* m_pArrTalk,用来存对话数据。CTalk类控制对话的进行,以及数据的渲染。而对话的内容则存在相应的文件之中,如NPC的对话存在NPC的配置表之中,哪个类需要对话,就让这个类包含CTalk类的对象,由此完成对话。CTalk类的代码:头文件#...
2018-09-01 16:01:07
3337
原创 C++控制台RPG游戏具体实现思路: 任务系统
接受任务,提交任务,显示任务玩家里面应该有一个容器,用来存放已接收的任务,任务NPC里面也应该有一个容器,用来存放开启的任务接受任务:1.不同NPC对应不同任务:任务数据里面应该对应包含NPCID属性。由此实现不同npc对应不同任务(同商店)2.NPC里面有开启的任务,和没开启的任务:任务数据应该具有是否开启的属性,满足条件开启任务,否则不开启,NPC里面只显示开启的任...
2018-09-01 15:29:50
2418
原创 C++RPG控制台游戏,用窗口基类管理各个窗口
GameMgr中定义窗口基类指针。通过更该窗口基类的指针指向(更改为:菜单、地图、商店等窗口)实现窗口之间的转换问题:GameMgr是否不再直接管理菜单、地图、商店。是否还要定义其成员变量。倘或不再直接管理,如何在一个窗口中,拿到另一个窗口数据?窗口管理为何不好:一、GameMgr不再对map等场景进行直接管理,而是在管理其父类CWndBase:GameMgr不再对map等场景...
2018-08-24 14:34:56
1508
原创 控制台RPG游戏具体实现思路:背包功能
一、背包的渲染以及数据更新:同商店一样,更改游戏状态即进入背包界面。(地图、背包、商店、以及尚未实现的战斗场景均独立)。背包的渲染与控制背包的选择与商店相同,都是控制容器的索引。这里不再赘述二:从商店购买商品进入背包。因为商品中陈列的商品,均不需要对它进行任何功能上的操作(只是陈列数据而已,无法加攻击力等功能)。所以商品里的商品均不是物品的实体,而背包中物品却不仅仅是数据。因此...
2018-08-21 16:48:23
2495
1
原创 C++控制台RPG游戏具体实现思路:装备栏功能
一、装备物品时,人物属性要进行相应的更改:player类里面写一个playerAttributeToInit()函数,用于将玩家当前属性置为没有穿戴任何装备时的属性,每次进行装备更新时,调用物品里面的usitem()函数,进行玩家属性的相应更改。具体实现如下:equipment类:if (KEY_DOWN(VK_RETURN)) { wearEquiepment(m_vecEq...
2018-08-21 16:46:37
2220
原创 控制台RPG游戏具体实现思路:商店功能
商店功能一、进入商店:当条件满足时,游戏状态改为E_GAMESTATE_SHOP,将玩家坐标还原(否则,玩家坐标与商店坐标重合,将一直重复进入商店)。处理逻辑写在地图的碰撞中,关键代码: //玩家碰到NPC vector<CNpc*>vecNpcs = npcMgr->getNpcs(); for (int i = 0; i < vecNpcs.size(...
2018-08-20 20:32:57
1358
原创 C++中对于指针的理解
一、指针变量指针变量和普通变量区别不大,都是变量。任何变量都包含两个属性——地址和值,不用的是:普通变量存储的值就是可供用户直接使用的数据,而指针变量存储的值为某个地址。任何变量只要超出其作用域就会无效(普通变量和指针变量都是如此)。二、关于创建指针指针在创建时有三种方式:1.为指针开辟一个内存。2.指针指向的内存为空。3.指针指向的内存为某个可用的内存。形式如下:int...
2018-08-17 14:05:36
248
原创 instanceof() isInstanceof() isAssignableFrom()三者之间的区别。
首先,语法上:obj.instanceof(class),obj为任意一个类对象,class则是另外一个类的名称。Class.inInstance(obj),Class为Class对象,obj则为任意一个类对象如Class.isAssignableFrom(cls),Class为Class对象,cls为Class类对象具体用法参见下面代码:class SuperA{}class A exten...
2018-05-28 17:42:42
610
原创 类型信息
前言:最近学习状态好像是有点差的,又是联盟又是我的世界。想上白金,上不去,玩我的世界一玩就是没日没夜,终于,在女朋友的威逼利诱下,拿起了上上个礼拜看得第十四章,果然,上次什么都没看进去。一、什么是Class类。Class类也是类的一种,java里面所有的类都是Class类的对象。(区别于关键字class,这里的Class类为大写),Class类里面拥有许多方法,诸如:getName(),getSi...
2018-05-18 17:16:41
183
原创 JAVA中的异常
前言: 不知道是我的状态问题还是说异常这一章有点不一样,一下午我把整个章节看完了,但是仔细想想却又感觉什么都没看进去,所以想写这篇文章来复习一下这个章节,或者说,再学习一下。1:JAVA中的异常被称为“被检查的异常” JAVA 中任何方法被声明为可能抛出一个类(即存在异常说明),则在任何使用方法时都应该捕捉异常,否则会报错。具体如下:package p459;import p452...
2018-05-08 16:00:20
171
原创 反向迭代器
我们希望在默认的前向迭代器的基础上,添加反向迭代器能力。(迭代器要适用于foreach语句中)具体思路:所有实现了iterable接口的类都能够被用于foreach语句中。要想实现双向迭代器的功能,首先可以声明一个类(ReversibleArrayList)继承ArrayList,使用ArrayList里面自带的正向迭代器,在ResersibleArrayList里面使用一个方法来实现反向迭代功能...
2018-04-28 22:17:52
311
原创 持有对象之间的相互关系。
简单的容器分类:其中,ListIterator是Iterator的子类,仅供List使用(这里漏画了一条从List导向ListIterator的线),通过List.ListIterator()方法可以生成一个ListIterator的对象。同样,因为List继承Collection,同样可以通过iterator()方法生成一个Iterator的对象(同理,Set,Queue都可以这样)。值得注意的...
2018-04-28 18:31:39
286
原创 写一个Command类,它包含一个String域和一个显示该String域的方法operation(),写第二个类,它具有一个使用Command对象来填充一个Queue的方法。……
代码如下:package p424;import java.util.LinkedList;import java.util.Queue;public class UseCommand { private Queue<Command> queue =new LinkedList<Command>(); public Command addQueue(Comman...
2018-04-26 18:49:47
297
原创 修改练习1中的Gerbil类,将其放入Map中,将每个Gerbil的名字与每一个Gerbil关联起来。为keySet()获取Iterator,使它遍历Map,针对每个键查询Gerbil,然后打印出键。
这里,键:每个Gerbil的名字即“Gerbil+编号”,值:Gerbil类的对象。package p421;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import p393.Gerbil;public class UseMap { Map<String,Gerbil&g...
2018-04-26 17:29:13
436
原创 利用栈对表达式进行求值,+表示将后面的字母压进栈,-表示弹出栈顶字母并打印
package p414;public class StackTest { private Stack <Character>stack = new Stack<Character>(); public void useStack(String s){ for(int i=0;i<s.length();i++){ char c=s.charAt(i)...
2018-04-26 14:58:37
300
原创 创建一个空的linkedlist通过使用ListIterator。将若干个Integer插入到这个List中,插入时,总是插入到List中间
ListIterator里面的add()方法刚好能够实现这个功能。下面开始介绍add()方法(在这里我直接引用goodbaby728的博客,如有侵权,联系我后立即删除)最终输出结果为ADEBC这题的解决代码如下:package p411;import java.util.LinkedList;import java.util.ListIterator;public class Middl...
2018-04-19 20:48:50
965
原创 List,collection,arraylist,linkedlist,iterator,listIterator之间的相互关系
List 继承Collection 。ArrayList,LinkedList 都是List的实现类。Iterator和ListItertor都是对容器进行操作。其中ListItertor是Iterator的子类具体关系如下:其中ArrayList在做随机访问时比LinkedList更出色,在List中插入和移除要逊色一些,LinkedList则反之。...
2018-04-19 15:37:18
812
原创 创建并组装一个List,然后再创建第二个具有相同尺寸的List,将第一个List列表反序插入第二个列表中
基本思路:用listIterator(n)指向列表索引为n元素的特性,将ListIterator指向list1的末尾,依次加入到list2中。即反向读取list1,将读取的每一个元素顺序插入list2.package p409;import java.util.ArrayList;import java.util.List;import java.util.ListIterator;p...
2018-04-19 15:10:01
871
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人