三国杀开源系列之一104@365
(此文原在新浪博客上发的,但是新浪博客的插入代码实在是不友好,忍无可忍的情况下,又回到csdn上重新写一遍。)
一直想写一系列的系列教程,这么多年挖了很多大坑一直没有填(坑都在小本本上记着,欠下的债迟早都要还),现在准备开始慢慢填坑了。三国杀是其中一个坑,刚毕业那会儿,在csdn上写过一个太阳神开源三国杀的编译教程,用的是QT C++的框架,后来也自己写过几个武将、装备、锦囊啥的,再后来太阳神三国杀论坛关闭了,那会儿下载的好多半成品的开源工程,包括水浒杀、英雄杀、闯关杀等等,现在电脑里依然保存着这些代码,大多数还都能编译通过。后来太阳神官方版的源代码不再更新了,三国杀online更新了一个又一个版本,这两个版本之间也没有了同步,直到最近在水浒杀的qq群里,发现了无名杀。
无名杀是基于html+js+css,核心代码使用js实现的,目前仍与三国杀online保持同步更新,而且还出了很多有趣的扩展模式,比如塔防、战旗、炉石、斗地主等等,更为重要的是,QQ群里保持高度的活跃。于是,准备先拿这个源代码进行练手,开始我三国杀开源系列的教程编写。
无名杀的源代码下载地址:https://github.com/libccy/noname.git
无名杀扩展包的源代码下载地址:https://github.com/libccy/noname-extension.git
在开始研究主体源代码前,先以写扩展包为基础,农村包围城市,慢慢一点一点的剥洋葱。QQ群里有数以百计扩展包,我选取英雄杀为标的进行制作,原因很简单,英雄杀有官方的参照,更重要的是有资源,省却了美工、配音等一系列的工作。但初步来开,无名杀的扩展能力仍然没有太阳神那样灵活。anyway,不管白猫黑猫,能抓住老鼠就是好猫。
无名杀比太阳神还有一个地方就是,没有现成的文档可参阅(太阳神三国杀光api都有好多人整理,至于如如何写武将、技能、装备、锦囊等卡牌的教程那就更多了),只能靠查看之前的代码慢慢摸索了。
PS:这些教程是我自学的一个记录,所以很多不理解的地方,我会先把坑留着(又是坑!!!)回头会再补。
---------忧伤的分割线(以上是废话)---------
无名杀的扩展包,有以下文件组成:
1、代码文件:只需要一个extension.js即可2、资源文件:图片、配音等,放在同级目录之下即可。
首先,看下extension.js文件的构成。
1、整个文件有一个函数构成,这个函数有两个参数,一个字符串和一个函数
game.import()game.import("extension",function(lib,game,ui,get,ai,_status){})
2、字符串“extension”是固定不变的,重点看这个function函数,如下:
输入参数共6个:lib,game,ui,get,ai,_status返回值长度为8的数组:name="xx",content:function (config,pack){},precontent:function (){},help:{},config:{},package:{},editable:false,files:{}
整个形式如下:
game.import("extension",function(lib,game,ui,get,ai,_status){return {name:"",content:function (config,pack){},precontent:function (){},help:{},config:{},package:{},editable:false,files:{}}
})
3、现在开始逐个讲解返回数组的每个参数之name和content:function
name='xhero', //扩展包的名字,我起名x英雄杀
//content:function (config,pack){},可留空,可以根据不同的配置文件加载不同内容,可以自定义翻译、音乐播放、图片特效等等内容,其他作用暂时还没吃透,等后面用得到的时候再讲。本扩展包,当前版本暂时只用到翻译功能(君、臣、民、魂),内容如下:
content:function (config,pack){lib.group.push('min');lib.translate.min='<span style="color:#00EC00">民</span>';lib.translate.minColor='wood';lib.group.push('chen');lib.translate.chen='<span style="color:#0072E3">臣</span>';lib.translate.chenColor='water';lib.group.push('jun');lib.translate.jun='<span style="color:#FF8000">君</span>';lib.translate.junColor='gold';lib.group.push('hun');lib.translate.hun='<span style="color:#FF0000">魂</span>';lib.translate.hunColor='fire';
},
(明天要去体检,今天就先写到这儿吧。)
三国杀开源系列之一104@365相关推荐
- 三国杀开源系列之三106@365
昨天已经成功的新建了第一个扩展英雄和第一个技能,但是看了下代码,虽然大部分都能猜的出来是什么意思,但是没有api实在是让人很痛苦.今天先把第一个技能解读写出来,然后下一步不准备再写新技能了,先理一下整 ...
- 三国杀开源系列之四-工程目录分析107@365
整个工程的根目录如下: 文件(夹) 说明 .eslintrc.json ESLint(js代码错误检测)的配置文件 .gitignore git版本管理工具生成的文件(请无视) audio 各种配音文 ...
- 三国杀开源系列之二105@365
(此文原在新浪博客上发的,但是新浪博客的插入代码实在是不友好,忍无可忍的情况下,又回到csdn上重新写一遍.) 今天,加班搞的比较晚,在公司了也是经历了很多事.希望自己越来越好.继续写noname的教 ...
- 【115@365】三国杀开源系列之七-game.js解读之lib.init.init
通过上期的解读,我们发现,程序的疑似入口可能是有5万多行代码的game.js(因为自动加载的程序里,update.js.config.js.package.js都只有一个全局环境变量,所以排除掉),而 ...
- 【122@365】三国杀开源系列之八-game.js解读之lib.init.init(比较乱,附首页的html)
上周好忙,一直没空写东西.今天五一,昨天和朋友们玩儿到凌晨4点多,6点多又醒来,睡意消退,刷了一会儿手机,决定起来继续看看noname的代码吧,不出一个阶段性成果,心里总是不踏实. 上次解读到疑似程序 ...
- 三国杀开源系列之九-vscode调试electron
好久没填这个系列的坑了,最近有朋友问,所以就更一篇.主要内容是写vscode调试electron的方法. 这个noname的三国杀框架用js写的,没有任何参考文档,调试梳理代码非常麻烦.最开始使用了s ...
- 【开源系列】三国演义LBS (三)源码:基础库
前言: ----------------------------------------------- 本随笔介绍了接下来开源的路线图,包含了基础库.核心框架一.核心框架二.游戏服务器+前端四部分. ...
- iPhone开源系列:iDev Recipes
在iPhone项目开发的过程中,重新造轮子的事情屡见不鲜,一方面源于开发者的"自我"心态,但更多的是因为对开发项目的不了解.希望通过这样一个系列和大家一起发现和挖掘项目 ...
- 适合初学者的安卓开源项目_开源系列的初学者将从下周开始
适合初学者的安卓开源项目 下周,Opensource.com将开始发布有关"从入门到开源"的系列文章. 这一系列文章将作为一种资源存在 ,任何人都可以随时访问以了解更多关于在任何位 ...
最新文章
- 10次相遇我才知道什么是成熟的爱--转
- antd 给input设置值_Antd 中 Input 组件默认值的显示
- 通过6个简单的步骤在Windows上运行Apache Hive
- MFC之CAsyncSocket详解
- java可以看懂php代码吗_PHP笔记——java程序员看懂PHP程序
- web前端开发技术现状与发展_Web前端开发的未来,将会有哪些发展方向?
- win10 Anaconda 安装教程
- 新Attention | NAM,一种新的注意力计算方式,无需额外的参数
- Python写视图界面--pyqt的使用
- ecshop getRow getAll getOne 返回值的区别
- 华为ensp 和secureCRT 连接
- ArcGIS Pro 中检查尖锐角步骤
- 自然辩证法与计算机科学的关系,自然辩证法和科学技术有什么关系
- MFS分布式文件系统
- 线性代数笔记(矩阵)
- 数据结构 - 逻辑结构和存储结构
- 将一张图片的人物融入另一张图片中
- 解决VMware Workstation 与 Hyper-V 不兼容。请先从系统中移除 Hyper-V 角色,然后再运行 VMware Workstation。
- 绝地大逃杀官方指定迅游加速
- 微机原理与接口技术(第6版)第六章习题1、3、10、13
热门文章
- 打包安卓apk后的V1和V2签名
- RuoYi-Vue 分离版 收获与总结
- LS-WXL/E改机应用流程全攻略(改机+下载工具安装)
- 什么是站群以及站群的排名原理和作用解答
- Qt5学习之路及嵌入式开发教程1:信号槽例子
- 跑赢新趋势 | 未来3-5年,运维人的机会在哪里?
- java中compare语句的用法,java.(compareTo的用法),关于Compare的用法
- html显示隐藏内容点击显示数据表代码,js如何实现点击显示和隐藏表格
- python多元线性回归实例_利用Python进行数据分析之多元线性回归案例
- 不高兴的津津【NOIP2004普及组第1题】