如何获得“围住神经猫 源码”源码,并在本地运行

《围住神经猫》创下新纪录,一夜间成游戏暴发户-阿里云资讯网
《围住神经猫》创下新纪录,一夜间成游戏暴发户
发布时间: 更新时间: 来源:网络
作者:射手双燕
  2个人,1.5天的时间,在3天内访问量就过亿……这是社交游戏《围住》创下的新纪录。而这一款被专业人士认为十分“简陋”的作品,背后的操盘者两个85后,技术员秦川和美工师卢若晨。但是,这两人只不过是南京一家名为“泥巴怪网络技术公司”的小职员,而这款游戏甚至都没被该公司立项。
  从去年的、魔图,再到今年的、神经猫……借助“秀脸、晒分”,在一夜间就成为了领域的“暴发户”,凭借此赚足了人气。但是,这些“暴发户”在经过几个月或一年的时间之后,追捧者就变得寥寥无几。
   说,站在风口上,猪也能飞起来。社交游戏,就处于这个风口中。
  无心插柳竟一夜成名
  “最初只是为了增加泥巴怪这个的关注度。”神经猫的开发者秦川此前公开说,于是他和美工卢若晨捣腾了一把。这个游戏的灵感来自2007年的一款“黑猫”游戏,形象也是借鉴日本动漫《全是猫》。
  按秦川的说法,这款游戏纯粹是为了“试试手”,什么市场调研、前期准备,统统没有,更没有抱过“大红大紫”的想法。7月22日,《围住神经猫》就尝试性地“上线”了。让秦川没想到的是,24小时后,游戏的用户浏览量就达到1024万,3天时间即过亿。如此耀眼的数据,让秦川和卢若晨可谓有种“被幸运女神眷顾”的感觉。
  这款游戏,原理类似围棋,目标是要把那只插腰扭屁股的白猫,用屏幕最少的圆点围住。有说3步即可围住,记者曾玩过几次,总是被“神经猫”打败,不过这位网友告诉记者:“游戏太脑残了,我玩过两次就不玩了。”也有网友真的停不下来,甚至将“步数”晒到。另一网友说,上周三开始朋友圈就被“猫”刷屏了。
  秦川说,游戏上线之初,只是找了10个身边的朋友试玩,有反馈说难度太高,所以进行了调整,没想到竟获得好评。最让秦川意外的是,谢娜、薛蛮子等大V的加入,让这个游戏在微信朋友圈变得一发不可收拾。
  记者在上看到“围住神经猫”代练业务和源代码二次开发。其中一个,打出“纯手工代练”、“微信1步、2步正常版”的广告语,标价5元一次,而且真有买家出价50元或20元这种服务。另外,有卖家“源码,可付费二次开发”的服务,标价9.9元,7月25日以来有20多笔成交。
  社交游戏从电脑转到移动端
  社交游戏,对很多白领来说,并不陌生。几年前在、玩的“偷菜”、“偷车位”等游戏,曾让诸多白领不惜半夜爬起来,就为了偷朋友地里的一棵“白菜”或一个“桃子”。
  白领的疯狂,对而言,更多也是聚聚人气。玩过数个月或一两年之后,很多人就离开了。一个颇有标志性的事件是:2013年网关闭了的,这意味着PC端偷菜时代的终结。
  在人人网关闭开心农场的时候,微信成为社交平台的重要阵地,一款粗糙的经典旧游戏“打飞机”爆红,吸引一群疯狂,争游戏排名;之后有天天爱消除、……社交游戏基本完成了平台大迁移。
  但即使在,社交游戏要保持很长的生命力几乎很难,“打飞机”的热度大约1、2个月,多数社交游戏的生命周期不超过3个月。
  留不住用户 繁荣就成空
  如果说去年是行业的元年,那么2014年就是手游行业的爆发年。根据市场研究机构Su-perdata最新的数据,2013年已达到112亿,今年预计将达到240亿,按照这种势头,有望明年超过美国,成为全球最大的手游市场。80后、“玩机一族”,造就了手游的繁荣。
  市场显示,今年市场上的手游产品预计高达2000款,但真正能快速脱颖而出的,却没有几个。即便一时爆红,也往往速朽。此前曾有研究表明,当游戏开发者意识到休闲游戏的生命力很短时,为每一款游戏投入的也变得越来越低,有的甚至只有数千元、上万元。为了降低成本,势必缩短游戏的制作周期,从而导致游戏粗糙。这几乎形成了恶性循环。
  另一方面,这些“朋友圈”游戏,其尚难厘清,很多一夜爆红的游戏,开发者往往并没有准备好,等他们真的准备好了,游戏的火爆期又已经过了。因此,如何留住用户、转换用户,将是手游发展中必须考虑的问题。
  [记者手记]
  社交游戏难免“速死”
  □晨报记者 苗夏丽
  社交游戏的“暴发户”,通常是赚了人气不赚钱。相比《捕鱼》、《二战风云》 等手游,那些一夜爆红的小游戏不过是小儿科,看上去风光,要提及赚钱,就只能向后靠了。
  “社交游戏,玩家都是小白领;而很多付费的手游,却是资深玩家,这帮玩家可谓有钱也有闲。”一业内人士说。记者就曾和一个玩家交流,他有一段时间几乎天天下班就打开手机在“二战风云”的游戏里造城,因为不想多付钱,他只能每天保证在线时间,靠拼体力维持“游戏地位”。他说:“排名靠前的基本都是付钱玩的。”
  对很多手游而言,游戏的玩法通常需要玩家的合纵连横,需要团队合作,一个人拖后腿就可能遭遇同伙的打击;有时辛辛苦苦练级造就了的小帝国,却因道具太LOW而无法守住……游戏的这些设计和环节,都有了让玩家充值付费的冲动。
  让人有掏钱冲动的手游,玩的是“深度”,不奢求80%的用户滑动手指,但有20%的用户能贡献收入,让整个团队滋润地走下去,相对也走得更长远。而社交游戏则不同,它走的是病毒的路径,玩的是“广度”,要赚钱,多数只能靠营销、品牌广告等率,在社交平台泛滥过后,就不可避免速死的命运。
  [新闻链接]
  那些游戏 速热速冷
  从去年的疯狂猜图、魔图,到今年的脸萌,社交游戏借助朋友圈分享走红,屡试不爽。而作为者,接下来的路该怎么走?是速生速死还是趁势?这是最大的挑战。
  ■脸萌:
  作者自己都很少玩了
  脸萌,去年11月上线,6个月后用户达到2000万、5天净增用户500万,微信朋友圈到现在仍有很多脸萌头像。脸萌郭列在近日产品家沙龙的一次分享中说:“我们从来没想过,幸福来得这么快。”郭列说,“我只是给大家画一个饼,没想到这个饼被实现了,我自己都很意外,我们一起去撸串、喝酒,很开心。当时一晚上我都没有睡着,但是第二天我回到公司以后,发现我们没有事情干了,就很迷茫,然后我就催大家加班,我们不希望掉下排行榜。”
  郭列的心态变化反映了很多社交游戏“暴发户”的心态变化,他自己也坦承,现在连自己玩脸萌也越来越少了,因为它已经不能让自己兴奋了。郭列说,创业就像爬山,爬到山顶之后,不可能一辈子待在山上,这时就需要下山,要爬另外一个山。
  ■疯狂猜图:
  后续产品无力超越
  去年风靡一时的疯狂猜图,开发团队仅4个人,从去年4月1日开始研发到5月13日推在APP  Store上,其时间用了不到50天。3个月在安卓平台的安装量一度超过4000万。但一年之后,朋友圈玩疯狂猜图的人已寥寥无几。
  昨天,创始人曹晓对记者说:“神经猫抄袭了我们游戏的某一关。公司去年开发了很多类似产品,比如疯狂来找钱、疯狂、疯狂猜词……”不过,后续产品没有一款超越疯狂猜图。
  ■你画我猜:
  创始人走了 室关了
  关于社交游戏,当年最风光的要数《你画我猜》,其开发团队2012年曾被ZYNGA以近2亿美元,交易完成时,这款游戏上线才6周,但吸引了3500万用户,刺激了ZYNGA平台的人气。不过几天后,人气骤降,这笔交易也遭到颇多争议。如今《你画我猜》的创始人已离开,ZYN-GA也在财报中透露连续遭遇损失,《你画我猜》的工作室去年9月底已正式关闭。
文化部日前在京宣布,近期将部署开展第22批违法违规互联网文化活动查处工作,此次查处重点涉及两方面内容:一是手机游戏平台提供的游戏产品,二是网络动漫网站提供的动漫产品。 百度应用、360手游网等11家手游平台将查 据文化部文化市场司副司长刘强介绍,文化部日前开展了第22批违法违规互联网文化活动查处工作,对提供含有宣扬色情、赌博,违背社会公德等违法违...
国行版Xbox One在正式开售后虽然销量上还难以达到预期,但总算上阔别行货主机市场多年的中国玩家了了一桩心愿。与此同时,微软的老对手索尼也在逐步布局着行货PS4入华的大业。 就在今天,@电玩巴士 官方微博爆料称,SCE已经确认将于下周四下午5点在上海举行“PlayStation中国发布会”,而国行版PS4以及PSV的发售计划也将在会上同期公...
国家新闻出版广电总局近日表示,目前正在起草《关于规范移动网络游戏出版审批管理的通知》,拟缩减移动网络游戏的审批程序。业内人士表示,此次审批程序改进,将在一定程度上吸引更多的资本流入游戏市场,刺激移动网络游戏市场的发展。 政策利好:采用简易审批 据了解,该《通知》将争取在12月底前下发实施,拟对不涉及民族、宗教、历史、政治、疆域等内容,无故事情节或...
作为一个属于宅和二次元文化的国家,很多人认为日本应该是游戏玩家的天堂,然而事实并非你想象的那么美好。当前的日本游戏零售业正处于危难之中,业内人士表示,再这么继续发展下去,不出5年,在日本街头就看不到游戏商店了。 根据Kotaku的报道,一位名叫奥修(Osho)的日本零售业业内人士表示,在亚马逊等网络商店和数字版游戏的双重打击下,日本街头的游戏商店正在逐渐消失。
1、别了游戏:盛大频抛资产背后的衰落曲线 11月27日,盛大游戏发布公告称,盛大互动娱乐集团将其目前所持有的18%的股权,一部分出售给中绒圣达投资控股(香港)有限公司,另一部分出售给亿利盛达投资控股(香港)有限公司。此次交易,两家接盘公司均获得 股B类普通股。至此,盛大互动娱乐集团已经不再持有任何盛大游戏股份。而持续增持的宁夏中银绒业集团(中绒圣达的...
在玩家心目中EA历来是最令人讨厌的游戏出版商,不过近日的一系列错误导致知名游戏厂商育碧将从EA头上接过这个头衔。同今年大部分游戏出版商相同,育碧发布了大场面的游戏,但并未达到玩家预期,其中尤以《刺客信条》和《看门狗》表现的最为明显。育碧的公关团队在游戏发售之前通过禁止媒体公开评测,也不提前发送游戏拷贝,直到玩家购买之后才能看到相关的游戏评测。游戏 围住神经猫 (微信版) v1.0
游戏 围住神经猫 (微信版) v1.0源码简介:
最近微信疯传的围住神经猫小游戏,可在微信平台运作。
下载地址:
解压密码:www.jb51.net 就是本站主域名,希望大家看清楚。
推荐使用 [
] 下载,使用 [
] 以上版本解压本站源码。
如果这个源码总是不能下载的请在评论中留言,我们会尽快修复,谢谢!
下载本站资源,如果服务器暂不能下载请过一段时间重试!
如果遇到什么问题,请评论留言,我们定会解决问题,谢谢大家支持!
本站提供的一些商业源码是供学习研究之用,如用于商业用途,请购买正版。
本站提供的游戏 围住神经猫 (微信版) v1.0资源来源互联网,版权归该下载资源的合法拥有者所有。
不知如何下载的,可以查看您所在的位置: &
用Cocos2d-JS制作类神经猫的游戏《你是我的小羊驼》
用Cocos2d-JS制作类神经猫的游戏《你是我的小羊驼》
Cocos引擎中文站
一夜之间,微信上一款叫《围住神经猫》的小游戏火了。它的玩法很简单,用最少的步数把一只神经兮兮的猫围死。 7月22号上线以来,3天、500万用户和1亿访问,想必各位程序猿都按耐不住了,想实现自己的神经猫游戏。
一夜之间,微信上一款叫《围住神经猫》的小游戏火了。它的玩法很简单,用最少的步数把一只神经兮兮的猫围死。 7月22号上线以来,3天、500万用户和1亿访问,想必各位程序猿都按耐不住了,想实现自己的神经猫游戏。
在这篇教程里,我会教大家如何用Cocos2d-JS来实现一个神经猫这样的游戏。 让我们先看下游戏最后完成了的效果图:
你可能注意到了,神经猫换成了可爱的小羊驼:)
在线游戏地址:
源码地址:
三个界面基本上就是整个游戏的全部内容:
1.左边的是主界面,展示游戏名称以及主角,让玩家对游戏的整体画风有个大概的印象。
2.中间的是游戏界面,点击空格防止橙色六边形砖块来围堵小羊驼。
3.右边的是游戏成功或失败的界面。
整个游戏的主逻辑都在游戏界面中完成。
玩法是这样:
1.游戏初始化开始,小羊驼始终是站在地图中间,在地图的其他区域随机生产一些位置随机的砖块。
2.玩家点击一个空白区域,放置一个砖块来围堵羊驼。
3.羊驼AI寻路移动一步。
4.循环2和3,直到羊驼被围堵在一个圈里面(游戏成功),或羊驼到达地图边界(游戏失败)
整个游戏的思路理清楚了,接下来我们开始进入编码阶段。
开发环境与新建项目
本教程开发基于当前最新的. &(其他版本下载地址:)
下载引擎并解压到磁盘的某个目录。
打开控制台,输入下面的命令来新建项目。
$cd&cocos2d-js-v3.0-rc1/tools/cocos2d-console/bin&$./cocos&new&-l&js&--no-native&$cd&MyJSGame/&$../cocos&run&-p&web&
环境搭建并不是这篇文章的重点,更详细的信息可以参考:《》
主界面实现
游戏的入口代码在main.js中,用编辑器打开并修改为下面的代码。
cc.game.onStart&=&function(){&&&&&&&&&&cc.view.adjustViewPort(true);&&&&&&&&&&&&if&(cc.sys.isMobile)&&&&&&&&&cc.view.setDesignResolutionSize(320,500,cc.ResolutionPolicy.FIXED_WIDTH);&&&&&else&cc.view.setDesignResolutionSize(320,480,cc.ResolutionPolicy.SHOW_ALL);&&&&&cc.view.resizeWithBrowserSize(true);&&&&&&&&&&&&cc.LoaderScene.preload(resources,&function&()&{&&&&&&&&&&&&&&&&&&gameScene&=&new&GameScene();&&&&&&&&&cc.director.runScene(gameScene);&&&&&},&this);&};&&&cc.game.run();&
关键点解析如下:
1.设置浏览器meta来适配屏幕,引擎内部会根据屏幕大小来设置meta的viewport值,会达到更好的屏幕适配效果。
2.针对手机浏览器和PC浏览器启用不同的分辨率适配策略。
3.预加载图片声音等资源。 cc.LoaderScene.preload会生成一个&加载中
x%&的界面,等待资源加载结束后,调用第二个参数传入的匿名函数。
对于基于html的游戏,页面是放在服务器端供浏览器下载的,为了获得流畅的用户体验,cc.LoaderScene.preload让浏览器先把远程服 务器的资源缓存到本地。需要预加载的资源定义在src/Resources.js文件中。
4.启动游戏的第一个场景。
主界面的由两个层实现:
1.GameLayer层,游戏主逻辑层,在未初始化地图矩阵时,它只显示背景地图。
2.StartUI层,显示logo图片和开始游戏按钮。
GameScene的初始化代码如下:
var&GameScene&=&cc.Scene.extend({&&&&&onEnter&:&function&()&{&&&&&&&&&this._super();&&&&&&&&&&&var&bg&=&new&cc.Sprite(res.bg);&&&&&&&&&bg.attr({&&&&&&&&&&&&&anchorX&:&0.5,&&&&&&&&&&&&&anchorY&:&0.5,&&&&&&&&&&&&&x&:&cc.winSize.width/2,&&&&&&&&&&&&&y&:&cc.winSize.height/2&&&&&&&&&});&&&&&&&&&this.addChild(bg);&&&&&&&&&&&layers.game&=&new&GameLayer();&&&&&&&&&this.addChild(layers.game);&&&&&&&&&&&layers.startUI&=&new&StartUI();&&&&&&&&&this.addChild(layers.startUI);&&&&&&&&&&&layers.winUI&=&new&ResultUI(true);&&&&&&&&&layers.loseUI&=&new&ResultUI(false);&&&&&&&&&layers.shareUI&=&new&ShareUI();&&&&&}&});&
由引擎提供的cc.Scene.extend方法,让js能实现高级面向对象语言的继承特性。 onEnter方法是场景初始化完成即将展示的消息回调,在onEnter中必须调用this._super();来确保Scene被正确的初始化。
整个游戏的设计只有一个scene,界面之间的切换由layer来实现,这可能不是一个最优的设计,但也提供另一种思路。 为了用layer来实现切换,全局变量layers存储了各层的一个实例。
GameLayer我们在下一章节中详细讲解。
StartUI的实现如下:
var&StartUI&=&cc.Layer.extend({&&&&&ctor&:&function&()&{&&&&&&&&&this._super();&&&&&&&&&&&var&start&=&new&cc.Sprite(res.start);&&&&&&&&&start.x&=&cc.winSize.width/2;&&&&&&&&&start.y&=&cc.winSize.height/2&+&20;&&&&&&&&&this.addChild(start);&&&&&},&&&&&onEnter&:&function&()&{&&&&&&&&&this._super();&&&&&&&&&&&cc.eventManager.addListener({&&&&&&&&&&&&&event:&cc.EventListener.TOUCH_ALL_AT_ONCE,&&&&&&&&&&&&&onTouchesEnded:&function&(touches,&event)&{&&&&&&&&&&&&&&&&&var&touch&=&touches[0];&&&&&&&&&&&&&&&&&var&pos&=&touch.getLocation();&&&&&&&&&&&&&&&&&if&(pos.y&&&cc.winSize.height/3)&{&&&&&&&&&&&&&&&&&&&&&layers.game.initGame();&&&&&&&&&&&&&&&&&&&&&layers.startUI.removeFromParent();&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&}&&&&&&&&&},&this);&&&&&}&});&
cc.Layer.extend作用同cc.Scene.extend一样,只不过是一个扩展Scene,一个扩展Layer。ctor是Cocos2d-JS中的构造函数,在ctor中必须调用this._super();以确保正确的初始化。
在onEnter中,我们为StartUI层绑定事件监听,判断触摸点的位置坐标来触发scene切换。
细心的读者可能要问,为什么不用Menu控件? 当前的Cocos2d-JS版本已实现模块化,可以选择只加载游戏中用到的模块,已减少最终打包size。 为了不加入Menu模块,这里使用了最简单的触摸点坐标判断来实现通用的事情。
游戏界面的实现
橙色块的初始化
游戏地图区域是由9*9的六边形方块组成的,首先用InActive的图片初始化一边矩阵。相关代码如下:
var&ox&=&x&=&y&=&0,&odd&=&false,&block,&tex&=&this.batch.&for&(var&r&=&0;&r&&&ROW;&r++)&{&&&&&y&=&BLOCK_YREGION&*&r;&&&&&ox&=&odd&*&OFFSET_ODD;&&&&&for&(var&c&=&0;&c&&&COL;&c++)&{&&&&&&&&&x&=&ox&+&BLOCK_XREGION&*&c;&&&&&&&&&block&=&new&cc.Sprite(tex,&BLOCK2_RECT);&&&&&&&&&block.attr({&&&&&&&&&&&&&anchorX&:&0,&&&&&&&&&&&&&anchorY&:&0,&&&&&&&&&&&&&x&:&x,&&&&&&&&&&&&&y&:&y,&&&&&&&&&&&&&width&:&BLOCK_W,&&&&&&&&&&&&&height&:&BLOCK_H&&&&&&&&&});&&&&&&&&&this.batch.addChild(block);&&&&&}&&&&&odd&=&!&}&
每次循环odd改变,已实现上下错位的排布。 attr是Node基类的新方法,可以方便的一次性设置多个属性。
橙色方块的初始化是由initGame函数来完成。 先来看initGame的实现:
initGame&:&function()&{&&&&&if&(this.inited)&return;&&&&&&&this.player_c&=&this.player_r&=&4;&&&&&this.step&=&0;&&&&&&&&&&&&for&(var&i&=&0,&l&=&this.active_nodes.&i&&&l;&i++)&{&&&&&&&&&this.active_nodes[i].removeFromParent();&&&&&}&&&&&this.active_nodes&=&[];&&&&&for&(var&r&=&0;&r&&&ROW;&r++)&{&&&&&&&&&for&(var&c&=&0;&c&&&COL;&c++)&{&&&&&&&&&&&&&this.active_blocks[r][c]&=&false;&&&&&&&&&}&&&&&}&&&&&&&&&&&&this.randomBlocks();&&&&&&&&&&&&this.player.attr({&&&&&&&&&anchorX&:&0.5,&&&&&&&&&anchorY&:&0,&&&&&&&&&x&:&OFFSET_X&+&BLOCK_XREGION&*&this.player_c&+&BLOCK_W/2,&&&&&&&&&y&:&OFFSET_Y&+&BLOCK_YREGION&*&this.player_r&-&5&&&&&});&&&&&this.player.stopAllActions();&&&&&this.player.runAction(this.moving_action);&&&&&&&this.inited&=&true;&},&
要点解析如下:
1.为了方便逻辑处理,这里用了active_nodes和active_blocks来记录被激活的方块。在初始化矩阵前,需要清理上一次游戏已生成的橙色方块。active_nodes存储精灵实例,active_blocks记录精灵的矩阵坐标。
2.randomBlocks函数生成随机橙色砖块。 首先产生一个7-20的随机数,也就是确定橙色块的数量。然后循环确定每一个块的位置坐标,当然位置坐标也是随机确定的。
3.复位小羊驼的位置以及动画。
响应触摸事件
按照我们之前的分析,游戏界面初始化完成后,需要等待用户指令才能进行下一步的游戏。
相关代码如下:
&cc.eventManager.addListener({&&&&&&&&&&event:&cc.EventListener.TOUCH_ALL_AT_ONCE,&&&&&&&&&&onTouchesBegan:&function&(touches,&event)&{&&&&&&&&&var&touch&=&touches[0];&&&&&&&&&var&pos&=&touch.getLocation();&&&&&&&&&var&target&=&event.getCurrentTarget();&&&&&&&&&if&(!target.inited)&return;&&&&&&&&&&&pos.y&-=&OFFSET_Y;&&&&&&&&&var&r&=&Math.floor(pos.y&/&BLOCK_YREGION);&&&&&&&&&pos.x&-=&OFFSET_X&+&(r%2==1)&*&OFFSET_ODD;&&&&&&&&&var&c&=&Math.floor(pos.x&/&BLOCK_XREGION);&&&&&&&&&if&(c&&=&0&&&&r&&=&0&&&&c&&&COL&&&&r&&&ROW)&{&&&&&&&&&&&&&if&(target.activateBlock(r,&c))&{&&&&&&&&&&&&&&&&&target.step&++;&&&&&&&&&&&&&&&&&target.movePlayer();&&&&&&&&&&&&&}&&&&&&&&&}&&&&&}&},&this);&
1. cc.eventManager.addListener加入新的事件监听。
2. 设置事件监听模式为TOUCH_ALL_AT_ONCE。
3. 重写onTouchesBegan方法,判断触摸点的坐标,确定是哪个块被点击,并做响应的处理。 activateBlock方法在对应的矩阵位置加入橙色块,并更新状态数组。然后调用movePlayer移动小羊驼。
羊驼的移动
整个逻辑的关键是AI.js中的getDistance函数,
getDistance有6个参数:
1.羊驼所在行号
2.羊驼所在列号
3.前进方向,l_choices、r_choices、t_choices或b_choices
4.激活块的记录数组
5.辅助记录表,记录在寻路算法中某个节点是不是已经被访问过。
6.最短路径
返回值有三种情况:
1.羊驼到达地图边界,返回羊驼坐标和最短路径0
2.羊驼还在地图中,返回羊驼的下一个坐标值和最短路径cost
3. -1表示羊驼被圈住了,但可能可以移动。
getDistance的代码实现如下:
var&getDistance&=&function&(r,&c,&dir_choices,&activate_blocs,&passed,&cost)&{&&&&&passed[r][c]&=&true;&&&&&if&(r&&=&0&||&r&&=&ROW_MINUS_1&||&c&&=&0&||&c&&=&COL_MINUS_1)&{&&&&&&&&&return&[r,&c,&cost];&&&&&}&&&&&&&var&odd&=&(r&%&2&==&1)&?&1&:&0;&&&&&var&choices&=&dir_choices[odd];&&&&&&&var&nextr,&nextc,&&&&&&for&(var&i&=&0,&l&=&choices.&i&&&l;&i++)&{&&&&&&&&&nextr&=&r&+&choices[i][0];&&&&&&&&&nextc&=&c&+&choices[i][4];&&&&&&&&&&&if&(!activate_blocs[nextr][nextc]&&&&!passed[nextr][nextc])&{&&&&&&&&&&&&&cost&++;&&&&&&&&&&&&&result&=&getDistance(nextr,&nextc,&dir_choices,&activate_blocs,&passed,&cost);&&&&&&&&&&&&&if&(result&!=&-1)&{&&&&&&&&&&&&&&&&&result[0]&=&&&&&&&&&&&&&&&&&&result[1]&=&&&&&&&&&&&&&&&&&&return&&&&&&&&&&&&&&}&&&&&&&&&}&&&&&}&&&&&return&-1;&};&
在羊驼移动函数movePlayer中,首先通过getDistance来判断上下左右4个方向,来寻找最佳移动方向。根据getDistance的返回结果做相应的逻辑处理。
游戏结束界面
游戏结束的两种情况,玩家胜利或失败。
在ResultUI的构造函数中,加入参数win,用来标识是否胜利。而胜利和失败仅仅是显示文字的区别,下方的两个按钮均一样。
在ctor中,根据是否胜利加载不同的图片来显示:
ctor&:&function&(win)&{&&&&&&this._super();&&&&&&&&this.win&=&&&&&&&if&(win)&{&&&&&&&&&&this.winPanel&=&new&cc.Sprite(res.succeed);&&&&&&&&&&this.winPanel.x&=&cc.winSize.width/2;&&&&&&&&&&this.winPanel.anchorY&=&0.2;&&&&&&&&&&this.winPanel.y&=&cc.winSize.height/2;&&&&&&&&&&this.addChild(this.winPanel);&&&&&&}&&&&&&else&{&&&&&&&&&&this.losePanel&=&new&cc.Sprite(res.failed);&&&&&&&&&&this.losePanel.x&=&cc.winSize.width/2;&&&&&&&&&&this.losePanel.anchorY&=&0.2;&&&&&&&&&&this.losePanel.y&=&cc.winSize.height/2;&&&&&&&&&&this.addChild(this.losePanel);&&&&&&}&&}&
在onEnter中,根据是否胜利加载不同的文字描述:
if&(this.win)&{&&&&&this.winPanel.removeAllChildren();&&&&&&&var&w&=&this.winPanel.width,&h&=&this.winPanel.&&&&&var&label&=&new&cc.LabelTTF(&继续刷屏!\n&+step+&步推倒我的小羊驼\n打败&+percent+&%朋友圈的人!\n你能超过我吗?&,&&宋体&,&20);&&&&&label.x&=&w/2;&&&&&label.y&=&h/4;&&&&&label.textAlign&=&cc.LabelTTF.TEXT_ALIGNMENT_CENTER;&&&&&&&&&&label.width&=&w;&&&&&label.color&=&cc.color(0,&0,&0);&&&&&this.winPanel.addChild(label);&}&else&{&&&&&this.losePanel.removeAllChildren();&&&&&var&w&=&this.losePanel.width,&h&=&this.losePanel.&&&&&label&=&new&cc.LabelTTF(&我滴小羊驼呀它又跑掉了\nT_T&快帮我抓回来!&,&&宋体&,&20);&&&&&label.x&=&w/2;&&&&&label.y&=&h/4+5;&&&&&label.textAlign&=&cc.LabelTTF.TEXT_ALIGNMENT_CENTER;&&&&&&&&&&label.width&=&w;&&&&&label.color&=&cc.color(0,&0,&0);&&&&&this.losePanel.addChild(label,&10);&}&
&通知好友&按钮加载shareUI层,这个层其实是一个帮助指导界面,指示用户点击微信右上角的分享按钮进行分享。
gameScene.addChild(layers.shareUI,&100);&target.win&?&share(1,&step,&percent)&:&share(2);&
&再来一次&实现很简单,调用initGame重新初始化矩阵,并移除ResultUI层。
layers.game.initGame();&target.win&?&layers.winUI.removeFromParent()&:&layers.loseUI.removeFromParent();&
分享指导界面
在游戏结束界面我们加入了分享按钮。现在我们就来实现分享界面。
分享界面由分享图标和分享说明组成。这和前面的layer创建一样。很简单,唯一的区别是,分享界面是cc.LayerColor(cc.LayerColor支持设置层的颜色)的子类。下面是实现代码:
ctor:&function&()&{&&&&&this._super(cc.color(0,&0,&0,&188),&cc.winSize.width,&cc.winSize.height);&&&&&&&var&arrow&=&new&cc.Sprite(res.arrow);&&&&&arrow.anchorX&=&1;&&&&&arrow.anchorY&=&1;&&&&&arrow.x&=&cc.winSize.width&-&15;&&&&&arrow.y&=&cc.winSize.height&-&5;&&&&&this.addChild(arrow);&&&&&&&var&label&=&new&cc.LabelTTF(&请点击右上角的菜单按钮\n再点\&分享到朋友圈\&\n让好友们挑战你的分数!&,&&宋体&,&20,&cc.size(cc.winSize.width*0.7,&250),&cc.TEXT_ALIGNMENT_CENTER);&&&&&label.x&=&cc.winSize.width/2;&&&&&label.y&=&cc.winSize.height&-&100;&&&&&label.anchorY&=&1;&&&&&this.addChild(label);&},&
加入touch事件用于移除分享界面:
onEnter:&function&()&{&&&&&this._super();&&&&&cc.eventManager.addListener({&&&&&&&&&event:&cc.EventListener.TOUCH_ONE_BY_ONE,&&&&&&&&&onTouchBegan:&function&(touch,&event)&{&&&&&&&&&&&&&layers.shareUI.removeFromParent();&&&&&&&&&}&&&&&},&this);&}&
我们需要的功能:
1.分享到微信朋友圈
2.分享给微信好友
3.分享到腾讯微博
4.关注指定用户
本功能已经有大神提供了完整的库,地址是: ,以下我们做一个简单的使用分析。
注:除特殊说明外,本小节实现均在文件 WeixinApi.js中。
现在我们实现的分享有,发给指定朋友,分享到朋友圈,分享到腾讯微博。对于不同的分享方式,实现方式大同小异,我们主要以分享到朋友圈为例。
我们分享的时候需要的数据有:appid,图片,链接,标题,文字内容,例如:
对应在代码中就需要以下数据:
&appid&:theData.appId&?&theData.appId&:&'',&&img_url&:theData.imgUrl,&&link&:theData.link,&&desc&:theData.desc,&&title&:theData.title,&&
为了得到数据,我们需要在GameScene.js中实现ResultUI的时候,将以上数据生成出来。 比如胜利时,我们需要显示:
var&label&=&new&cc.LabelTTF(&继续刷屏!\n&+step+&步推倒我的小羊驼\n打败&+percent+&%朋友圈的人!\n你能超过我吗?&,&&宋体&,&20);&
完成数据后,我们需要判断胜利或失败,并传回ui中显示:
target.win&?&share(1,&step,&percent)&:&share(2);&
为了监测分享的状态,无论分享成功与否我们回调都会上报状态,以便程序处理,我们需要的状态有:
1.用户取消分享
2.分享失败
3.分享成功 所以我们需要以下实现:
WeixinJSBridge.on('menu:share:timeline',&function&(argv)&{&&&&&if&(callbacks.async&&&&callbacks.ready)&{&&&&&&&&&window[&_wx_loadedCb_&]&=&callbacks.dataLoaded&||&new&Function();&&&&&&&&&if(window[&_wx_loadedCb_&].toString().indexOf(&_wx_loadedCb_&)&&&0)&{&&&&&&&&&&&&&window[&_wx_loadedCb_&]&=&new&Function();&&&&&&&&&}&&&&&&&&&callbacks.dataLoaded&=&function&(newData)&{&&&&&&&&&&&&&window[&_wx_loadedCb_&](newData);&&&&&&&&&&&&&shareTimeline(newData);&&&&&&&&&};&&&&&&&&&&&&&&&&&&callbacks.ready&&&&callbacks.ready(argv);&&&&&}&else&{&&&&&&&&&&&&&&&&&&callbacks.ready&&&&callbacks.ready(argv);&&&&&&&&&shareTimeline(data);&&&&&}&});&
WeixinJSBridge
在微信上,通过公众平台推送给用户的文章,是在微信内部直接打开的,用的无外乎就是一个UIWebView控件(IOS上,Android上也 差不多)。但特殊的是,微信官方在这里面加了一个默认的Js API--WeixinJSBridge,通过它,能直接在该页面上做分享操作。
以下代码,拿去玩吧:
WeixinJSBridge.on('menu:share:timeline',&function&(argv)&{&&&&&if&(callbacks.async&&&&callbacks.ready)&{&&&&&&&&&window[&_wx_loadedCb_&]&=&callbacks.dataLoaded&||&new&Function();&&&&&&&&&if(window[&_wx_loadedCb_&].toString().indexOf(&_wx_loadedCb_&)&&&0)&{&&&&&&&&&&&&&window[&_wx_loadedCb_&]&=&new&Function();&&&&&&&&&}&&&&&&&&&callbacks.dataLoaded&=&function&(newData)&{&&&&&&&&&&&&&window[&_wx_loadedCb_&](newData);&&&&&&&&&&&&&shareTimeline(newData);&&&&&&&&&};&&&&&&&&&&&&&&&&&&callbacks.ready&&&&callbacks.ready(argv);&&&&&}&else&{&&&&&&&&&&&&&&&&&&callbacks.ready&&&&callbacks.ready(argv);&&&&&&&&&shareTimeline(data);&&&&&}&});&
最后,赶紧写点诱惑的东东,让用户分享出去吧,这是微信病毒传播的乐趣!
你可以在这里获取本教程的全部 & 。【编辑推荐】【责任编辑: TEL:(010)】
关于&&&&的更多文章
一款《Flappy Bird》捧红了越南开发者阮哈东,引来无数关注。小
既然强大的Android Studio来了,有什么理由不去用呢?
讲师: 24人学习过讲师: 68人学习过讲师: 133人学习过
日-6日,GMIC 北京 2014全球移动互联网大会
日-6日,GMIC 北京 2014全球移动互联网大会
日-6日,GMIC 北京 2014全球移动互联网大会
本书共分两篇,15章。其中前6章为网络理论基础篇,介绍的是基本的网络技术,包括计算机网络分类、网络通信协议、IP地址和网线制
Windows Phone专家
Android开发专家
51CTO旗下网站

我要回帖

更多关于 围住神经猫html5 源码 的文章

 

随机推荐