精华内容
下载资源
问答
  • cocos2d-x打飞机小游戏源码cocos2d-x打飞机小游戏源码cocos2d-x打飞机小游戏源码
  • Cocos2d-x_C++_3.4,48款游戏源码大合集,Demo 演示代码,简单实现:捕鱼达人,FlappyBird,2048,塔防,微信飞机,超级玛丽,坦克大战,刀塔传奇,防空-合金弹头,城市猎人(跑酷),封神,跑酷30,切水果,奇怪大冒险,翻牌效果,...
  • 愤怒的小鸟 一个都不能死 C++ 适合入门上手练习简单的cocos2d-x游戏
  • cocos2d-x游戏源码

    千次下载 热门讨论 2013-03-05 09:42:25
    一个cocos2d-x的闯关类游戏。我也是下的比人的,不过在2.1.0的版本下调通了,仅供学习
  • 可以直接发布到微信,做成微信小游戏。是跟着教程做的小游戏,需要来
  • 一些cocos2d-x的小游戏资源源码,希望能帮助到别人
  • 基于cocos creator2.2.2仿微信小游戏跳一跳源码,实现了基本玩法。
  • cocos2dx 2.2.6版本,可编译运行版本。动态生成地图,曲线地图
  • Cocos2d x 3.x游戏开发实战Cocos2d x 3.x游戏开发实战Cocos2d x 3.x游戏开发实战
  • 15款Cocos2d-x游戏源码

    千次阅读 2018-09-26 18:20:52
    (1)用cocos2d-x开发的中国象棋游戏源码 使用Cocos2d-X2.2.3开发的一款中国象棋游戏,游戏中可以实现、新局面、悔棋、游戏音乐、胜利后会显示游戏结果。 源码下载:http://www.okbase.net/file/item/27881 &...

    (1)用cocos2d-x开发的中国象棋游戏源码
    使用Cocos2d-X2.2.3开发的一款中国象棋游戏,游戏中可以实现、新局面、悔棋、游戏音乐、胜利后会显示游戏结果。


    源码下载:http://www.okbase.net/file/item/27881

     

    (2)Cocos2dx开发的一个横版过关游戏Demo源码
    来自游戏开发基友群听雨分享的例子,一个横版过关游戏,有带简单ai的敌人,有横版的地图,有操控摇杆,主角的攻击效果,有很多新鲜的东 
    西。


    源码下载:http://www.okbase.net/file/item/27882

     

    (3)Cocos2d-x游戏《忍者飞镖打幽灵》源码
    初次接触Cocos2d-x的学习demo,发射飞镖击中飞过来的幽灵,可以作为初学参考。
    环境: cocos2dx2.2+vs2012


    源码下载:http://www.okbase.net/file/item/27890

     

    (4)Cocos2dx 跑酷类游戏源代码《萝莉快跑》
    跑酷类游戏,画面精美,如果Cocos2dx使用2.2版本,可能需要修改加载声音资源类。十分简单。


    源码下载:http://www.okbase.net/file/item/27892

     

    (5)MoonWarriors雷电战神传说Cocos2d-X游戏源代码
    因为最近在研究cocos2d-x,前几日看到cocos2d-html5中有款飞机游戏MoonWarriors,想着能不能用cocos2d-x来做重构,一方面可以练习一下 
    这种飞行游戏的编程思路,另一方面也可以加深对cocos2d-x的了解。


    源码下载:http://www.okbase.net/file/item/27071

     

    (6)Cocos2d-x 3.x编写的3D跑酷游戏源码
    这是一个Cocos2d-x 3.3制作的3d跑酷demo,大家可以学习下Cocos2d-x 3.3 提供对Sprite3D的支持,包含教程。
    教程主要是通过分析一个跑酷的Demo,来向大家简单的介绍一下Cocos2d-x 3.3 里对3D游戏开发提供的一些功能,并介绍一下他们的使用方法。


    源码下载:http://www.okbase.net/file/item/27893

     

    (7)开心泡泡猫Cocos2d-x源码
    开心泡泡猫是一款一群喵星人闯入了风靡全球的泡泡龙游戏,游戏将将弹珠台的概念结合至传统泡泡类游戏之中,Cocos2D-X开发。

    源码下载:http://www.okbase.net/file/item/27900

     

    (8)Cocos2dx仿《王者之剑》游戏源码
    《王者之剑》作为国内首款横版即时格斗类手机网游,以欧洲圆桌骑士、亚瑟王的故事为背景,以精美细腻的美漫暗黑画风,再现了这段传奇史 
    诗。本代码是仿《王者之剑》,仅供学习参考。


    源码下载:http://www.okbase.net/file/item/27936

     

    (9)Cocos2dx手绘搞怪类游戏《奇怪大冒险》源码
    Cocos2dx 2.2游戏源码:奇怪大冒险,(原作熊同学) 质量很好,使用vs2013和cocos2dx 2.2打开即可编译运行。


    源码下载:http://www.okbase.net/file/item/27942

     

    (10)Cocos2dx游戏《喵汪大战》源码
    类似打飞机的猫狗大战游戏。
    开发环境:vs2012,cocos2dx2.2


    源码下载:http://www.okbase.net/file/item/27943

     

    (11)山寨版FlappyBird游戏源代码(cocos2dx)
    这是仿制的FlappyBird游戏,作者为xiaohexuehe。
    包括两个版本的代码:Unity版和cocos2dx版。
    FlappyBird不用多说了,一款极其简单,但是又很火的游戏。我在得知这款疯狂的游戏后,就有一种把它重现的冲动,然后花了我4个多小时, 
    产生出了一个可以玩的版本,分享给大家。

    源码下载:http://www.okbase.net/file/item/25707

     

    (12)三国策略战争游戏cocos2d-x源码
    利用 cocos2d-x 实现一个三国战争游戏。 

    作者说:搜到一个开源的半成品游戏代码(游戏主体部分没有),但最高兴的是有不错的资源(没有美工引发头疼问题)。游戏虽小,地图只有 
    一张,可玩,还会完善,希望做成个dota风格,外加塔防玩法的游戏。

    源码下载:http://www.okbase.net/file/item/27070

     

    (13)Cocos2d-x手机单机斗地主源码
    利用cocos2d-x实现手机单机斗地主游戏。 
    完成了斗地主的基本游戏规则,洗牌-发牌-出牌-压牌-判断胜负(计分)。


    源码下载:http://www.okbase.net/file/item/26919

     

    (14)cocos2d-x 多平台高仿微信打飞机源代码
    利用 cocos2d-x 实现多平台高仿微信打飞机游戏。目的是学习 Cocos2d-x 如何支持多平台开发。


    源码下载:http://www.okbase.net/file/item/24078

     

    (15)cocos2d-x俄罗斯方块游戏源代码
    基于cocos2d-x开发的俄罗斯方块游戏,是本人在学习cocos2d-x引擎时,在win7下使用vs2010的C++做的。
    附上完整的源代码。请根据自己的cocos2d-x安装路径更改vs工程项目的属性设置,即可调试运行。该代码仅供cocos2d-x游戏开发爱好者研究学习。

    源码下载:http://www.okbase.net/file/item/27944

    展开全文
  • cocos2d-x+lua游戏demo源码

    热门讨论 2013-07-24 16:39:48
    cocos2d-x+lua游戏demo源码 xcode工程
  • cocos2d迷宫解谜游戏源码,可运行,非常不错的游戏源码
  • cocos-js原生小游戏2048游戏源码以及全套素材资源,可以查看预览运行效果。
  • #twoplusone 版本号 v1.2.0 更新内容 基本完成游戏开发,游戏已经具备完整的音乐、游戏场景等内容 TODO 排行榜功能 分享到微信功能
  • cocos creator2.x版本亲测完美运行,直接导入即可。js语言,仅供学习交流不得商用,欢迎下载讨论
  • cocos2d-x 2048小游戏源码+素材
  • Cocos2D Cocos creator Cocos2Dx游戏源代码类资源应该算是素材类网站中必不可少的资源类型了吧~今天给大家推荐超好用,免费质量高的素材噢,让你坐拥海量资源同时又...为大家整理了游戏源码-Cocos2D Cocos creator Coco

    Cocos2D Cocos creator Cocos2Dx游戏源代码类资源应该算是素材类网站中必不可少的资源类型了吧~今天给大家推荐超好用,免费质量高的素材噢,让你坐拥海量资源同时又不撞款!

    本人曾经也是废大把时间寻找资源,质量还不咋地,但是通过朋友安利,知道了一个很好的网站:爱给网,里面资源内容丰富,并且可以一键下载,现在我都会定期去上面下载我想要的Cocos2D Cocos creator Cocos2Dx游戏源代码素材。

    为大家整理了游戏源码-Cocos2D Cocos creator Cocos2Dx游戏源代码合集 

    为了方便大家更快的找到资源,小编给大家指引路线:

    进入网站-点击-游戏--游戏源码-Cocos2D-X,这样就能找到啦!

    下面给大家展现几个看看,有兴趣的话可以去网站了解其他资源哦:

    1、Cocos2dx-3.4马里奥游戏源码

    2、FlyBird游戏demo源码

    3、cocos2d-html5糖果消消乐游戏源码

    4、cocos2d-x王牌飞行空战游戏源码

    5、手机卡牌游戏《暗黑世界》服务端源码

    6、Cocos2d-x城市跑酷游戏源码Victorian Rush Hour

    7、iOS7 SpriteKit仿微信打飞机源码

    8、iphone海底世界连连看demo源码

    9、cocos2d-x类似愤怒的小鸟的游戏源码

    10、2048清爽版完整源码(Cocos2d-x3.2)

    这次就分享到这里啦~下次我再给大家推荐一些好用的素材网站~记得来看哦~

    展开全文
  • 这是一个基于cocos2d-js的游戏项目,准备开发一款模仿口袋妖怪的游戏,目前处于开发阶段。 目前仅基于jsb做ios和android下的开发,完成后才会考虑扩展到其他平台(wp, h5等等)。 如果您也对这个项目有兴趣,请通过...
  • Cocos2d-x开发的赛车小游戏源码和分析分享!在Windows和Android(华为荣耀3C)下运行通过。 对应博客http://blog.csdn.net/xujianflying。 欢迎交流学习,批评指正!
  • 多个小游戏合集,内含五子棋,黑白棋,2048,跳一跳,拼图,俄罗斯,扫雷,连连看,贪吃蛇,打砖块,一个场景一个游戏,适合新手!
  • cocos2d 游戏源码

    2016-04-19 16:57:17
    本文件是基于Windows7、C++开发的儿童学小游戏
  • 一共6套基于cocoscreator开发的小游戏源码,需要的拿去,包括跳一跳,吃星星,篮球,切水果等
  • Ray Wenderlich的《Cocos2d SimpleGame》,被认为是cocos2d的初学者最好的教程,这本书被Cocos2D-X团队从objective-c转化到了c++版,并发布在...源代码是在cocos2d-x 2.0.3版本,正在学新版本有问题的同学可以看一下!
  • cocos2d制作的2048游戏源码,用的版本是3.x版本,加压后直接加载进去Classes中的代码,替换掉原来的资源文件,然后自己冲洗编译一下就可以了
  • cocos2d 滑雪大冒险源码
  • 游戏思路 其实2048这个游戏最重要的地方就是数字的合并,相同的数字可以合并成更大的数字。首先我们肯定是要创建一个二维数组,但是实际上我们每一次合并的操作都是对一维数组进行操作的,例如: 2 2 0 0 0 2 0 2 4 ...

    项目展示

    游戏思路

    其实2048这个游戏最重要的地方就是数字的合并,相同的数字可以合并成更大的数字。首先我们肯定是要创建一个二维数组,但是实际上我们每一次合并的操作都是对一维数组进行操作的,例如:

    2 2 0 0
    0 2 0 2
    4 2 0 2
    4 0 2 0
    //如果是从向上合并,那么
    2 0 4 4 -> 2 8 0 0
    2 2 2 0 -> 4 2 0 0
    0 0 0 2 -> 2 0 0 0
    0 2 2 0 -> 4 0 0 0
    

    我们需要从上往下获取数据,然后把获取到的数据形成一个一维数组,然后把这个一维数组先去0,就是把非0数字往前面挪动,再把相邻且相同的数字进行合并(将后一个元素累加到前一个元素上,后一个元素清0),合并之后再进行一次去0操作,最后再把这个一维数组还原至原行或者原列。大体的思路是这样,接下来附上代码。

    游戏代码

    Number.h

    #pragma once
    #include "cocos2d.h"
    class Number : public cocos2d::Sprite{
    public :
    	static Number* create(int number);
    	bool init(int number);
    	void setImage(int number);
    };
    

    Number.cpp

    #include "Number.h"
    
    Number* Number::create(int number) {
    	Number* ret = new (std::nothrow)Number();
    	if (ret && ret->init(number)) {
    		ret->autorelease();
    	} else {
    		delete ret;
    		ret = nullptr;
    	}
    	return ret;
    }
    
    bool Number::init(int number) {
    	char filename[40];
    	sprintf_s(filename, "image/%d.png", number);
    	if (!Sprite::initWithFile(filename)) {
    		return false;
    	}
    	return true;
    }
    
    void Number::setImage(int number) {
    	char filename[40];
    	sprintf_s(filename, "image/%d.png", number);
    	this->setTexture(filename);
    }
    

    这个Number类的作用是在把创建数字精灵的操作给封装一下,用到的时候更方便,接下来是游戏场景的类
    GameLayer.h

    #ifndef __GAMELAYER_SCENE_H__
    #define __GAMELAYER_SCENE_H__
    
    #include "cocos2d.h"
    #include "Number.h"
    //定义一个枚举的方向类
    enum Dir {
    	left,
    	right,
    	up, 
    	down
    };
    class GameLayer : public cocos2d::Layer
    {
    public:
            static cocos2d::Scene* createScene();
            virtual bool init();
            //初始化棋盘极其数字
    	void initNumber();
    	//默认调度器
    	void update(float dt);
    	//去0
    	void removeZero(bool inverted, bool again);
    	//从原行或原列获取数据
    	void getDataForColORRow(int arr[][4], int getNum);
    	//合并
    	void merge(bool inverted);
    	//把一维数组还原到原行或原列中
    	void reduction(int arr[][4], int reductionNum);
    	//设置是否开启键盘监听
    	void setKeyboardEnable(bool enable);
    	//回调函数
    	void onKeyPressed(cocos2d::EventKeyboard::KeyCode keyCode, cocos2d::Event*);
    	//清空数组
    	void arrClearr();
    	//创建随机数字
    	void randomCreateNum();
    	GameLayer();
    	~GameLayer();
    	CREATE_FUNC(GameLayer);
    private:
        //用于存放数字精灵
    	Number *number[4][4];
    	Dir dir;
    	int map[4][4] = {
    	{ 0, 0, 0, 0 },
    	{ 0, 0, 0, 0 },
    	{ 0, 0, 0, 0 },
    	{ 0, 0, 0, 0 }
    	};
    	int temp[4]{ 0 };
    	//判断是否从键盘监听到了方向键
    	bool isInput = false;
    };
    #endif // __GAMELAYER_SCENE_H__
    

    GameLayer.cpp

    #include "GameLayer.h"
    #include <cstdlib>
    #include <ctime>
    
    using namespace cocos2d;
    USING_NS_CC;
    
    static const int ArrSize = 4;
    
            /***************************2048核心算法**********************************/
    		/*
    		 * 1.定义去零方法(针对一维数组):将0元素移至末尾
    		 * 2.合并数据方法(针对一维数组)
    		 *  --去零:将0元素移至末尾
    		 *  --相邻 相同则合并(将后一个元素累加到前一个元素上,后一个元素清0)
    		 *  --去零:将0元素移至末尾
    		 * 3.上移
    		 *  --从上到下获取列数据,形成一维数组
    		 *  --调用合并数据方法
    		 *  --将一维数组元素还原至原列
    		 * 4.上移
    		 *  --从下到上获取列数据,形成一维数组
    		 *  --调用合并数据方法
    		 *  --将一维数组元素还原至原列
    		 * ......
    		 */
    
    
    GameLayer::GameLayer():dir(up) {
    
    }
    GameLayer::~GameLayer() {
    
    }
    
    Scene* GameLayer::createScene() {
    	auto scene = Scene::create();
    	auto layer = GameLayer::create();
    	scene->addChild(layer);
    	return scene;
    }
    
    bool GameLayer::init() {
    	if (!Layer::init()) {
    		return false;
    	}
    
    	//产生随机数种子
    	srand((int)time(0));
    
    	Size size = Director::getInstance()->getVisibleSize();
    
    	//创建背景
    	Sprite* bg = Sprite::create("image/map.png");
    	bg->setPosition(Vec2(size.width / 2, size.height / 2));
    	this->addChild(bg, -1);
    
    	//初始化数字
    	initNumber();
    	
    	//开启默认调度器
    	scheduleUpdate();
    
    	//开启键盘监听
    	setKeyboardEnable(true);
    
    	return true;
    }
    
    /*
    	默认调度器
    */
    void GameLayer::update(float dt) {
            //判断如果从键盘上接收到了方向键
    	if (isInput) {
    		//正向获取数据还是反向
    		bool inverted;
    		switch (dir) {
    		case left:
    		case up:
    			inverted = true;
    			break;
    		case down:		
    		case right:
    			inverted = false;
    			break;
    		}
    		for (int i = 0; i < ArrSize; i++) {
    			//获取数据
    			getDataForColORRow(map, i);
    			//合并
    			merge(inverted);
    			//还原
    			reduction(map, i);
    			//清空
    			arrClearr();
    		}
    		//创建随机数字
    		randomCreateNum();
    		for (size_t i = 0; i < ArrSize; i++) {
    			for (size_t j = 0; j < ArrSize; j++) {
    			        //设置数字精灵的图片
    				number[i][j]->setImage(map[i][j]);
    				//设置数字精灵位置
    				number[i][j]->setPosition(Vec2(113 * j + 7, 113 * (ArrSize - i - 1) + 7));
    			}
    		}
    		isInput = false;
    	}
    	
    }
    
    /*
    	初始化棋盘数字
    */
    void GameLayer::initNumber() {
    	//开局随机先创建两个数字
    	randomCreateNum();
    	randomCreateNum();
    	//初始化棋盘数字并打印
    	for (size_t i = 0; i < ArrSize; i++) {
    		for (size_t j = 0; j < ArrSize; j++) {
    			number[i][j] = Number::create(map[i][j]);
    			number[i][j]->setAnchorPoint(Vec2(0, 0));
    			number[i][j]->setPosition(Vec2(113 * j + 7, 113 * (ArrSize - i - 1) + 7));
    			this->addChild(number[i][j], 1);
    		}
    	}
    }
    
    
    /*
    	获取原行或原列数据
    */
    void GameLayer::getDataForColORRow(int arr[][ArrSize], int getNum) {
    	for (int i = 0; i < ArrSize; i++) {
    		switch (dir) {
    		case left:
    			temp[i] = arr[getNum][i];
    			break;
    		case right:
    			temp[i] = arr[getNum][ArrSize - i - 1];
    			break;
    		case down:
    			temp[i] = arr[ArrSize - i - 1][getNum];
    			break;
    		case up:
    			temp[i] = arr[i][getNum];
    			break;
    		}
    	}
    }
    
    /*
    	合并方法
    */
    void GameLayer::merge(bool inverted) {
    	//第一次去零
    	removeZero(inverted, false);
    	//进行合并,把后一个数字给设置为0
    	for (int i = 0; i < ArrSize - 1; i++) {
    		if (temp[i] == temp[i + 1]) {
    			temp[i] += temp[i + 1];
    			temp[i + 1] = 0;
    		}
    	}
    	//第二次去零
    	removeZero(inverted, true);
    }
    
    /*
    	去0方法
    */
    void GameLayer::removeZero(bool inverted, bool again) {
    	int arr[ArrSize]{ 0 };
    	int j = 0;
    	//先把非0数字给提取出来,放到一个新数组中
    	for (int i = 0; i < ArrSize; i++) {
    		if (temp[i] != 0) {
    			arr[j++] = temp[i];
    			temp[i] = 0;
    		}
    	}
    	for (int i = 0; i < j; i++) {
    		if (inverted) {
    		        //如果是正向获取来的数组,还原的时候也是正向
    			temp[i] = arr[i];
    		} else {
    			if (!again) {
    			        //如果是反向且第二次去0,则不需要把数组倒置
    				temp[i] = arr[i];
    			} else {
    			        //如果是反向获取来的数组,还原的时候也是反向
    				temp[ArrSize - i - 1] = arr[i];
    			}
    		}
    	}
    }
    
    /*
    	将一维数组还原至原列或原行
    */
    void GameLayer::reduction(int arr[][ArrSize], int reductionNum) {
    	for (int i = 0; i < ArrSize; i++) {
    		switch (dir) {
    		case left:
    		case right:
    			arr[reductionNum][i] = temp[i];
    			break;
    		case down:
    		case up:
    			arr[i][reductionNum] = temp[i];
    			break;
    		}
    	}
    }
    
    
    //是否开启键盘监听
    void GameLayer::setKeyboardEnable(bool enable) {
    	if (enable) {//开启
    		auto listener = EventListenerKeyboard::create();
    		listener->onKeyPressed = CC_CALLBACK_2(GameLayer::onKeyPressed, this);
    		//事件分发
    		_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);
    	} else {//关闭
    		_eventDispatcher->removeEventListenersForTarget(this);
    	}
    }
    
    /*
    	键盘监听
    */
    void GameLayer::onKeyPressed(cocos2d::EventKeyboard::KeyCode keyCode, cocos2d::Event*) {
    	switch (keyCode) {
    	case EventKeyboard::KeyCode::KEY_UP_ARROW:
    		dir = up;
    		isInput = true;
    		break;
    	case EventKeyboard::KeyCode::KEY_DOWN_ARROW:
    		dir = down;
    		isInput = true;
    		break;
    
    	case EventKeyboard::KeyCode::KEY_LEFT_ARROW:
    		dir = left;
    		isInput = true;
    		break;
    
    	case EventKeyboard::KeyCode::KEY_RIGHT_ARROW:
    		dir = right;
    		isInput = true;
    		break;
    	}
    }
    
    /*
    	数组清空
    */
    void GameLayer::arrClearr() {
    	for (size_t i = 0; i < ArrSize; i++) {
    		temp[i] = 0;
    	}
    }
    
    /*
    	随机创建数字
    */
    void GameLayer::randomCreateNum() {
    	int x = rand() % ArrSize;
    	int y = rand() % ArrSize;
    	while (map[x][y] != 0) {
    	        //判断map[x][y]的这个元素是否为0,如果不是0,则继续随机获取坐标
    		x = rand() % ArrSize;
    		y = rand() % ArrSize;
    	}
    ![](https://user-gold-cdn.xitu.io/2020/4/24/171ab6d72edb2f43?w=304&h=320&f=gif&s=235311)
    	map[x][y] = rand() % 2 == 0 ? 2 : 4;
    }
    

    最后附上我的github地址,供大家参考源码
    https://github.com/DemonHXD/2048

    展开全文
  • cocos2d-js 游戏源码

    千次阅读 2018-04-08 23:49:12
    四款不同类型的游戏 完整的项目 https://github.com/QQ951127336/Game_byJavaScript 10秒内吃萝卜 /** * Created by 95112 on 2018/4/1. */ var rabbit = null; var size = null; var xStep = null; var ...

    四款不同类型的游戏
    这里写图片描述

    完整的项目
    https://github.com/QQ951127336/Game_byJavaScript

    10秒内吃萝卜

    /**
     * Created by 95112 on 2018/4/1.
     */
    var rabbit = null;
    var size = null;
    var xStep = null;
    var yStep = null;
    var amountRadish = 5;
    var cave = null;
    var winBoard = null;
    var EatRadishLayer = cc.Layer.extend({
        radishGroup:null,
        winBoard:null,
        key:0,
        lose:null,
        timeout:10,
        timeoutLabel:null,
        ctor:function(){
            this._super();
            this.radishGroup = [];
            amountRadish = 5;
            var Board = new cc.MenuItemFont("恭喜过关,进入下一关",this.nextGame,this);
            Board.fontSize = 33;
            winBoard =new cc.Menu(Board);
            size = cc.director.getWinSize();
    
    
            var bgSprite = new cc.Sprite(res.grassBackground);
    
            xStep = size.width/15;
            yStep = size.height/15;
            bgSprite.attr({
                x:size.width/2,
                y:size.height/2,
                scale:1.7
            });
            this.addChild(bgSprite);
            cc.audioEngine.playMusic("res/sounds/bgm1.wav",true);
            rabbit = new cc.Sprite(res.rabbitWalk)
            rabbit.attr({
                x:50,
                y:50,
                scale:0.5
            });
            for(var i =0; i< amountRadish;i++){
                this.addRandomRadish();
            }
            this.addCave();
            var backHome = new BackSprite(res.backHome);
            backHome.attr({
               x:size.width-backHome.width/5,
                y:size.height-backHome.height/5,
                scale:0.4
            });
            this.addChild(backHome);
            var falseBoard = new cc.MenuItemFont("重新开始",this.restartGame,this);
            falseBoard.fontSize = 33;
            this.lose = new cc.Menu(falseBoard);
    
            this.timeout = 10;
            this.timeoutLabel = cc.LabelTTF.create("剩余时间 : "+this.timeout,"Arial",30);
            this.timeoutLabel.attr({
                x:size.width/2,
                y:size.height-50,
            });
            this.addChild(this.timeoutLabel);
    
            this.schedule(this.timer, 1,this.timeout,1);
    
    
            this.scheduleUpdate();
            if('keyboard' in cc.sys.capabilities){
                cc.eventManager.addListener({
                    event:cc.EventListener.KEYBOARD,
                    onKeyReleased:function(keyCode,event){
                        if (keyCode == cc.KEY.right && (rabbit.x + xStep)<size.width){
                            rabbit.scaleX=0.5;
                            rabbit.x = rabbit.x + xStep;
                        }else if(keyCode == cc.KEY.left && (rabbit.x - xStep)>0){
                            rabbit.scaleX=-0.5;
                            rabbit.x = rabbit.x - xStep;
                        }else if(keyCode == cc.KEY.up && (rabbit.y + yStep) <size.height){
                            rabbit.y = rabbit.y + yStep;
                        }else if(keyCode == cc.KEY.down && (rabbit.y - yStep) > 0){
                            rabbit.y = rabbit.y - yStep;
                        }
                    }
                },this);
            }
            return true;
        },
        timer:function(){
            if(this.timeout>0) {
                this.timeout -= 1;
                this.timeoutLabel.setString("剩余时间 : " + this.timeout);
            }else if(this.key==0){
                rabbit.removeFromParent();
                rabbit = new cc.Sprite();
                this.addChild(this.lose);
                this.unscheduleUpdate(this.update());
            }
        }
        ,
        restartGame:function(){
            cc.director.runScene(new EatRadishScene())
        }
        ,
        nextGame:function(){
            cc.director.runScene(new EatRadishScene1());
        }
        ,
        update:function(){
            this.removeRabbit();
            this.drawRabbit();
        }
        ,
        drawRabbit:function(){
            this.addChild(rabbit)
        },
        removeRabbit:function(){
            rabbit.removeFromParent();
            for(var i = 0; i<this.radishGroup.length; i++){
                if (Math.abs(rabbit.x - this.radishGroup[i].x)<xStep && Math.abs(rabbit.y - this.radishGroup[i].y)<yStep){
                    this.radishGroup[i].removeFromParent();
                    this.radishGroup[i] = undefined;
                    this.radishGroup.splice(i,1);
                    i = i-1;
                    amountRadish -= 1;
    
                    cc.audioEngine.playEffect("res/sounds/eatRadish.wav",false);
                }
            }
            if(amountRadish==0 && Math.abs(rabbit.x - cave.x )<xStep&&Math.abs(rabbit.y-cave.y)<yStep && this.key == 0){
                this.addChild(winBoard);
                rabbit = new cc.Sprite();
                this.key +=1;
                cc.audioEngine.stopMusic();
                cc.audioEngine.playEffect("res/sounds/win.wav",false);
            }
        },
        addRandomRadish:function(){
            var radish = new cc.Sprite(res.radish);
            radish.attr({
                x:radish.width/2 + size.width/1.5*cc.random0To1(),
                y:radish.height/2 + size.height/1.5*cc.random0To1(),
                scale:0.3
            });
            this.addChild(radish);
            this.radishGroup.push(radish);
        },
        addCave:function(){
            cave = new cc.Sprite(res.cave);
            cave.attr({
                x:cave.width/2 + size.width/1.5*cc.random0To1(),
                y:cave.height/2 + size.height/1.5*cc.random0To1(),
                scale:0.6
            });
            this.addChild(cave);
        }
    }) ;
    var EatRadishScene = cc.Scene.extend({
        onEnter:function(){
            this._super();
            var layer = new EatRadishLayer();
            this.addChild(layer);
        }
    })

    拼图游戏

    /**
     * Created by 95112 on 2018/4/4.
     */
    var puzzleGroup;
    var click;
    var size;
    var which;
    var number;
    var over;
    var winBoard = null;
    var distance ;
    var PuzzleLayer = cc.Layer.extend({
        ctor:function(){
            this._super();
            size = cc.winSize;
            over = false;
            puzzleGroup = new Array();
            distance = 100;
            which = null;
            click = false;
            number = 5;
            var Board = new cc.MenuItemFont("恭喜过关,进入下一关",this.nextGame,this);
            Board.fontSize = 33;
            winBoard =new cc.Menu(Board);
    
            var bgSprite = new cc.Sprite(res.puzzleBackground);
            bgSprite.attr({
                x:size.width/2,
                y:size.height/2,
            });
            this.addChild(bgSprite);
            cc.audioEngine.playMusic("res/sounds/bgm1.wav",true);
            puzzleGroup[0] = new cc.Sprite(res.fAnswer);
            puzzleGroup[0].attr({
                x:size.width/2,
                y:size.height/2,
                scale:0.5
            });
            for(var i = 1 ; i <= 5;i++){
                puzzleGroup[i] = new cc.Sprite("res/first/f"+i+".png");
                puzzleGroup[i].attr({
                    x:i*size.width/6,
                    y:70,
                    scale:0.5,
                });
                this.addChild(puzzleGroup[i]);
            }
            puzzleGroup[1].scale=0.6
            puzzleGroup[2].scale=0.6;
            puzzleGroup[4].scale=0.45;
            puzzleGroup[5].scale=0.45;
            var backHome = new BackSprite(res.backHome);
            backHome.attr({
                x:size.width-backHome.width/5,
                y:size.height-backHome.height/5,
                scale:0.4
            });
            this.addChild(backHome);
            this.scheduleUpdate();
            if('mouse' in cc.sys.capabilities){
                cc.eventManager.addListener({
                    event:cc.EventListener.MOUSE,
                    onMouseDown:function(event){
                        click = true;
                        var pos = event.getLocation();
                        var minX = 1000;
                        var minY = 1000;
                        var distanceX ,distanceY;
                        for ( var i = 1 ; i<= number;i++){
                            distanceX = Math.abs(puzzleGroup[i].x - pos.x);
                            distanceY =  Math.abs(puzzleGroup[i].y - pos.y);
                            if(distanceX <puzzleGroup[i].width/4 &&distanceY <puzzleGroup[i].height/4 ){
                                if((Math.pow(distanceX,2) + Math.pow(distanceY,2)) < (Math.pow(minX,2)+Math.pow(minY,2))){
                                    which = i;
                                    minX = distanceX;
                                    minY = distanceY;
                                }
    
                            }
                        }
                    },
                    onMouseMove:function(event){
                        var pos = event.getLocation();
                        if (click && which!=null){
                            puzzleGroup[which].attr({
                                x:pos.x,
                                y:pos.y,
                            })
                        }
                    },
                    onMouseUp:function(event){
                        click =false;
                        which = null;
                        cc.audioEngine.playEffect("res/sounds/puzzleMusic.wav",false);
                    }
                },this);
            }
        },
        nextGame:function(){
            cc.director.runScene(new PuzzleScene2());
        },
        update:function(){
            this.removeItems();
            this.addItems();
        }
        ,
        addItems:function(){
          for  (var i =1 ; i <=number;i++){
              this.addChild(puzzleGroup[i]);
          }
        },
        removeItems:function(){
            for (var i =1; i<= number;i++){
                puzzleGroup[i].removeFromParent();
            }
            if((puzzleGroup[4].y > puzzleGroup[5].y) && puzzleGroup[4].x > puzzleGroup[5].x && (puzzleGroup[4].y - puzzleGroup[5].y)<distance && (puzzleGroup[4].x - puzzleGroup[5].x)< distance ){
                if(puzzleGroup[3].y < puzzleGroup[5].y && puzzleGroup[3].x > puzzleGroup[1].x  && (puzzleGroup[3].y - puzzleGroup[5].y)>( -distance) && (puzzleGroup[3].x - puzzleGroup[1].x )<distance){
                    if(puzzleGroup[1].x<puzzleGroup[5].x && puzzleGroup[1].y < puzzleGroup[5].y && (puzzleGroup[5].x - puzzleGroup[1].x)<distance && (puzzleGroup[1].y - puzzleGroup[5].y)>(-distance)){
                        if (puzzleGroup[2].x<puzzleGroup[5].x && puzzleGroup[2].y > puzzleGroup[1].y && (puzzleGroup[2].x - puzzleGroup[5].x)>(-distance)){
    
                            if (!over){
                                console.log("win!!!!!!!!!!!!");
                                for(var i =1 ; i<=number;i++){
                                    puzzleGroup[i] = new cc.Sprite();
    
                                }
                                cc.audioEngine.stopMusic();
                                cc.audioEngine.playEffect("res/sounds/win.wav",false);
                                this.addChild(puzzleGroup[0]);
                                this.addChild(winBoard);
                                over = true;
                            }
                        }
                    }
                }
            }
        }
    });
    
    var PuzzleScene = cc.Scene.extend({
        onEnter:function(){
            this._super();
            var layer = new PuzzleLayer();
            this.addChild(layer);
        }
    });

    连水管游戏

    /**
     *
     * Created by 95112 on 2018/4/4.
     */
    var size;
    var tXStep;
    var tYStep;
    var pipeGroup;
    var number;
    var winBoard = null;
    var over;
    var tubeLayer = cc.Layer.extend({
        ctor:function(){
          this._super();
          pipeGroup = [];
          over =false;
          size = cc.director.getWinSize();
          var Board = new cc.MenuItemFont("恭喜过关,进入下一关",this.nextGame,this);
          Board.fontSize = 33;
          winBoard =new cc.Menu(Board);
          winBoard.y = size.height/2+200;
          var bgSprite = new cc.Sprite(res.waterBackground);
          bgSprite.attr({
              x:size.width/2,
              y:size.height/2
          });
          this.addChild(bgSprite);
          cc.audioEngine.playMusic("res/sounds/bgm2.wav",true);
          tXStep = size.width/6;
          tYStep = size.height/6;
    
            var backHome = new BackSprite(res.backHome);
            backHome.attr({
                x:size.width-backHome.width/5,
                y:size.height-backHome.height/5,
                scale:0.4
            });
            this.addChild(backHome);
          this.addStartAndEnd();
          this.addMustPipe();
          this.scheduleUpdate();
          },
        addStartAndEnd:function(){
            var pipeStart = new cc.Sprite(res.pipeNode);
            pipeStart.attr({
                x:pipeStart.width/2,
                y:size.height/2,
                rotation:90,
                scaleX:0.7
    
            });
            this.addChild(pipeStart);
            var pipeEnd = new cc.Sprite(res.pipeNode);
            pipeEnd.attr({
                x:size.width-pipeStart.width/2,
                y:size.height/2,
                rotation:90,
                scaleX:0.7
    
            });
            this.addChild(pipeEnd);
        },
        nextGame:function(){
            cc.director.runScene(new tubeScene2());
        },
        update:function(){
            this.removePipe();
            this.drawPipe();
        }
        ,
        drawPipe:function(){
          for(var i =0 ; i< pipeGroup.length;i++){
              this.addChild(pipeGroup[i]);
          }
        },
        removePipe:function(){
            for(var i =0 ; i< pipeGroup.length;i++){
                pipeGroup[i].removeFromParent();
            }
            if (pipeGroup[0].way%2==1 &&pipeGroup[1].way%2==1 &&pipeGroup[2].way%2==1&&pipeGroup[3].way%2==1&&pipeGroup[4].way%2==1 &&pipeGroup[5].way%2==1 &&!over){
                this.addChild(winBoard);
                console.log("win!!!");
                over =true;
                cc.audioEngine.stopMusic();
                cc.audioEngine.playEffect("res/sounds/win.wav",false);
            }
        },
    
        addMustPipe:function(){
            pipeGroup[0] = new Pipe(res.pipeLine);
            pipeGroup[0].attr({
                x:170,
                y:size.height/2,
                scale:0.7
            });
            this.addChild(pipeGroup[0]);
            for(var i =1 ;i < 6;i++){
                pipeGroup[i] = new Pipe(res.pipeLine);
                pipeGroup[i].attr({
                    x: pipeGroup[i-1].x+pipeGroup[i-1].width+30,
                    y:size.height/2,
                    scale:0.7
                });
                this.addChild(pipeGroup[i]);
            }
    
        }
    });
    
    var tubeScene = cc.Scene.extend({
        onEnter:function(){
            this._super();
            var layer = new tubeLayer();
            this.addChild(layer);
        }
    });
    var Pipe = cc.Sprite.extend({
        onEnter:function(){
          this._super();
          this.addTouchListener();
        },
        way:0,
        ctor:function(imageURL){
            this._super(imageURL);
            this.way = 0;
        },
        onTouch:function(){
            cc.audioEngine.playEffect("res/sounds/puzzleMusic.wav",false);
            this.way = (this.way +1)%4;
            this.rotation = (this.rotation + 90)%360;
        },
        addTouchListener:function(){
            this.touchListener = cc.EventListener.create({
                event:cc.EventListener.TOUCH_ONE_BY_ONE,
                swallowTouches:true,
                onTouchBegan:function(touch,event){
                    var pos = touch.getLocation();
                    var target = event.getCurrentTarget();
                    if(cc.rectContainsPoint(target.getBoundingBox(),pos)){
                        target.onTouch();
                        console.log(target.x+" "+target.y);
                        return true;
                    }
                    return false;
                }
            });
            cc.eventManager.addListener(this.touchListener,this);
        }
    })

    跳一跳游戏

    /**
     * Created by 95112 on 2018/4/2.
     */
    var ballX = 0;
    var ballY = 0;
    var xDel = 0;
    var yDel = 5;
    var board = null;
    var rabbitBall = null;
    var boardSpeed = 0;
    
    
    var JumpRabbitLayer = cc.Layer.extend({
        size:null,
        boardWidth:0,
        win:null,
        lose:null,
        radishGroup:null,
        amountRadish:10,
        key:0,
        ctor:function(){
            this._super();
            this.radishGroup = [];
            var winBoard = new cc.MenuItemFont("恭喜全部过关,返回主菜单",this.nextGame,this);
            winBoard.fontSize = 33;
            var falseBoard = new cc.MenuItemFont("重新开始",this.restartGame,this);
            falseBoard.fontSize = 33;
            this.win = new cc.Menu(winBoard);
            this.lose = new cc.Menu(falseBoard);
            this.amountRadish =5;
            xDel =0;
            this.size = cc.director.getWinSize();
            var bgSprite =new cc.Sprite(res.jumpBackground);
            bgSprite.attr({
                x:this.size.width/2,
                y:this.size.height/2,
                scale:1.5
            });
            this.addChild(bgSprite);
            rabbitBall = new cc.Sprite(res.rabbitJump);
            rabbitBall.attr({
                x:this.size.width/2,
                y:this.size.height/2,
                scale:0.4
            });
            board = new cc.Sprite(res.board);
            board.scale = 0.5;
            board.x = this.size.width/2;
            board.y = this.size.height/15;
            this.boardWidth = board.width;
            for(var i =0; i< this.amountRadish;i++){
                this.addRandomRadish();
            }
            var backHome = new BackSprite(res.backHome);
            backHome.attr({
                x:size.width-backHome.width/5,
                y:size.height-backHome.height/5,
                scale:0.4
            });
            this.addChild(backHome);
            this.scheduleUpdate();
            if('keyboard' in cc.sys.capabilities){
                cc.eventManager.addListener({
                    event:cc.EventListener.KEYBOARD,
                    onKeyPressed:function(keyCode,event){
                        if(keyCode == cc.KEY.left){
                            boardSpeed = -10;
                        }else if(keyCode == cc.KEY.right){
                            boardSpeed = 10;
                        }else{
                            boardSpeed = 0;
                        }
                    },
                    onKeyReleased:function(keyCode,event){
                        boardSpeed = 0;
                    }
                },this)
            }
        },
        restartGame:function(){
            cc.director.runScene(new JumpRabbitScene());
        },
        nextGame:function(){
            cc.director.runScene(new MenuScene());
        }
        ,
        update:function(){
            this.removeBall();
            this.addBall();
            this.removeBoard();
            this.addBoard();
        },
        addBoard:function(){
            if (board.x + boardSpeed > 0 && board.x + boardSpeed < this.size.width)
                board.x = board.x + boardSpeed;
            this.addChild(board);
        },
        removeBoard:function(){
            board.removeFromParent();
        },
        addBall:function(){
            if (rabbitBall.x <= 0 || rabbitBall.x >= this.size.width)
                xDel = -xDel;
            if (rabbitBall.y >= this.size.height)
                yDel = -yDel;
            if (Math.abs(board.x - rabbitBall.x)<this.boardWidth/2 && rabbitBall.y -board.y <30 && rabbitBall.y > board.y){
                yDel = -yDel;
                xDel = xDel + boardSpeed/2;
            }
            rabbitBall.x = rabbitBall.x + xDel;
            rabbitBall.y = rabbitBall.y + yDel;
            this.addChild(rabbitBall);
        },
        removeBall:function(){
            rabbitBall.removeFromParent();
            for (var i =0 ; i<this.radishGroup.length;i++){
                if(Math.abs(rabbitBall.x - this.radishGroup[i].x)< 20 && Math.abs(rabbitBall.y - this.radishGroup[i].y)<20){
                    this.radishGroup[i].removeFromParent();
                    this.radishGroup[i] = undefined;
                    this.radishGroup.splice(i,1);
                    i = i-1;
                    this.amountRadish -= 1
                    yDel = -yDel;
                }
            }
            if (this.amountRadish == 0 && this.key==0){
                this.addChild(this.win);
                rabbitBall = new cc.Sprite();
                this.key += 1;
                cc.audioEngine.stopMusic();
                cc.audioEngine.playEffect("res/sounds/win.wav",false);
            }
            if(rabbitBall.y < 0){
                rabbitBall = new cc.Sprite();
                this.addChild(this.lose);
            }
        },
        addRandomRadish:function(){
            var radish = new cc.Sprite(res.radish);
            radish.attr({
                x:radish.width/2 + this.size.width/1.5*cc.random0To1(),
                y:radish.height/2 + this.size.height/1.5*cc.random0To1(),
                scale:0.3
            });
            this.addChild(radish);
            this.radishGroup.push(radish);
        },
    });
    
    var JumpRabbitScene = cc.Scene.extend({
        onEnter:function(){
            this._super();
            var layer = new JumpRabbitLayer();
            this.addChild(layer);
        }
    })
    
    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,211
精华内容 4,084
关键字:

cocos2dx小游戏源码