微信朋友圈小游戏打企鹅的技巧 微信朋友圈分享小游戏

转载请注明,原文来自:http://www.seavia.com
微信朋友圈小游戏打企鹅的技巧 微信朋友圈分享小游戏

最近一款简单粗暴的微笑小游戏又来了,打企鹅!其实老实说,这个游戏我小学的时候就在4399上玩过,现在改成了微信版的小手游,通过分享的形式着实是火了一把:鼠标一点就可以把企鹅揍远,最后看距离比谁远。电脑上可以再这里试玩点击前往,不过不能分享到朋友圈就是。下面是我打出来的截图:



我们来看看,决定企鹅飞行成绩的代码部分,虽然我也不是很懂js代码,不过可以通过下面的代码看出一般性的问题了:

Main.flyLine = function(angle){var speedRate = 7;var gRate = 100;var flyBird;var stage = Main.stage;var fps = Main.fps;var startX = 0;var startY = 0;var sWidth = Main.width;var sHeight = Main.height;var flySpeed = Main.speed * (Math.random() * 0.2 + 0.8) * speedRate;var flyRad;function initFlyLine() { // code here. //Main.stage.removeChild(Main.penguin);Main.penguin.alpha = 0;flyRad = angleToRad(angle); var flyData = { images: ["/vapp/52/fly.png"], frames: {width:180, height:170}, animations: {fly:[0,2]}, framerate: 6 }; var spriteSheet = new createjs.SpriteSheet(flyData); flyBird = new createjs.Sprite(spriteSheet, "fly"); flyBird.regX = 105; flyBird.regY = 105; stage.addChild(flyBird); startFly();}var tParam = 0;var g = 9.8 * gRate;function clock(){tParam += 1/fps;moveBird(flySpeed, flyRad);// stage.update();}function stageMove(difDistance, totalDistance){Main.fire("moveStage", difDistance, totalDistance);}var offsetX = Main.penguinOffsetX;var offsetY = Main.height - Main.floorLine + 32;var flyStageDistance = Main.visibleDistance;var fadeCnt = 0;// var hitOffsetY = 100;//鍦板钩绾夸笌鍑绘墦鐨勮窛绂?var hitOffsetY = Main.floorLine - Main.penguin.y - Main.penguinHeight / 2;var tween;function moveBird(speed, rad){var x = speed * Math.cos(rad) * tParam;var y = speed * Math.sin(rad) * tParam - 1/2 * g * square(tParam) + hitOffsetY;//v0*sina-1/2gt2var vy = speed * Math.sin(rad) - g * tParam;var vx = speed * Math.cos(rad);var slope = -g / square(speed) / square(Math.cos(rad)) * x + Math.sin(rad) / Math.cos(rad);flyBird.rotation = slope * angle;var dif = vx * 1/fps;if(x + startX > flyStageDistance){stageMove(dif, x + startX);}else{flyBird.x = sWidth - offsetX - (x + startX);}//circle.x = (x + startX);//circle.y = y;flyBird.y = sHeight - offsetY - y;if(y <= 0 && slope < 0){//resettParam = 0;startX += x;startY = 0;flySpeed = speed * 2.2 / 3;flyRad = rad * 2.2 / 3;fadeCnt ++ ;Main.log(fadeCnt);stopFly();hitOffsetY = 0;Main.log(flyBird.rotation)if(Math.abs(flyBird.rotation) >= 46 && fadeCnt == 1){turnDown(flyBird.x, flyBird.y, "down");stopFly();gameOver(x + startX);return;}if(fadeCnt == 3){//end gamestopFly();var slideTime = Math.cos(rad) * 800;addLongTrace(x, dif, slideTime);}else{tween = createjs.Tween.get(flyBird, {loop:false}).to({rotation:0}, 50, createjs.Ease.bounceOut).call(function(){startFly();createjs.Tween.removeTweens(tween);});addTrace(dif);}}}var longTracer;function addLongTrace(xPass, dif, timeC){longTracer = new createjs.Bitmap(Resource.get("/vapp/52/longtraces.png"));stage.addChild(longTracer);longTracer.width = 452;longTracer.height = 14;longTracer.regX = 452;longTracer.regY = -17;longTracer.x = flyBird.x;longTracer.y = flyBird.y;createjs.Ticker.addEventListener("tick", longTracerClock);function longTracerClock(){longTracer.x += dif;stageMove(dif, xPass + startX + 452);}setTimeout(function(){turnDown(flyBird.x, flyBird.y, "slide");createjs.Ticker.removeEventListener("tick", longTracerClock);gameOver(xPass + startX + 452);}, timeC);var rect = new createjs.Shape(); rect.graphics.setStrokeStyle(5, 'round', 'round'); rect.graphics.beginFill("#FF0000").drawRect(0,0,460, 40); rect.graphics.endStroke();rect.x = 200;rect.y = 790;//stage.addChild(rect);longTracer.mask = rect;}function addTrace(dif){var totalD = 0;var tracer = new createjs.Bitmap(Resource.get("/vapp/52/traces.png"));stage.addChild(tracer);tracer.width = 145;tracer.height = 45;tracer.regX = 92;tracer.regY = -18;tracer.x = flyBird.x;tracer.y = flyBird.y;createjs.Ticker.removeEventListener("tick", tracerClock);createjs.Ticker.addEventListener("tick", tracerClock);function tracerClock(){tracer.x += dif;totalD += dif;if(totalD > sWidth * 2 / 3){Main.log("鍥炴敹鐥曡抗");createjs.Ticker.removeEventListener("tick", tracerClock);stage.removeChild(tracer);}}}function turnDown(fx, fy, status){Main.stage.removeChild(flyBird);var spriteSheet = Main.gameOverPenguinSS;flyBird = new createjs.Sprite(spriteSheet);Main.stage.addChild(flyBird);flyBird.gotoAndPlay(status);flyBird.x = fx - 120;flyBird.y = fy - 112; }function gameOver(distance){//todoMain.fire("gameOver", distance, flyBird.x);}Main.on("replay", function(){// 鍨冨溇鍥炴敹if(longTracer){Main.log("longTracerDisp")stage.removeChild(longTracer);}stage.removeChild(flyBird);flyBird = null;stopFly();});function stopFly(){ createjs.Ticker.removeEventListener("tick", clock);}function startFly(){stopFly();clock();createjs.Ticker.addEventListener("tick", clock);}function angleToRad(angle){return Math.PI / 180 * angle;}//2function square(num){return num * num}initFlyLine(angle);}

我们可以看出大概,企鹅飞行的距离和以下这些因素有关,想详细看的可以展开,想直接看结论的可以朝后看:

1.角度

企鹅飞行的角度决定了速度的分解,设角度为α,速度v:

横向的速度:v*cosα:决定了飞出去有多快;

纵向的速度:v*sinα:决定了能飞多高。

可以根据物理学知识算出来,45°飞的最远,这里就是赘述了。

2.速度

游戏还俨然的定义了g=9.8(23333蛮科学的),纵向速度决定飞多高,而高度又决定了飞行的时间。

横向速度和时间的乘积就是距离。

所以,速度很重要就是了!我们要问这个速度又是怎么决定的呢?请看代码:var flySpeed = Main.speed * (Math.random() * 0.2 + 0.8) * speedRate;

,可知速度完全是个运气活,如果满速度是1,我们能获得的速度是个0.8-1.0之间的平均数!

3.弹起的次数

最后的结果是几次弹起距离之和。

而能弹起几次还是和高度有关。

所以知道了规则后,不难发现这个游戏实际上很科学的,理论上达到以下就可以拿到好成绩了:

1.角度,45°出击。

2.速度,看RP,能达到1.0就是最棒的。

好了,写了这么多大家可以去试一试了!

  

爱华网本文地址 » http://www.aihuau.com/a/25101011/51419.html

更多阅读

怎样打免费的网络电话 被别人拉黑了怎么恢复

怎样打免费的网络电话——简介怎样打免费的网络电话?当网友看到这条标题会不会觉得不可能呢?其实没有这不可能就是有免费的事 那么到底怎么打呢?小编给一些好奇的网友们说一下操作怎样打免费的网络电话——方法/步骤怎样打免费的网络

打羽毛球的好处 经常打羽毛球的坏处

你喜欢打羽毛球吧,但你知道羽球运动的特点和带给你的好处吗?小编根据自身三年来打羽毛球的经验,结合养生保健内涵,特总结以下几点打羽毛球的好处,供羽毛球爱好者们参考。打羽毛球的好处——打羽毛球的好处打羽毛球的好处 1、舒筋活血

怎么用电脑打免费的网络电话? 电脑网络电话免费试用

怎么用电脑打免费的网络电话?——简介有些打电话比较多的朋友们每个月的电话费就很多了,现在网络上有很多打着免费的网络电话的旗号其实都是要充钱的,这里小编就为大家整理了一个真正免费的打电话软件。电脑端和手机端都有的。怎么用

向朋友借钱的技巧 微信借钱功能怎么开通

向朋友借钱的技巧——简介向朋友借钱 很多时候是无可奈何的事情 怎么样才能够提高借钱的成功率?人生在世都有缺钱的时候,如何借钱,借的多借的快以下是一些个人借钱小经验,与大家分享向朋友借钱的技巧——工具/原料脸皮要厚理由要

dnf打王的遗迹技巧 dnf修罗咋打王的遗迹

dnf打王的遗迹技巧——简介 王的遗迹是一个比较有难度的地下城,在地下城副本中没有小怪,每个关卡都有一个boss,等级高的还不见得会安全并且无消耗地闯到波罗丁王; 王的遗迹难度划分应该是普通级、冒险级等、勇士级等、王者级..(进入王的

声明:《微信朋友圈小游戏打企鹅的技巧 微信朋友圈分享小游戏》为网友渔潅頭分享!如侵犯到您的合法权益请联系我们删除