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

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

阅读更多
一张图告诉你2048有多火
 

 
 
小3的悲剧
 
在每个阶段手机里面都会有一两款让人爱不释手的游戏存在,无论是在公车上、床铺上、马桶上还是在睡觉前、吃饭前、总会有让你拿出手机打开它的欲望。大部分人被Flappy bird给蹂躏的体无完肤,生活不能自理。在这危难降临的时刻,一款名为小3传奇的数字益智游戏出现在我们的视野中,游戏既简单又复杂,既单一又千变万化,简直就让人停不下来!
 
但故事的发展是这样的,小3传奇的两位开发者花了近一年半时间才开发出这个游戏的核心玩法,却在其上架appstore后仅21天就被《1024》抄了过去。而《2048》则更为迅速,19岁的Gabriele Cirulli只用了一个星期改编前两者游戏,却获得最大的成功,而小3却不被人知 ;这类游戏从发布到现在,不管是app store还是android市场,下载量已经远远超越了千万,网上各种版本的都有;
 
 
 
CocosEditor开源版
 
笔者历时一个晚上,终于完成了cocos2d-js开源版本,编码虽易,创意不易,且行且珍惜
 
此版本包含了网上流行的各种版本。包括原版,朝代版,金庸版,星座,豪车等等近10个版本,代码开源,希望读者基于开源代码做出各种版本,供全名娱乐
 
运行demo需要配置好CocosEditor,暂不支持其他工具。demo是跨平台的,可移植运行android,ios,html5网页等,代码是基于javascript语言,cocos2d-x游戏引擎,CocosEditor手游开发工具完成的。
 
本文共两篇,第一篇分析原版,第二篇分析各种版本,本代码仅供参考,有更好的实现方法可以评论中探讨
 
 
 
 
已发布上线apk演示效果
 
几个小时开发,一天审核上线,这就是CocosEditor开发游戏的速度
 
 
 
 
 


CocosEditor版源代码下载:

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

github版本管理:https://github.com/makeapp/cocoseditor-2048

 

 

 
Github里面大牛提供了各种语言的版本
 
包括(java  ,css,shell,python,objective-c等等),读者可自行下载

 

 

 

不同平台下的效果图:

 

windows




html5网页


 

android平台(各种主题版本)

 

 

 

代码分析:

1初始化;进入游戏,初始化4*4表格,并随机产生两个2;

# 二维数组this.tables表格循环存入数据

#random1, random2 ,random11, random22四个随机数可以确定两个2的xy位置;

#方法newNumber里面,根据位置i,j和级别num可以确定一个新的数字;创建背景cell和cell上面的数字标签cellLabel;并根据num确定是否显示cellLabel;最后给cell关联一个data数据;特别说明这里的number:num不是精灵上面的数字而是精灵的级别,比如number=11 则数字是1024

 

[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] + "");  
  6.   
  7.     var random1 = getRandom(4);  
  8.     var random2 = getRandom(4);  
  9.     while (random1 == random2) {  
  10.         random2 = getRandom(4);  
  11.     }  
  12.   
  13.     var random11 = getRandom(4);  
  14.     var random22 = getRandom(4);  
  15.   
  16.     this.tables = new Array(4);  
  17.     for (var i = 0; i < 4; i++) {  
  18.         var sprites = new Array(4);  
  19.         for (var j = 0; j < 4; j++) {  
  20.             if (i == random1 && j == random11) {  
  21.                 sprites[j] = this.newNumber(i, j, 1);  
  22.             } else if (i == random2 && j == random22) {  
  23.                 sprites[j] = this.newNumber(i, j, 1);  
  24.             } else {  
  25.                 sprites[j] = this.newNumber(i, j, 0);  
  26.             }  
  27.         }  
  28.         this.tables[i] = sprites;  
  29.     }  
  30.   
  31.     this.totalScore = 0;  
  32.   
  33. };  
  34.   
  35.   
  36. MainLayer.prototype.newNumber = function (i, j, num) {  
  37.     var cell = cc.MySprite.create(this.rootNode, "5.png"this.getPosition(i, j), 1);  
  38.     var cellLabel = cc.MySprite.createLabel(cell, "");  
  39.   
  40.     if (num > 0) {  
  41.         cell.setColor(COLOR[num]);  
  42.         cellLabel.setVisible(true);  
  43.         cellLabel.setString(this.indexVersion.array[num]);  
  44.         cellLabel.setFontSize(this.indexVersion.labelFontSize);  
  45.     } else {  
  46.         cellLabel.setVisible(false);  
  47.     }  
  48.     cell.data = {col: i, row: j, numberLabel: cellLabel, number: num};  
  49.     return cell;  
  50. };  


 

2 四个方向算法;玩游戏的时候触摸四个方向,表格就向四个方向合并靠拢leftCombineNumber,rightCombineNumber,downCombineNumber,upCombineNumber,四个方法函数的算法都是一样的,我只分析一个leftCombineNumber;

第一步 相同数据叠加 :

#j从左到右变大,i从下到上变大;也就初始位置是左下角;

#如果该单元格级别不是空背景  cell.data.number != 0 ;

#从它的右边开始var k = i + 1;  循环遍历while (k < 4)  {k++};

#如果遍历到单元格级别也不是空背景 if (nextCell.data.number != 0) 遍历结束 k = 4; break;;

#而且如果发现两个单元的级别一样if (cell.data.number == nextCell.data.number) 

#级别数据number刷新变化

cell.data.number += 1;

nextCell.data.number = 0;

 

第二步 填充空数据;

#同理第一步,如果是空背景if (cell.data.number == 0),也是循环遍历while (k < 4)  {k++};

#如果遍历到单元格级别不是空背景 if (nextCell.data.number != 0)  ,空背景获得该单元格的数据,而该单元格则设为空背景;

cell.data.number = nextCell.data.number;
nextCell.data.number = 0;

 

[javascript] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. //direction left  
  2. MainLayer.prototype.leftCombineNumber = function () {  
  3.     for (var j = 0; j < 4; j++) {  
  4.         for (var i = 0; i < 4; i++) {  
  5.             var cell = this.tables[i][j];  
  6.             if (cell.data.number != 0) {  
  7.                 var k = i + 1;  
  8.                 while (k < 4) {  
  9.                     var nextCell = this.tables[k][j];  
  10.                     if (nextCell.data.number != 0) {  
  11.                         if (cell.data.number == nextCell.data.number) {  
  12.                             cell.data.number += 1;  
  13.                             nextCell.data.number = 0;  
  14.                             this.totalScore += SCORES[cell.data.number];  
  15.                         }  
  16.                         k = 4;  
  17.                         break;  
  18.                     }  
  19.                     k++;  
  20.                 }  
  21.             }  
  22.         }  
  23.     }  
  24.   
  25.     for (j = 0; j < 4; j++) {  
  26.         for (i = 0; i < 4; i++) {  
  27.             cell = this.tables[i][j];  
  28.             if (cell.data.number == 0) {  
  29.                 k = i + 1;  
  30.                 while (k < 4) {  
  31.                     nextCell = this.tables[k][j];  
  32.                     if (nextCell.data.number != 0) {  
  33.                         cell.data.number = nextCell.data.number;  
  34.                         nextCell.data.number = 0;  
  35.                         k = 4;  
  36.                     }  
  37.                     k++;  
  38.                 }  
  39.             }  
  40.         }  
  41.     }  
  42.   
  43.     this.refreshNumber();  
  44. };  
  45.   
  46. //direction right  
  47. MainLayer.prototype.rightCombineNumber = function () {  
  48.     for (var j = 0; j < 4; j++) {  
  49.         for (var i = 3; i >= 0; i--) {  
  50.             var cell = this.tables[i][j];  
  51.             if (cell.data.number != 0) {  
  52.                 var k = i - 1;  
  53.                 while (k >= 0) {  
  54.                     var nextCell = this.tables[k][j];  
  55.                     if (nextCell.data.number != 0) {  
  56.                         if (cell.data.number == nextCell.data.number) {  
  57.                             cell.data.number += 1;  
  58.                             nextCell.data.number = 0;  
  59.                             this.totalScore += SCORES[cell.data.number];  
  60.                         }  
  61.                         k = -1;  
  62.                         break;  
  63.                     }  
  64.                     k--;  
  65.                 }  
  66.             }  
  67.         }  
  68.     }  
  69.   
  70.     for (j = 0; j < 4; j++) {  
  71.         for (i = 3; i >= 0; i--) {  
  72.             cell = this.tables[i][j];  
  73.             if (cell.data.number == 0) {  
  74.                 k = i - 1;  
  75.                 while (k >= 0) {  
  76.                     nextCell = this.tables[k][j];  
  77.                     if (nextCell.data.number != 0) {  
  78.                         cell.data.number = nextCell.data.number;  
  79.                         nextCell.data.number = 0;  
  80.                         k = -1;  
  81.                     }  
  82.                     k--;  
  83.                 }  
  84.             }  
  85.         }  
  86.     }  
  87.   
  88.     this.refreshNumber();  
  89. };  
  90.   
  91. MainLayer.prototype.downCombineNumber = function () {  
  92.     for (var i = 0; i < 4; i++) {  
  93.         for (var j = 0; j < 4; j++) {  
  94.             var cell = this.tables[i][j];  
  95.             if (cell.data.number != 0) {  
  96.                 var k = j + 1;  
  97.                 while (k < 4) {  
  98.                     var nextCell = this.tables[i][k];  
  99.                     if (nextCell.data.number != 0) {  
  100.                         if (cell.data.number == nextCell.data.number) {  
  101.                             cell.data.number += 1;  
  102.                             nextCell.data.number = 0;  
  103.                             this.totalScore += SCORES[cell.data.number];  
  104.                         }  
  105.                         k = 4;  
  106.                         break;  
  107.                     }  
  108.                     k++;  
  109.                 }  
  110.             }  
  111.         }  
  112.     }  
  113.   
  114.     for (i = 0; i < 4; i++) {  
  115.         for (j = 0; j < 4; j++) {  
  116.             cell = this.tables[i][j];  
  117.             if (cell.data.number == 0) {  
  118.                 k = j + 1;  
  119.                 while (k < 4) {  
  120.                     nextCell = this.tables[i][k];  
  121.                     if (nextCell.data.number != 0) {  
  122.                         cell.data.number = nextCell.data.number;  
  123.                         nextCell.data.number = 0;  
  124.                         k = 4;  
  125.                     }  
  126.                     k++;  
  127.                 }  
  128.             }  
  129.         }  
  130.     }  
  131.   
  132.     this.refreshNumber();  
  133. };  
  134.   
  135. //touch up  
  136. MainLayer.prototype.upCombineNumber = function () {  
  137.     for (var i = 0; i < 4; i++) {  
  138.         for (var j = 3; j >= 0; j--) {  
  139.             var cell = this.tables[i][j];  
  140.             if (cell.data.number != 0) {  
  141.                 var k = j - 1;  
  142.                 while (k >= 0) {  
  143.                     var nextCell = this.tables[i][k];  
  144.                     if (nextCell.data.number != 0) {  
  145.                         if (cell.data.number == nextCell.data.number) {  
  146.                             cell.data.number += 1;  
  147.                             nextCell.data.number = 0;  
  148.                             this.totalScore += SCORES[cell.data.number];  
  149.                         }  
  150.                         k = -1;  
  151.                         break;  
  152.                     }  
  153.                     k--;  
  154.                 }  
  155.             }  
  156.         }  
  157.     }  
  158.   
  159.     for (i = 0; i < 4; i++) {  
  160.         for (j = 3; j >= 0; j--) {  
  161.             cell = this.tables[i][j];  
  162.             if (cell.data.number == 0) {  
  163.                 k = j - 1;  
  164.                 while (k >= 0) {  
  165.                     nextCell = this.tables[i][k];  
  166.                     if (nextCell.data.number != 0) {  
  167.                         cell.data.number = nextCell.data.number;  
  168.                         nextCell.data.number = 0;  
  169.                         k = -1;  
  170.                     }  
  171.                     k--;  
  172.                 }  
  173.             }  
  174.         }  
  175.     }  
  176.   
  177.     this.refreshNumber();  
  178. };  


 

3 刷新数据和颜色;

上面的算法完成了,只是该精灵的data里面的数据发生了变化,但视觉上没有任何变化,所以需要刷新数据和颜色

#新建一个空背景数组emptyCellList;

#又是循环二维数组this.tables

#得到单元格的文字标签label,和级别cellNumber

#如果不是空背景cellNumber!=0,label显示和设置文字内容和大小,同时如果检测到是最高级别,游戏成功结束

#如果是空背景,label隐藏 emptyCellList添加该元素emptyCellList.push(cell);;

 

#得到一个emptyCellList后,如果发现该数组大小为空,也就无法再产生一个数字2了,游戏over;

#而如果数组大小不是空,随机取一个位置randomCell,设置数据等级为0,数字为2,并播放缩放动画runAction;

 

[javascript] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. MainLayer.prototype.refreshNumber = function () {  
  2.     var emptyCellList = [];  
  3.     for (var i = 0; i < 4; i++) {  
  4.         var numbers = " ";  
  5.         for (var j = 0; j < 4; j++) {  
  6.             var cell = this.tables[i][j];  
  7.             var label = cell.data.numberLabel;  
  8.             var cellNumber = cell.data.number;  
  9.             if (cellNumber != 0) {  
  10.                 cell.setColor(COLOR[cellNumber]);  
  11.                 label.setString(this.indexVersion.array[cellNumber] + " ");  
  12.                 label.setFontSize(this.indexVersion.labelFontSize);  
  13.                 label.setVisible(true);  
  14.                 if (cellNumber == (this.indexVersion.array.length - 1)) {  
  15.                     //check success  
  16.                     var toast = cc.Toast.create(this.rootNode, "成功到达:" + this.indexVersion.array[cellNumber], 2);  
  17.                     toast.setColor(cc.c3b(255, 0, 0));  
  18.                     this.rootNode.scheduleOnce(function () {  
  19.                         cc.BuilderReader.runScene("""MainLayer");  
  20.                     }, 2)  
  21.                 }  
  22.             } else {  
  23.                 cell.setColor(COLOR[cellNumber]);  
  24.                 label.setVisible(false);  
  25.                 emptyCellList.push(cell);  
  26.             }  
  27.             numbers += "  " + cellNumber;  
  28.         }  
  29.         cc.log("numbers==" + numbers);  
  30.     }  
  31.   
  32.   
  33.     //score  
  34.     this.scoreLabel.setString("分数:" + this.totalScore);  
  35.   
  36.     if (emptyCellList.length < 1) {  
  37.         //check fail  
  38.         var toast = cc.Toast.create(this.rootNode, "失败!", 2);  
  39.         toast.setColor(cc.c3b(255, 0, 0));  
  40.         this.rootNode.scheduleOnce(function () {  
  41.             cc.BuilderReader.runScene("""MainLayer");  
  42.         }, 2)  
  43.     } else {  
  44.         //create random cell  
  45.         var randomCell = emptyCellList[getRandom(emptyCellList.length)];  
  46.         randomCell.data.number = 1;  
  47.         randomCell.data.numberLabel.setVisible(true);  
  48.         randomCell.data.numberLabel.setString(VERSIONS[this.versionNum].array[1] + "");  
  49.         randomCell.data.numberLabel.setFontSize(this.indexVersion.labelFontSize);  
  50.         randomCell.setColor(COLOR[1]);  
  51.         randomCell.runAction(cc.Sequence.create(cc.ScaleTo.create(0, 0.8), cc.ScaleTo.create(0.5, 1)));  
  52.   
  53.     }  
  54.   
  55. };  


 

4 触摸检测 两个触摸点this.pEnded this.pBegan 根据x y确定方向,再根据距离确定左右和上下;

 

[javascript] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. MainLayer.prototype.onTouchesEnded = function (touches, event) {  
  2.     this.pEnded = touches[0].getLocation();  
  3.     if (this.pBegan) {  
  4.         if (this.pEnded.x - this.pBegan.x > 50) {  
  5.             this.rightCombineNumber();  
  6.         }  
  7.   
  8.         else if (this.pEnded.x - this.pBegan.x < -50) {  
  9.             this.leftCombineNumber();  
  10.         }  
  11.   
  12.         else if (this.pEnded.y - this.pBegan.y > 50) {  
  13.             this.upCombineNumber();  
  14.         }  
  15.   
  16.         else if (this.pEnded.y - this.pBegan.y < -50) {  
  17.             this.downCombineNumber();  
  18.         }  
  19.     }  
  20. };  

思路很清晰简单,游戏却是简约不简单;

 

 

 
cocos2d-x跨平台游戏引擎
 
cocos2d-x是全球知名的游戏引擎 ,引擎在全球范围内拥有众多开发者,涵盖国内外各知名游戏开发商。目前Cocos2d-x引擎已经实现横跨ios、Android、Bada、MeeGo、BlackBerry、Marmalade、Windows、Linux等平台。编写一次,到处运行,分为两个版本 cocos2d-c++和cocos2d-html5 本文使用了后者;
cocos2d-x 官网:http://cocos2d-x.org/
cocos2d-x 资料下载  http://cocos2d-x.org/download

 

 

CocosEditor开发工具:

CocosEditor,它是开发跨平台的手机游戏工具,运行window/mac系统上,javascript脚本语言,基于cocos2d-x跨平台游戏引擎, 集合代码编辑,场景设计,动画制作,字体设计,还有粒子,物理系统,地图等等的,而且调试方便,和实时模拟;

CocosEditor 下载,介绍和教程:http://blog.csdn.net/touchsnow/article/details/19070665

CocosEditor官方博客:http://blog.makeapp.co/

 

 

笔者语:

想了解更多请进入官方博客,最新博客和代码在官方博客首发;请持续关注,还有更多CocosEditor游戏源码即将放出;

联系笔者:zuowen@makeapp.co(邮箱) 扣扣群:232361142

 

附录:

整理各种版本的2048在线玩,狂欢起来吧;

1、2048原始版
http://gabrielecirulli.github.io/2048/
2、2048进阶版(有乘法和继续玩下去的功能)
http://baiqiang.github.io/2048-advanced/
3、2048汉化版1:甲乙丙丁
http://tiansh.github.io/2048/zhong/
4、2048汉化版2:商周秦汉
http://oprilzeng.github.io/2048/
5、2048喵喵版:色弱慎入
http://hczhcz.github.io/2048/20mu/
6、2048丧病版:8*8
http://cyberzhg.github.io/2048/
7、2048flappy版
http://hczhcz.github.io/Flappy-2048/
8、2048六角形版
http://baiqiang.github.io/2048-hexagon/
9、2048cross版
http://baiqiang.github.io/2048-cross/
10、2048double版
http://baiqiang.github.io/2048-double/
11、2048哲学版
http://learn.tsinghua.edu.cn:8080/2013310744/philosopher2048/

12、2048一步登天版
http://jennypeng.me/2048/
13、2048斐波那契数列版
http://mike199515.free3v.com/1597/2.htm
14、2048双人对战版
http://emils.github.io/2048-multiplayer/
15、2048变2版
https://www.prism.gatech.edu/~hli362/
16、2048直线版
http://tiansh.github.io/2048/
17、新增3D版的2048:
http://baiqiang.github.io/2048-3d/
18、2048的一个合集:
http://get2048.com/

分享到:
评论

相关推荐

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

    JDOM解析同名多节点的XML,节点含多个属性。http返回流jdom直接获取流解析源代码

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

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

    c# 加密和解密相关代码

    在第一个GroupBox 中放入3 个TextBox 控件和一个Button 按钮,分别用于输入数字、输入加密数字、显示加 密后的数字和计算加密信息;在第二个GroupBox 中放入一个TextBox 控件和一个Button 按钮,分别用于显示 解密后...

    Java拼图游戏 源代码 (错误资源,请搜索本人另一个同名资源)

    玩手机版拼图游戏感觉挺好,自己写了一个,代码简洁,。通过设置可以更改载入的图片及图片分隔复杂度。设置图片需要输入图片完全限定名。~~抱歉,该资源上传不完整,请搜索本人的另一个同名资源~~

    JSP动态网页制作基础培训教程源代码.rar

    此部分是指文件夹名为第1~9章中的内容(如表1),这些是书中介绍JSP相关知识的源代码。文件的命名规则与书中相应源代码文件名一致。读者可将相关文件夹(如ch2)拷贝到Tomcat服务器安装目录的子目录webapps下,并...

    Java开发技术大全(500个源代码).

    firstApplet.java 第一个用Java开发的Applet小程序。 firstApplet.htm 用来装载Applet的网页文件 第2章 示例描述:本章介绍开发Java的基础语法知识。 accumulationByDoWhile.java 用do~while语句写的累加程序 ...

    嵌入式:韩国LG LS系列PLC解密软件代码

    安装完成后用Kgl_Wc文件替换安装文件夹下的同名文件即可。联机下载后若提示密码输入,可以不予理睬,关闭即可,程序可以照常下载。 本站软件为了防止黄牛们破解后拿去卖钱,所以基本都做了加壳处理,...

    Apple公司Darwin流式服务器源代码分析

    DSS源代码完全采用标准C++语言写成,编程风格非常优秀,每个C++类都对应着一对和类同名的.h/.cpp文件。 但是由于大量采用了面向对象的概念,如继承、多态等等;而且源文件和类相当多,所以不太容易讲清楚。因 此,...

    源代码如下.docx

    (一)课程设计题目 1. 通讯录管理 问题描述 编写一个简单的通讯录管理程序。通讯录记录有姓名,地址(省、市(县)、街道),电话号码,邮政编码等四项。 基本要求 程序应提供的基本管理功能有: (1) 添加:即增加一...

    3ds金手指中文代码29RMB合集.zip

    新款2DS、3DS金手指安装使用简单教程 1.把你的3ds机器里内存卡用读卡器插电脑上 2.把plugin文件夹放到3ds内存卡根目录(不能覆盖复制.如果有相同文件夹必须先删除同名文件夹后在复制) 3.把...

    python满分实验报告:红心大战源代码.rar

    python满分实验报告:红心大战游戏源代码,曾经得了满分的Python游戏报告源码,做Python毕业设计或论文可不要错过,相关的说明:  1.打开游戏:  双击hongxindazhan.py  2.开始红心大战游戏:  键入玩家姓名,...

    《MATLAB 神经网络43个案例分析》 含源代码

    《MATLAB 神经网络43个案例分析》配套北京航空航天大学 王小川 史峰 编著的同名书籍

    清除多余的空格的源代码

    我上传的一个同名工具的源代码。它的功能介绍请参照我上传的该资源。上传代码供大家研究学习,也希望有兴趣的同志们添加一些功能。

    C经典游戏代码大集(含可执行程序)

    包含贪吃蛇,俄罗斯方块,模拟小蜜蜂等经典游戏及其代码 解压后打开像窗口一样的文件,就可以运行程序了. ...它的源代码就在旁边(和窗口文件同名)。 以上都是网络上搜集的经典游戏代码,希望对您的C语言学习有帮助。

    jQuery开发从入门到精通源代码和示例(1-7)

    jQuery开发从入门到精通(袁江)源代码,清华大学出版社 2013年 配套视频可以在B站上搜到(同名视频)

    jQuery开发从入门到精通源代码和示例(8-15)

    jQuery开发从入门到精通(袁江)源代码,清华大学出版社 2013年 配套视频可以在B站上搜到(同名视频)

    C++学生成绩管理系统,2000行完整源代码,超多功能

    (3) 可以将一个文件读入,追加在已有记录之后 (4) 采取文件追加方式时,在没有保存到文件之前,将继续保持文件追加状态,以便实现连续追加操作方式 3. 新建学生信息文件 (1) 用来新建学生信息记录 (2) 如果已经有...

    C++函数库查询辞典—网上同名例子源代码导出做成的PDF

    在网上下载了C++函数库查询辞典,但是一个个的独立的例子,看起来极不方法,所以自己将所有的源代码拷贝出来,做成了 PDF 文件,便于查看。

    java范例开发大全源代码

    第1篇 Java编程基础  第1章 Java开发环境的搭建(教学视频:9分钟) 2  1.1 理解Java 2  1.2 搭建Java所需环境 3  1.2.1 下载JDK 3  1.2.2 安装JDK 4  1.2.3 配置环境 5  1.2.4 测试JDK配置...

    图像特征点提取与同名像点匹配_图像识别_同名点匹配_

    图像特征点提取与同名像点匹配,文档代码。

Global site tag (gtag.js) - Google Analytics