神奇的占卜(HTML版)
神奇的占卜,大概是去年看到,觉得好玩,改写成HTML版的。
发上来充实下自己的blog。
神奇的占卜
代码保存为html文件,在浏览器中直接运行即可。
<style type="text/css">
.table_back{width:320px;height:480px;border:0px}
.floor{border:0px solid gray;font-size:12px;line-height:24px;}
</style>
<div id="NT">神奇的占卜<hr></div>
<script type="text/javascript">
/*
标题:神奇的占卜
设计:宁涛
日期:2010年9月20日
*/
function Prediction(options) {
var self = this;
for (var p in options) this[p] = options[p];
this.parent = this.parent || document.body;
this.rowCount = this.rowCount || 20;
this.colCount = this.colCount || 5;
this.picMax = this.picMax || 20;
this.div_Intro = document.createElement("div");
this.div_Intro.innerHTML =
"玩法:心中默想任意一个两位数,例如:23。 <br>"+
"然后个数与十位相加:2+3=5。 <br>"+
"用这个两位数23减相加的和5,得到23-5=18。 <br>"+
"在页面中找到18对应的图标,记在心中。 <br>"+
"然后点击占卜按钮,见证奇迹的时刻到了。 <br><hr>";
this.parent.appendChild(this.div_Intro);
this.table_back = document.createElement("table");
this.table_back.className = "table_back";
this.table_back.cellPadding = "0px";
this.table_back.cellSpacing = "0px";
this.floors = {};
for (var i = 0; i < this.rowCount; i++) {
var tr = this.table_back.insertRow(-1);
for (var j = 0; j < this.colCount; j++) {
var td = tr.insertCell(-1);
td.className = "floor";
this.floors[[i, j]] = {td: td};
td.innerHTML = " ";
}
}
this.parent.appendChild(this.table_back);
this.button_Predict = document.createElement("input");
this.button_Predict.type = "button";
this.button_Predict.value = "占卜";
this.button_Predict.onclick = function() {
self.Predict();
};
this.parent.appendChild(this.button_Predict);
this.font_Result = document.createElement("font");
this.font_Result.face = "webdings";
this.font_Result.size = "5px";
this.font_Result.style.width = "50px";
var TmpClr = Math.floor(0xFFFFFF / (this.picMax+1)).toString(16);
this.font_Result.color = "000000".substr(TmpClr.length) + TmpClr;
this.font_Result.innerHTML = " ";
this.parent.appendChild(this.font_Result);
this.button_Replay = document.createElement("input");
this.button_Replay.type = "button";
this.button_Replay.value = "刷新";
this.button_Replay.onclick = function() {
self.replay();
};
this.parent.appendChild(this.button_Replay);
this.replay();
}
Prediction.prototype = {
replay: function(){
this.picOffSet = 40 + Math.floor( (120-this.picMax) * Math.random() );
for(var i = 0; i < this.rowCount; i++) {
for(var j = 0; j < this.colCount; j++) {
this.floors[[i, j]].td.innerHTML = this.NewCell((this.rowCount-i-1)+(this.colCount-j-1)*this.rowCount);
}
}
this.font_Result.innerHTML = " ";
},
NewCell: function(cell_index) {
var RandNum = Math.floor(this.picMax * Math.random());
if((0==(cell_index%9)) && (cell_index <90)) RandNum=0;
var TmpClr = Math.floor(0xFFFFFF * (RandNum+1) / (this.picMax+1)).toString(16);
TmpClr = "000000".substr(TmpClr.length) + TmpClr;
var TmpStr = cell_index;
TmpStr += " <font face=\"webdings\" size=\"5px\" color=\"#";
TmpStr += TmpClr
TmpStr += "\">";
TmpStr += String.fromCharCode(this.picOffSet+RandNum);
TmpStr += " <\/font>";
return TmpStr;
},
Predict: function() {
this.font_Result.innerHTML = String.fromCharCode(this.picOffSet);
}
}
function $(id) { return document.getElementById(id); }
new Prediction({parent: $("NT")});
</script>
占卜的原理其实很简单,这里就不揭底了。
浙公网安备 33010602011771号