您的位置:首页 > 编程语言

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

2008-12-29 16:35 429 查看
function viewPage(html) {
var page = window.open('', '', '');
page.opener = null;
page.document.write(html);
page.document.close();
}

【编程游戏】贺岁放礼花。(第一名奖励10000可用分)
作者:


点燃 [Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

<html>
<head>
<title>【编程游戏】贺岁放礼花。</title>
</head>
<body bgcolor="#000000" text="#FFFFFF">
<p id="idInsertObject"></p>
</body>
<script type="text/javascript">
function rgb(b, g, r) {
return "#" +
("00" + Math.floor(r).toString(16)).replace(/^.*(/w{2}$)/g, "$1") +
("00" + Math.floor(g).toString(16)).replace(/^.*(/w{2}$)/g, "$1") +
("00" + Math.floor(b).toString(16)).replace(/^.*(/w{2}$)/g, "$1");
}
function $(id){ return document.getElementById(id); }

var pubOrbits_X = new Array(16 * 256);
var pubOrbits_Y = new Array(16 * 256);
var pubStepOn = 0;
var pubStepOnB = 0;
var pubSpanObjects = new Array(16 * 16);
var pubColors = new Array(16 * 16);
var pubWorkOn = 0;
var pubX = 0;
var pubY = 0;
var pubScale = 1;
var pubTime = 0;

window.onload = function () {
CreateObjects();
CreateColors();
CreateOrbits();
NewSkyrocket();
ShowSkyrocket();
}

function NewSkyrocket() {
pubX = Math.floor(Math.random() * 640);
pubY = Math.floor(Math.random() * 100) + 480;
pubScale = Math.random() * 1 + 1;
pubStepOn = 21;
pubStepOnB = 21;
pubTime = setTimeout("ShowSkyrocket();", 1);
}

function ShowSkyrocket() {
if (pubStepOn > 1) pubStepOn = pubStepOn - 1;
pubStepOnB = pubStepOnB - (pubStepOnB > 1 ? 1 : 0.1);
pubY = pubY - (pubStepOnB * pubScale);
if (pubWorkOn < 256) {
pubWorkOn = pubWorkOn + pubStepOn;
ViewObjects(pubScale, pubWorkOn, pubX, pubY);
pubTime = window.setTimeout("ShowSkyrocket();", 1);
} else {
pubWorkOn = 0;
ViewObjects(pubScale, pubWorkOn, pubX, pubY);
NewSkyrocket();
}
}

function ViewObjects(pScale, pIndex, pX, pY) {
if (pIndex < 256 && pIndex > 15) {
for (var tIndexA = 0; tIndexA <= 15; tIndexA++) {
for (var tIndexB = 0; tIndexB <= 14; tIndexB++) {
with (pubSpanObjects[tIndexA * 16 + tIndexB].style) {
top = pubSpanObjects[tIndexA * 16 + tIndexB + 1].style.top;
left = pubSpanObjects[tIndexA * 16 + tIndexB + 1].style.left;
}
}
with (pubSpanObjects[tIndexA * 16 + 15].style) {
top = pubOrbits_Y[tIndexA * 256 + pIndex] * pScale + pY + "px";
left = pubOrbits_X[tIndexA * 256 + pIndex] * pScale + pX + "px";
}
for (var tIndexB = 0; tIndexB <= 15; tIndexB++) {
with(pubSpanObjects[tIndexA * 16 + tIndexB].style) {
color = pubColors[tIndexA * 16 + tIndexB];
}
}
}
}
}

function CreateObjects() {
for (var tIndexA = 0; tIndexA <= 15; tIndexA++) {
for (var tIndexB = 0; tIndexB <= 15; tIndexB++) {
pubSpanObjects[tIndexA * 16 + tIndexB] = document.createElement("SPAN");
with (pubSpanObjects[tIndexA * 16 + tIndexB]) {
innerHTML = "."
}
with (pubSpanObjects[tIndexA * 16 + tIndexB].style) {
position = "absolute";
color = rgb(0, 0, 0);
}
$("idInsertObject").appendChild(pubSpanObjects[tIndexA * 16 + tIndexB]);
}
}
}

function CreateColors() {
var tColor = {};
for (var tColorIndex = 0; tColorIndex <= 15; tColorIndex++) {
tColor[0] = Math.random();
tColor[1] = Math.random();
tColor[2] = Math.random();
tColor[Math.floor(Math.random() * 3)] = 1;
tLightLen = Math.floor(Math.random() * 50) + 50;
for (var tLightIndex = 0; tLightIndex <= 15; tLightIndex++) {
var tLightValue = tLightIndex * 255 / 15
pubColors[tColorIndex * 16 + tLightIndex] = rgb(tColor[0] * tLightValue, tColor[1] * tLightValue, tColor[2] * tLightValue);
}
}
}

function CreateOrbits() {
for (var tOrbitsIndex = 0; tOrbitsIndex <= 15; tOrbitsIndex++) {
var tAxis_R = Math.floor(Math.random() * 50) + 50;
var tAxis_XY = Math.floor(Math.random() * 360);
var tAxis_YZ = Math.floor(Math.random() * 360);
var tAxis_ZX = Math.floor(Math.random() * 360);
for (var tLightIndex = 0; tLightIndex <= 255; tLightIndex++) {
tAxis_ZX = tAxis_ZX + 2;
var result = {};
GetOrbits(result, tAxis_XY, tAxis_YZ, tAxis_ZX, tAxis_R * tLightIndex / 255);
pubOrbits_X[tOrbitsIndex * 256 + tLightIndex] = result.tOrbits_X;
pubOrbits_Y[tOrbitsIndex * 256 + tLightIndex] = result.tOrbits_Y;
}
}
}

function GetOrbits(output, pAxis_XY, pAxis_YZ, pAxis_ZX, pAxis_R) {
output.tAxis_XY = RadianGetByAngle(pAxis_XY);
output.tAxis_YZ = RadianGetByAngle(pAxis_YZ);
output.tAxis_ZX = RadianGetByAngle(pAxis_ZX);
output.tOrbits_X = pAxis_R * Math.cos(output.tAxis_XY) * Math.cos(output.tAxis_ZX);
output.tOrbits_Y = pAxis_R * Math.sin(output.tAxis_XY) * Math.sin(output.tAxis_YZ);
}

function RadianGetByAngle(pAngle) {
return pAngle * Math.PI / 180;
}
</script>
</html>

点燃 [Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐