【编程游戏】贺岁放礼花。(点燃续帖1-172楼yonghengdexingxing的焰火)

<script type="text/javascript"> function viewPage(html) { var page = window.open('', '', ''); page.opener = null; page.document.write(html); page.document.close(); } </script> 【编程游戏】贺岁放礼花。(第一名奖励10000可用分)
作者: avatar
点燃[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行] <iframe src="http://vote.youkuaiyun.com/VotePostSimple.aspx?voteid=855" marginheight="0" marginwidth="0" scrolling="no" width="100%" frameborder="0" height="400"></iframe> <html> <head> <style type="text/css"> body{ background:#000000; } .FireWork{ height:3px; width:3px; overflow:hidden; } </style> <script type="text/javascript"> //Position Class //======================================== function Position(x,y){ this.X = x; this.Y = y; } //Velocity Class //======================================== function Velocity(vx,vy){ this.Vx = vx; this.Vy = vy; } //FallingBody Class //======================================== function FallingBody(color,initPosition,initVelocity,initTime,lifeSpan,domNode,explodable){ this.InitPosition = initPosition; this.InitVelocity = initVelocity; this.InitTime = initTime; this.LifeSpan = lifeSpan; this.DomNode = domNode; this.Explodable = explodable; this.Color = color; } FallingBody.prototype.Show = function(){ var interval = Environment.Clock - this.InitTime; if(interval < 0) return true; if(this.LifeSpan <= interval){ if(this.Explodable) this.Explode(250,0.4); this.Dispose(); return false; } var x = Math.ceil(this.InitPosition.X + this.InitVelocity.Vx * interval); var y = Math.ceil(this.InitPosition.Y + this.InitVelocity.Vy * interval - Environment.Gravity * interval * interval / 2.0 ); if(!this.Explodable) this.DomNode.style.filter = "alpha(opacity=" + (1-interval/this.LifeSpan)*100 + ")"; this.DomNode.style.display = "block"; this.DomNode.style.left = x; this.DomNode.style.top = y; return true; } FallingBody.prototype.Dispose = function(){ this.InitPosition = null; this.InitVelocity = null; this.InitTime = null; this.LifeSpan = null; Environment.Screen.removeChild(this.DomNode); this.DomNode = null; } FallingBody.prototype.Explode = function(velocity,timeSpan){ var interval = Environment.Clock - this.InitTime; var vx = this.InitVelocity.Vx; var vy = this.InitVelocity.Vy - Environment.Gravity * interval; var x = Math.ceil(this.InitPosition.X + this.InitVelocity.Vx * interval); var y = Math.ceil(this.InitPosition.Y + this.InitVelocity.Vy * interval - Environment.Gravity * interval * interval / 2.0 ); for(var i=0;i<25;i++){ var angle = Math.random()*360; Environment.AddFireWork(this.Color,new Position(x,y),new Velocity(vx+velocity*Math.cos(angle),vy+velocity*Math.sin(angle)),Environment.Clock,timeSpan,false); } } //Init Envirment //======================================== var Environment = new Object(); Environment.Colors = ["#ff0000","#00ff00","#000aff","#ff00ff","#ffa500","#ffff00","#00ff00","#ffffff","#fffff0","#ffa500","#55ff66","#ac9dfc","#fff000","#fffff0"]; Environment.AddFireWork = function(color,initPosition,initVelocity,initTime,lifeSpan,explodable){ var div = document.createElement("div"); div.style.position = "absolute"; div.style.display = "none"; Environment.Screen.appendChild(div); div.className = "FireWork"; div.style.background = color; var fallingBody = new FallingBody(color,initPosition,initVelocity,initTime,lifeSpan,div,explodable); Environment.FireWorkArray.push(fallingBody); } Environment.ClockTick = function(){ Environment.Clock += Environment.Interval/1000.0; for(var i=Environment.FireWorkArray.length;i>0;i--){ if(!Environment.FireWorkArray[i-1].Show()) Environment.FireWorkArray.splice(i-1,1); } if(Environment.FireWorkArray.length>0) setTimeout(Environment.ClockTick,Environment.Interval); else{ Environment.Generate(); setTimeout(Environment.ClockTick,Environment.Interval); } } Environment.Generate = function(){ //Environment.AddFireWork(Environment.Colors[Math.floor(Math.random()*Environment.Colors.length)],new Position(300+600*Math.random(),600),new Velocity(100,-330),Environment.Clock,1+Math.random()*0.3,true); //Environment.AddFireWork(Environment.Colors[Math.floor(Math.random()*Environment.Colors.length)],new Position(300+600*Math.random(),600),new Velocity(0,-300),Environment.Clock,1+Math.random()*0.3,true); for(var k=0;k<3;k++) Environment.AddFireWork(Environment.Colors[Math.floor(Math.random()*Environment.Colors.length)],new Position(300+2*Math.random(),600),new Velocity(20*Math.random(),-360+100*Math.random()),Environment.Clock,1-Math.random()*0.3,true); for(var k=0;k<3;k++) Environment.AddFireWork(Environment.Colors[Math.floor(Math.random()*Environment.Colors.length)],new Position(600+2*Math.random(),600),new Velocity(20*Math.random(),-360+100*Math.random()),Environment.Clock,1-Math.random()*0.3,true); } window.onload = function(){ Environment.Gravity = -10.0; Environment.Clock = 0.0; Environment.Interval = 10; // 0.1 Seconds Environment.Screen = document.getElementsByTagName("body")[0]; Environment.FireWorkArray = new Array(); Environment.Generate(); setTimeout(Environment.ClockTick,Environment.Interval); } </script> </head> <body> </body> </html>
点燃[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值