`
makeapp628
  • 浏览: 45193 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

下载量已超越千万的爆红游戏2048(同名小3传奇、1024)源代码解密和下载(第二篇)

阅读更多
简介
 
上一篇我们主要分析了1024原版的基本思路和简单算法,这一篇我们将继续分析如何实现各种版本的聚合;
 
运行demo需要配置好CocosEditor,暂不支持其他工具。demo基于javascript语言,cocos2d-x游戏引擎,CocosEditor手游开发工具完成的,可移植运行android,ios,html5网页等。
 
 
 
 
apk演示效果
 
 
 
 
 


CocosEditor版源代码下载:

cocos2d-js源代码请到集中营下载:http://blog.makeapp.co/?p=523

 

 

 

效果图:

 


 

 

代码分析

1  建立JS数组,有三个数组 背景颜色-等级分数-版本选择 建好之后可以在程序里面直接调用;

版本数组里面每一个版本名字、类型、字体大小和等级数组

 

[javascript] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. COLOR = [cc.c3b(255, 255, 255),  
  2.     cc.c3b(238, 246, 246), cc.c3b(172, 141, 173), cc.c3b(255, 237, 196),  
  3.     cc.c3b(242, 197, 170), cc.c3b(191, 164, 157), cc.c3b(125, 125, 106),  
  4.     cc.c3b(247, 240, 145), cc.c3b(221, 204, 163), cc.c3b(251, 96, 191), cc.c3b(254, 128, 128),  
  5.     cc.c3b(211, 84, 113), cc.c3b(63, 130, 211),  
  6.   
  7.     //other  
  8.     cc.c3b(100, 85, 39), cc.c3b(75, 34, 255), cc.c3b(58, 68, 104),  
  9.     cc.c3b(7, 0, 234), cc.c3b(153, 45, 85), cc.c3b(15, 254, 36), cc.c3b(78, 2, 34),  
  10.     cc.c3b(255, 125, 64), cc.c3b(237, 145, 33)  
  11. ];  
  12. SCORES = [0, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048];  
  13.   
  14. VERSIONS = [  
  15.     {  
  16.         num: 1,  
  17.         name: "2048原版",  
  18.         type: "number",  
  19.         labelFontSize: 50,  
  20.         array: [0, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048]  
  21.     },  
  22.     {  
  23.         num: 2,  
  24.         name: "历史版",  
  25.         type: "string",  
  26.         labelFontSize: 50,  
  27.         array: [" ""商""周""秦""汉""唐""宋""元""明""清""民国""天朝"]  
  28.     },  
  29.     {  
  30.         num: 3,  
  31.         name: "后宫版",  
  32.         type: "string",  
  33.         labelFontSize: 40,  
  34.         array: [" ""宫女""答应""常在""贵人""嫔""妃""贵妃""皇贵妃""皇后""皇太后""太皇太后"]  
  35.     },  
  36.     {  
  37.         num: 4,  
  38.         name: "军旅版",  
  39.         type: "string",  
  40.         labelFontSize: 40,  
  41.         array: [" ""小兵""班长""排长""连长""营长""团长""旅长""师长""军长""司令""军委元帅"]  
  42.     },  
  43.     {  
  44.         num: 5,  
  45.         name: "学历版",  
  46.         type: "string",  
  47.         labelFontSize: 40,  
  48.         array: [" ""幼儿""小学""中学""高中""专科""本科""研究""硕士""博士""博士后""院士"]  
  49.     },  
  50.     {  
  51.         num: 6,  
  52.         name: "金庸版",  
  53.         type: "string",  
  54.         labelFontSize: 40,  
  55.         array: [" ""令狐冲""杨过""郭靖""虚竹""风清扬""张三丰""东方不败""逍遥老祖""独孤求败""扫地神僧""达摩老祖"]  
  56.     },  
  57.     {  
  58.         num: 7,  
  59.         name: "生肖版",  
  60.         type: "string",  
  61.         labelFontSize: 40,  
  62.         array: [" ""鼠""牛""虎""兔""龙""蛇""马""羊""猴""鸡""狗""猪""龙"]  
  63.     },  
  64.     {  
  65.         num: 8,  
  66.         name: "星座版",  
  67.         type: "string",  
  68.         labelFontSize: 40,  
  69.         array: [" ""白羊座""金牛座""双子座""巨蟹座""狮子座""处女座""天秤座""天蝎座""射手座""魔羯座""水瓶座""双鱼座"]  
  70.     },  
  71.     {  
  72.         num: 9,  
  73.         name: "甲乙丙版",  
  74.         type: "string",  
  75.         labelFontSize: 40,  
  76.         array: [" ""甲""乙""丙""丁""戊""己""庚""辛""壬""癸"]  
  77.     },  
  78.     {  
  79.         num: 10,  
  80.         name: "豪车版",  
  81.         type: "string",  
  82.         labelFontSize: 40,  
  83.         array: [" ""大众""奔驰""悍马""法拉利""奥迪""宝马""兰博基尼""凯迪拉克""世爵"]  
  84.     }  
  85. ];  


 

 

2 然后找到建好的版本选择LevelLayer.js,初始化4*4版本选择表格和点击单个表格跳转到不同的版本里面

#把plist加入缓存addSpriteFrames();

#双层循环this.tables,每一个单元格放入一个新建的精灵cell=cc.MySprite.create(this.rootNode, "6.png", cc.p(px, py), 1)

#根据i,j确定cell的编号num=4*i+j;

#有了编号num可以从VERSIONS数组里面获取版本名字VERSIONS[num].name

#建立文字标签cellLabel = cc.MySprite.createLabel(cell, VERSIONS[num].name);

 

#表格初始化之后需要添加触摸事件;又一次双层循环this.tables

#检测精灵触摸cc.rectContainsPoint(sprite.getBoundingBox(), loc)

#找到编号num,传值到全局变量indexVersions=num;主场景就根据这个标示来确定版本;

#跳转到主场景cc.BuilderReader.runScene("", "MainLayer");

 

[javascript] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. LevelLayer.prototype.onEnter = function () {  
  2.     cc.SpriteFrameCache.getInstance().addSpriteFrames("res/main.plist");  
  3.     this.initX = 9;  
  4.     this.initY = 850;  
  5.     this.cellSize = 162;  
  6.     this.cellSpace = 18;  
  7.   
  8.     this.tables = new Array(4);  
  9.     for (var j = 0; j < 4; j++) {  
  10.         var sprites = new Array(4);  
  11.         for (var i = 0; i < 4; i++) {  
  12.             var px = this.initX + this.cellSize / 2 + i * (this.cellSize + this.cellSpace);  
  13.             var py = this.initY + this.cellSize / 2 - j * (this.cellSize + this.cellSpace);  
  14.             var cell = cc.MySprite.create(this.rootNode, "6.png", cc.p(px, py), 1);  
  15.             var num = 4 * j + i;  
  16.             if (num < VERSIONS.length) {  
  17.                 var cellLabel = cc.MySprite.createLabel(cell, VERSIONS[num].name);  
  18.                 cellLabel.setFontSize(30);  
  19.             }  
  20.             sprites[i] = cell;  
  21.         }  
  22.         this.tables[j] = sprites;  
  23.     }  
  24.   
  25. };  
  26.   
  27. LevelLayer.prototype.onTouchesBegan = function (touches, event) {  
  28.     cc.log("onTouchesBegan");  
  29.     var loc = touches[0].getLocation();  
  30.   
  31.     for (var j = 0; j < 4; j++) {  
  32.         for (var i = 0; i < 4; i++) {  
  33.             var sprite = this.tables[j][i];  
  34.             if (cc.rectContainsPoint(sprite.getBoundingBox(), loc)) {  
  35.                 var num = 4 * j + i;  
  36.                 cc.log("num==" + num);  
  37.                 if (num < VERSIONS.length) {  
  38.                     indexVersions = num;  
  39.                     cc.BuilderReader.runScene("""MainLayer");  
  40.                 }  
  41.             }  
  42.         }  
  43.     }  
  44.   
  45. };  


 

3 进入主场景,根据第二步得到的indexVersions,从数组VERSIONS里面获取版本实体this.indexVersion = VERSIONS[this.versionNum];

[javascript] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. MainLayer.prototype.onEnter = function () {  
  2.     //version  
  3.     this.versionNum = indexVersions;  
  4.     this.indexVersion = VERSIONS[this.versionNum];  
  5.     this.title.setString(this.indexVersion.name + "目标:" + this.indexVersion.array[this.indexVersion.array.length - 1] + "");}  

 

 

4 刷新按钮事件和返回按钮;刷新按钮比较简单,关键是返回按钮,它是一个文字标签,cocos里面没有关联点击事件;这里笔者通过触摸和创建矩形的方法来解决了这个问题;

 

[javascript] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. MainLayer.prototype.onRefreshClicked = function () {  
  2.     cc.BuilderReader.runScene("""MainLayer");  
  3. };  
  4.   
  5. MainLayer.prototype.onTouchesBegan = function (touches, event) {  
  6.     this.pBegan = touches[0].getLocation();  
  7.   
  8.     //back  
  9.     var backRect = cc.rectCreate(this.back.getPosition(), [50, 30]);  
  10.     if (cc.rectContainsPoint(backRect, this.pBegan)) {  
  11.         this.back.runAction(cc.Sequence.create(cc.ScaleTo.create(0.2, 1.1),  
  12.             cc.CallFunc.create(function () {  
  13.                 cc.AudioEngine.getInstance().stopAllEffects();  
  14.                 cc.BuilderReader.runScene("""LevelLayer");  
  15.             })  
  16.         ));  
  17.     }  
  18. };  

两篇博文完结;
分享到:
评论

相关推荐

    微信购票小程序源代码.zip

    微信购票小程序源代码.zip是一个包含微信小程序开发的完整源代码包。这个压缩文件的核心内容是“cinema_wx-code”,这很可能是一个名为“cinema_wx”的微信小程序项目的源代码目录。下面将详细阐述微信小程序的基本...

    JAVA源码Java火影忍者游戏源代码

    需要注意的是,在下载和使用他人分享的源代码时,应当确保其来源合法,并且尊重原作者的版权。如果涉及到商业用途,还需要考虑是否需要获得授权或许可。 #### 源代码分析 - **代码结构**:通常,一个Java游戏项目...

    智能门锁小程序源代码

    智能门锁小程序源代码是专为现代科技生活设计的一款应用程序,它主要运行在微信小程序平台上。这个源代码的核心功能在于生成临时动态密码,为用户提供安全、便捷的门锁控制方式。临时动态密码技术是一种增强安全性的...

    JDOM解析同名多节点的XML源代码

    本篇文章将深入探讨如何使用JDOM解析包含同名多节点且带有多个属性的XML源代码,以及如何从HTTP返回流中直接获取并解析XML数据。 首先,让我们理解XML文档的基本结构。XML文档由元素、属性、文本和注释等组成。同名...

    BR大逃杀游戏开发源代码

    BR大逃杀游戏,全称为Battle Royale(大逃杀)类型的游戏,是一种多人在线竞技生存游戏,灵感来源于日本作家高见广春的小说《大逃杀》和同名电影。玩家通常被投放到一个封闭的环境中,需要通过搜集资源、对抗其他...

    Java基础入门源代码

    这个"Java基础入门源代码"集合应该是为了帮助初学者理解和实践Java编程基础而设计的。让我们详细探讨一下Java语言的基础知识,以及如何通过源代码学习。 1. **基本语法**:Java的语法与C++和C#类似,它包括类、对象...

    仙境传说(RO)私人服务器端源代码delphi

    仙境传说(RO)是一款深受玩家喜爱的大型多人在线角色扮演游戏,其私人服务器端源代码是开发者们研究游戏机制、自定义游戏规则的重要参考资料。本资源提供的"仙境传说(RO)私人服务器端源代码delphi",是使用Delphi...

    anthem源代码

    "Anthem"源代码指的是由著名游戏开发商Bioware开发的同名游戏——《Anthem》背后的编程语言和逻辑。这款游戏以其独特的世界观、动态的飞行战斗和丰富的角色定制系统吸引着全球玩家。本文将深入探讨Anthem源代码中的...

    VC6+DirectX开发的游戏Koules(VC6源代码,321K)

    《VC6+DirectX开发的游戏Koules》是一款基于Visual C++ 6.0和DirectX技术开发的小型游戏,其源代码小巧却能实现精彩的效果。本游戏的开发是受到LINUX平台同名游戏的启发,但在Windows环境下运行,需要安装DirectX ...

    扫雷C++源代码

    扫雷游戏是一款经典的桌面益智游戏,其C++源代码为初学者提供了深入理解编程语言特性和算法设计的宝贵资源。下面将详细解释这个扫雷项目中的关键知识点,并且探讨如何通过它来学习C++编程。 1. **基础C++语法**:...

    全面培训asp.net程序设计源代码

    本资源“全面培训asp.net程序设计源代码”是一个针对初学者的优秀学习材料,通过实例源代码深入浅出地讲解ASP.NET程序设计的核心概念和技术。 在学习ASP.NET时,首要理解的是其基本架构。ASP.NET页面生命周期是关键...

    android 贪吃蛇游戏源代码+分析

    在Android平台上,贪吃蛇游戏是一款经典的休闲娱乐应用,它基于早期诺基亚手机上的同名游戏进行开发。本文将深入解析这个Android贪吃蛇游戏的源代码,并探讨其核心概念和技术实现。 首先,让我们从游戏的基本框架...

    可乐吧在线游戏最新服务器端及部分源代码

    把生成的放在kele8中就行了,有个同名的文件在里面的. 另外里面有很多不同的文件名的执行文件,但它们的字节数都一样的,那个就是微软公司的jview文件了.它是用执行java程式的.用它来打开同样名的.zip文件,后面再加个有...

    用VC编写的邮件客户端源代码

    标题 "用VC编写的邮件客户端源代码" 描述了一个使用C++编程语言,在Microsoft Visual C++(简称VC)开发环境中构建的邮件客户端程序。这个项目包含了一系列与邮件发送和接收相关的源代码文件,旨在帮助C++程序员理解...

    C++入门经典源代码(第3版)\2271

    《C++入门经典源代码(第3版)\2271》是一本旨在引导初学者进入C++编程世界的书籍,其附带的源代码文件集合为读者提供了实践和理解编程概念的重要资源。在这个压缩包中,包含了一系列与书中章节相关的程序示例,帮助...

    Android APK反编译方法,可查看java源代码

    有时,开发者可能需要对已发布的APK进行反编译,以查看或修改其内部结构,例如Java源代码,这在逆向工程、安全分析或学习他人代码时尤为常见。本文将详细介绍如何通过ApkTool工具进行APK反编译。 首先,理解什么是...

    Android 扫雷源代码

    这个"Android 扫雷源代码"提供了一个实现扫雷游戏的基础框架,适用于Android开发人员学习和研究。下面将详细介绍这个源代码中涉及到的主要技术点、设计思路以及可能包含的优化技巧。 1. **基本逻辑实现**: - 游戏...

    经典小游戏,Python版魂斗罗完整程序包

    【标题】"经典小游戏,Python版魂斗罗完整程序包"揭示了这是一个使用...通过分析和修改源代码,开发者可以学习到游戏逻辑、碰撞检测、动画制作、用户输入处理等多个方面的知识,对于提升编程技能和娱乐都有积极的作用。

    中国象棋源代码C++

    【中国象棋源代码C++】是一份使用C++编程语言实现的中国象棋游戏的源代码。在学习和分析这份源代码时,我们可以深入理解C++编程的基础知识,以及如何利用面向对象编程来设计一个复杂的棋类游戏。以下是这份源代码中...

    曾经写过的生成器源代码

    【生成器与源代码】 在编程领域,"生成器"是一种特殊的函数,它可以在执行过程中暂停并保持其内部状态,以便在后续调用时继续执行。这种机制使得生成器能够有效地处理大量数据,特别是那些不适合一次性加载到内存中...

Global site tag (gtag.js) - Google Analytics