commit 2a2337042fe41c5b65e3528a60760308eb187067 Author: daxi20 Date: Tue Oct 21 10:38:28 2025 +0000 Back up the tudoudilei site diff --git a/.htaccess b/.htaccess new file mode 100755 index 0000000..0519ecb --- /dev/null +++ b/.htaccess @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/.user.ini b/.user.ini new file mode 100644 index 0000000..459fa01 --- /dev/null +++ b/.user.ini @@ -0,0 +1 @@ +open_basedir=/www/wwwroot/tudoudilei.tgc.icu/:/tmp/ \ No newline at end of file diff --git a/404.html b/404.html new file mode 100755 index 0000000..99ff94f --- /dev/null +++ b/404.html @@ -0,0 +1,26 @@ + + + + + + +404 + + + + +

404,您请求的文件不存在!

+ + diff --git a/index.php b/index.php new file mode 100755 index 0000000..fdb1bf7 --- /dev/null +++ b/index.php @@ -0,0 +1,96 @@ + + + + + + 土豆地雷 + + + +

我将会用尽全部力气,来保护土豆地雷

+

哪怕与全世界为敌,我也会坚定地和你在一块

+
+ 土豆地雷 +
+
+
+





+
扫雷 +
土豆地雷,脑袋缺弦 +
----老舍 1931.03.16 +
已经和土豆地雷相恋 + + + diff --git a/old/v1.php b/old/v1.php new file mode 100755 index 0000000..b99811d --- /dev/null +++ b/old/v1.php @@ -0,0 +1,27 @@ + +

我将会用尽全部力气,来保护土豆地雷

+

哪怕与全世界为敌,我也会坚定地和你在一块

+ + + +
土豆地雷,脑袋缺弦 +
----老舍 1931.03.16 +
已经和土豆地雷相恋 \ No newline at end of file diff --git a/old/v2.php b/old/v2.php new file mode 100755 index 0000000..fdb1bf7 --- /dev/null +++ b/old/v2.php @@ -0,0 +1,96 @@ + + + + + + 土豆地雷 + + + +

我将会用尽全部力气,来保护土豆地雷

+

哪怕与全世界为敌,我也会坚定地和你在一块

+
+ 土豆地雷 +
+
+
+





+
扫雷 +
土豆地雷,脑袋缺弦 +
----老舍 1931.03.16 +
已经和土豆地雷相恋 + + + diff --git a/saolei/.idea/.gitignore b/saolei/.idea/.gitignore new file mode 100755 index 0000000..a7cdac7 --- /dev/null +++ b/saolei/.idea/.gitignore @@ -0,0 +1,8 @@ +# 默认忽略的文件 +/shelf/ +/workspace.xml +# 基于编辑器的 HTTP 客户端请求 +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/saolei/.idea/Minesweeper-master.iml b/saolei/.idea/Minesweeper-master.iml new file mode 100755 index 0000000..bf4c9d3 --- /dev/null +++ b/saolei/.idea/Minesweeper-master.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/saolei/.idea/modules.xml b/saolei/.idea/modules.xml new file mode 100755 index 0000000..1b9a20b --- /dev/null +++ b/saolei/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/saolei/.idea/php.xml b/saolei/.idea/php.xml new file mode 100755 index 0000000..000a3ea --- /dev/null +++ b/saolei/.idea/php.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/saolei/README.md b/saolei/README.md new file mode 100755 index 0000000..8f1a6b9 --- /dev/null +++ b/saolei/README.md @@ -0,0 +1,6 @@ +# 功能实现 + + - 游戏难度选择(初级、中级、高级) + - 游戏时间记录 + - 显示剩余雷数 + - 双击或鼠标滑轮键智能探测 diff --git a/saolei/index.html b/saolei/index.html new file mode 100755 index 0000000..0513c21 --- /dev/null +++ b/saolei/index.html @@ -0,0 +1,963 @@ + + + + + MineClearance + + + + + +
+
+

扫 雷

+ +
+
+

⚔ 选择难度 ⚔

+ + + +
+
+ 0 +

⌛ 游戏时间 ⌛

+
+
+

☢ 剩余雷数 ☢

+ +
+

游戏胜利

+

游戏失败

+

+ ⌚时间: + +

+
+ + +
+
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
+
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
+
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
+
+ + + + + + + + + diff --git a/saolei/mineClearance.css b/saolei/mineClearance.css new file mode 100755 index 0000000..ac2aed2 --- /dev/null +++ b/saolei/mineClearance.css @@ -0,0 +1,281 @@ +* { + margin: 0; + padding: 0; + cursor: url(mine_img/mouse.ico),pointer; +} +ul,li { + list-style: none; +} +.mc_wrapper { + position: relative; + width: 800px; + height: 700px; + margin: 100px auto; + /*border: 1px dotted black;*/ + overflow: hidden; +} +#mc_start { + position: absolute; + width: 400px; + height: 300px; + left: 50%; + margin-left: -200px; + top: 50%; + margin-top: -150px; +} +#mc_start h1 { + height: 100px; + text-align: center; + font-size: 50px; + font-weight: bold; + line-height: 100px; +} +#mc_start .btn_start { + display: block; + width: 300px; + height: 80px; + font-size: 30px; + margin: 50px auto; +} +#mc_level { + position: absolute; + opacity: 0; + width: 400px; + height: 400px; + left: 50%; + margin-left: -200px; + top: 1000px; + margin-top: -200px; +} +#mc_level h2 { + height: 100px; + font-weight: bold; + text-align: center; + font-size: 30px; + line-height: 100px; + margin-bottom: 20px; +} +#mc_level button { + display: block; + width: 300px; + height: 60px; + font-size: 25px; + margin: 0 auto 30px; +} +button:hover { + color: dodgerblue; + font-weight: bold; +} +.mc_wrapper #mc_pri_game,#mc_mid_game,#mc_exp_game { + position: absolute; + left: 50%; + border:1px black solid; + bottom: -400px; +} +.mc_wrapper #mc_pri_game { + margin-left: -100px; + width: 198px; + height: 198px; +} +.mc_wrapper #mc_mid_game { + margin-left: -176px; + width: 352px; + height: 352px; +} +.mc_wrapper #mc_exp_game { + margin-left: -331px; + width: 660px; + height: 352px; +} +.mc_wrapper .mc_row { + float: left; + height: 20px; + margin-bottom: 2px; +} +.mc_wrapper #mc_pri_game .mc_row { + width: 198px; +} +.mc_wrapper #mc_mid_game .mc_row { + width: 352px; +} +.mc_wrapper #mc_exp_game .mc_row { + width: 660px; +} +.mc_wrapper .white,.mc_row .mc_cell,.mc_cell_light, +.number1,.number2,.number3,.number4,.number5,.number6,.number7,.number8, +.number1_wrong,.number2_wrong,.number3_wrong,.number4_wrong,.number5_wrong,.number6_wrong,.number7_wrong,.number8_wrong, +.bomb,.bomb_wrong,.bomb0,.flag,.flag_light,.mark,.mark_light + { + float: left; + width: 20px; + height: 20px; + border: 1px black solid; +} +.mc_wrapper .mc_row .mc_cell { + background-image: url("mine_img/s.jpg"); +} +.mc_wrapper .mc_row .mc_cell_light { + background-image: url("mine_img/s_light0.jpg"); +} +.mc_wrapper .mc_row .white { + background-color: #fff; +} +.mc_wrapper .mc_row .number1 { + background-image: url("mine_img/1.jpg"); +} +.mc_wrapper .mc_row .number1_wrong { + background-image: url("mine_img/1_wrong.gif"); +} +.mc_wrapper .mc_row .number2 { + background-image: url("mine_img/2.jpg"); +} +.mc_wrapper .mc_row .number2_wrong { + background-image: url("mine_img/2_wrong.gif"); +} +.mc_wrapper .mc_row .number3 { + background-image: url("mine_img/3.jpg"); +} +.mc_wrapper .mc_row .number3_wrong { + background-image: url("mine_img/3_wrong.gif"); +} +.mc_wrapper .mc_row .number4 { + background-image: url("mine_img/4.jpg"); +} +.mc_wrapper .mc_row .number4_wrong { + background-image: url("mine_img/4_wrong.gif"); +} +.mc_wrapper .mc_row .number5 { + background-image: url("mine_img/5.jpg"); +} +.mc_wrapper .mc_row .number5_wrong { + background-image: url("mine_img/5_wrong.gif"); +} +.mc_wrapper .mc_row .number6 { + background-image: url("mine_img/6.jpg"); +} +.mc_wrapper .mc_row .number6_wrong { + background-image: url("mine_img/6_wrong.gif"); +} +.mc_wrapper .mc_row .number7 { + background-image: url("mine_img/7.jpg"); +} +.mc_wrapper .mc_row .number7_wrong { + background-image: url("mine_img/7_wrong.gif"); +} +.mc_wrapper .mc_row .number8 { + background-image: url("mine_img/8.jpg"); +} +.mc_wrapper .mc_row .number8_wrong { + background-image: url("mine_img/8_wrong.gif"); +} +.mc_wrapper .mc_row .bomb { + background-image: url("mine_img/bomb.jpg"); +} +.mc_wrapper .mc_row .bomb_wrong { + background-image: url("mine_img/bomb_w.jpg"); +} +.mc_wrapper .mc_row .bomb0 { + background-image: url("mine_img/bomb0.jpg"); +} +.mc_wrapper .mc_row .flag { + background-image: url("mine_img/flag.jpg"); +} +.mc_wrapper .mc_row .flag_light { + background-image: url("mine_img/flag_light0.jpg"); +} +.mc_wrapper .mc_row .mark { + background-image: url("mine_img/mark.jpg"); +} +.mc_wrapper .mc_row .mark_light { + background-image: url("mine_img/mark_light0.jpg"); +} +.mc_wrapper #mc_game_time,#mc_game_mine { + position: absolute; + left: 50%; + margin-left: -100px; + width: 200px; + height: 160px; + text-align: center; + line-height: 80px; + font-size: 30px; +} +.mc_wrapper #mc_game_time { + top: -160px; +} +.mc_wrapper #mc_game_time p { + width: 200px; + height: 80px; +} +.mc_wrapper #mc_game_time span { + display: block; + width: 200px; + height: 80px; +} +.mc_wrapper #mc_game_mine { + bottom: -160px; +} +.mc_wrapper #mc_game_mine p { + width: 200px; + height: 80px; +} +.mc_wrapper #mc_game_mine span { + display: block; + width: 200px; + height: 80px; +} +.mc_wrapper h4 { + position: absolute; + width: 300px; + height: 100px; + top: -500px; + left: 50%; + margin-left: -150px; + font-size: 50px; + line-height: 100px; + text-align: center; + font-weight: bold; +} +.mc_wrapper #mc_gameover_win { + color: gold; +} +.mc_wrapper #mc_gameover_lose { + color: darkred; +} +.mc_wrapper #mc_gameover_time { + position: absolute; + width: 150px; + height: 50px; + font-size: 20px; + line-height: 50px; + left: 50%; + margin-top: 100px; + margin-left: -75px; + top: -400px; +} +.mc_wrapper #mc_gameover_time span { + display: inline-block; + position: absolute; + height: 50px; + text-align: center; +} +.mc_wrapper #mc_gameover_time .mc_go_t1 { + width: 70px; +} +.mc_wrapper #mc_gameover_time .mc_go_t2 { + width: 80px; + right: 0; +} +.mc_wrapper #mc_gameover_choose { + position: absolute; + bottom: -400px; + width: 300px; + height: 160px; + left: 50%; + margin-left: -150px; +} +.mc_wrapper #mc_gameover_choose button { + width: 200px; + height: 50px; + margin: 20px 50px 0; + font-size: 20px; +} \ No newline at end of file diff --git a/saolei/mineClearance.js b/saolei/mineClearance.js new file mode 100755 index 0000000..ee35d0f --- /dev/null +++ b/saolei/mineClearance.js @@ -0,0 +1,694 @@ +/* + * author: payen S.Tsung 丛培森 + * date:2016.09 + * blog:http://blog.csdn.net/q1056843325 + */ + +(function (global) { + var srcPath = 'mine_img'; + var srcArr = [ + '0.jpg', + '1.jpg','2.jpg','3.jpg','4.jpg', + '5.jpg','6.jpg','7.jpg','8.jpg', + '1_w.jpg','2_w.jpg','3_w.jpg','4_w.jpg', + '5_w.jpg','6_w.jpg','7_w.jpg','8_w.jpg', + '1_wrong.gif','2_wrong.gif','3_wrong.gif','4_wrong.gif', + '5_wrong.gif','6_wrong.gif','7_wrong.gif','8_wrong.gif', + 's.jpg','s_light.jpg','s_light0.jpg', + 'bomb.jpg','bomb0.jpg','bomb_w.jpg', + 'flag.jpg','flag_light.jpg','flag_light0.jpg', + 'mark.jpg','mark_light.jpg','mark_light0.jpg', + ]; + var $mcStart = document.getElementById('mc_start'), + $mcLevel = document.getElementById('mc_level'), + $btnCollection = document.getElementsByTagName('button'), + $btnStart = $btnCollection[0], + $btnPri = $btnCollection[1], + $btnMid = $btnCollection[2], + $btnExp = $btnCollection[3], + $gameTime = document.getElementById('mc_game_time'), + $gameMine = document.getElementById('mc_game_mine'), + $priGame = document.getElementById('mc_pri_game'), + $midGame = document.getElementById('mc_mid_game'), + $expGame = document.getElementById('mc_exp_game'), + $win = document.getElementById('mc_gameover_win'), + $lose = document.getElementById('mc_gameover_lose'), + $overTime = document.getElementById('mc_gameover_time'), + $overChoose = document.getElementById('mc_gameover_choose'), + $replay = document.getElementById('mc_replay'), + $reselect = document.getElementById('mc_reselect'), + upExPos = { + 'top': '-400px', + 'opacity': '0' + }, + downExPos = { + 'bottom': '-400px', + 'opacity': '0' + }, + upPos = { + 'top': '0', + 'opacity': '1' + }, + downPos = { + 'bottom': '0', + 'opacity': '1' + }, + midPos = { + 'top': '350px', + 'opacity': '1' + }, + priLevelPos = { + 'bottom': '252px', + 'opacity': '1' + }, + highLevelPos = { + 'bottom': '173px', + 'opacity': '1' + }, + iRowNum, + iLineNum, + iMineNum, + iGridNum, + timeStart, + timeEnd, + msgArr, + mineArr, + curGameLevel, + iDigNum, + bGameOver; + + + + //资源预加载函数 + var preloadingSrc = (function(){ + var loadedNum = 0; + return function(srcPath, srcArr){ + var imgs = []; + var toLoadNum = srcArr.length; + for(var i = 0; i < toLoadNum; i++){ + imgs[i] = new Image(); + imgs[i].src = srcPath + '/' + srcArr[i]; + imgs[i].onload = function(){ + loadedNum++; + if(toLoadNum === loadedNum){ + console.log('全部图片资源加载完毕'); + } + } + } + } + })(); + preloadingSrc(srcPath, srcArr); + + //方格信息构造函数 + function MsgObj(x, y) { + this.x = x; + this.y = y; + this.isDigged = false; + this.isFlagged = false; + this.isMarked = false; + this.isMine = false; + this.figure = 0; + this.bCheck = false; + } + //初始化雷数组函数 + function initMineArr(mineArray, iMineNum, iGridNum) { + while (true) { + if (mineArray.length === iMineNum) { + mineArray = mineArray.unique(); + if (mineArray.length === iMineNum) { + break; + } + } + mineArray.push(Math.floor(Math.random() * iGridNum)); + } + mineArr = mineArray; + //console.log(mineArr); + } + //初始化方格信息数组函数 + function initMsgArr(msgArr, mineArr, iRowNum, iLineNum) { + //console.log(mineArr); + var x, y; + for (var i = 0; i < iRowNum; i++) { + msgArr[i] = []; + for (var j = 0; j < iLineNum; j++) { + msgArr[i][j] = new MsgObj(i, j); + } + } + for (var k = 0, mlen = mineArr.length; k < mlen; k++) { + x = parseInt(mineArr[k] / iLineNum); + y = mineArr[k] % iLineNum; + msgArr[x][y].isMine = true; + } + } + //初始化数字函数 + function initFigure(msgArr, iRowNum, iLineNum) { + var iCount, + arr; + for (var i = 0; i < iRowNum; i++) { + for (var j = 0; j < iLineNum; j++) { + iCount = 0; + arr = roundArray(i, j, iRowNum, iLineNum); + if (!msgArr[i][j].isMine) { + for (var k = 0, len = arr.length; k < len; k++) { + if (msgArr[arr[k].x][arr[k].y].isMine) { + iCount++; + } + } + } + msgArr[i][j].figure = iCount; + } + } + } + //周围方格数组函数 + function roundArray(x, y, iRowNum, iLineNum) { + function Coord(x, y) { + this.x = x; + this.y = y; + } + var roundArr = []; + roundArr.push(new Coord(x, y)); + if (x - 1 >= 0) { + roundArr.push(new Coord(x - 1, y)); + if (y - 1 >= 0) { + roundArr.push(new Coord(x - 1, y - 1)); + } + } + if (x + 1 <= iRowNum - 1) { + roundArr.push(new Coord(x + 1, y)); + if (y + 1 <= iLineNum - 1) { + roundArr.push(new Coord(x + 1, y + 1)); + } + } + if (y - 1 >= 0) { + roundArr.push(new Coord(x, y - 1)); + if (x + 1 <= iRowNum - 1) { + roundArr.push(new Coord(x + 1, y - 1)); + } + } + if (y + 1 <= iLineNum - 1) { + roundArr.push(new Coord(x, y + 1)); + if (x - 1 >= 0) { + roundArr.push(new Coord(x - 1, y + 1)); + } + } + return roundArr; + } + //触发事件方格的坐标函数 + function coordOfGrid(ele) { + var parNode = ele.parentNode; + return { + x: parNode.eleIndex(), + y: ele.eleIndex() + } + } + //插入数字背景图片函数 + function addFigureImg(ele, num) { + switch (num) { + case 1: + ele.className = "number1"; + break; + case 2: + ele.className = "number2"; + break; + case 3: + ele.className = "number3"; + break; + case 4: + ele.className = "number4"; + break; + case 5: + ele.className = "number5"; + break; + case 6: + ele.className = "number6"; + break; + case 7: + ele.className = "number7"; + break; + case 8: + ele.className = "number8"; + break; + } + } + //插入数字错误背景动图函数 + function addFalseFigureImg(ele, num) { + switch (num) { + case 1: + ele.className = "number1_wrong"; + break; + case 2: + ele.className = "number2_wrong"; + break; + case 3: + ele.className = "number3_wrong"; + break; + case 4: + ele.className = "number4_wrong"; + break; + case 5: + ele.className = "number5_wrong"; + break; + case 6: + ele.className = "number6_wrong"; + break; + case 7: + ele.className = "number7_wrong"; + break; + case 8: + ele.className = "number8_wrong"; + break; + } + } + //检查游戏胜利函数 + function digJudge(gameLevel, msgArr, iRowNum, iLineNum) { + iDigNum++; + //console.log(iDigNum,iRowNum*iLineNum - iDigNum); + var curGridEle; + if (iDigNum === iGridNum - iMineNum) { + for (var i = 0; i < iRowNum; i++) { + for (var j = 0; j < iLineNum; j++) { + curGridEle = gameLevel.children[i].children[j]; + if (!msgArr[i][j].isDigged && !msgArr[i][j].isFlagged) { + msgArr[i][j].isDigged = true; + if (msgArr[i][j].isMine) { + curGridEle.className = "flag"; + msgArr[i][j].isFlagged = true; + } else if (msgArr[i][j].figure != 0) { + addFigureImg(curGridEle, msgArr[i][j].figure); + } else { + curGridEle.className = "white"; + } + } + } + } + gameOver(true); + } + } + //挖开方块函数 + function digGrid(gameLevel, msgArr, x, y) { + if (msgArr[x][y].isDigged || msgArr[x][y].isFlagged) { + return; + } + var index = msgArr[x][y].figure, + curGridEle = gameLevel.children[x].children[y]; + if (index !== 0) { + addFigureImg(curGridEle, index); + } else { + curGridEle.className = "white"; + } + msgArr[x][y].isDigged = true; + digJudge(gameLevel, msgArr, iRowNum, iLineNum); + } + //挖开方块周围边界至有数字方块函数 + function digAmibientGrid(gameLevel, msgArr, x, y, iRowNum, iLineNum) { + msgArr[x][y].bCheck = true; + var arr = roundArray(x, y, iRowNum, iLineNum).slice(1), + curGridMsg; + for (var i = 0, len = arr.length; i < len; i++) { + digGrid(gameLevel, msgArr, arr[i].x, arr[i].y); + curGridMsg = msgArr[arr[i].x][arr[i].y]; + if (!curGridMsg.isFlagged && !curGridMsg.bCheck && curGridMsg.figure === 0) { + digAmibientGrid(gameLevel, msgArr, arr[i].x, arr[i].y, iRowNum, iLineNum); + } + } + } + //自动探测按下函数 + function autoExploreDown(gameLevel, msgArr, x, y, iRowNum, iLineNum, bFlag) { + var arr = roundArray(x, y, iRowNum, iLineNum), + curGridMsg; + for (var i = 0, len = arr.length; i < len; i++) { + curGridMsg = msgArr[arr[i].x][arr[i].y]; + if (!curGridMsg.isDigged && !curGridMsg.isFlagged) { + gameLevel.children[arr[i].x].children[arr[i].y].className = bFlag ? "white" : "mc_cell"; + } + } + } + //自动探测抬起函数 + function autoExploreUp(gameLevel, msgArr, x, y, iRowNum, iLineNum) { + var arr = roundArray(x, y, iRowNum, iLineNum).slice(1), + curGridMsg; + for (var i = 0, len = arr.length; i < len; i++) { + curGridMsg = msgArr[arr[i].x][arr[i].y]; + var curGridEle = gameLevel.children[arr[i].x].children[arr[i].y]; + if (!curGridMsg.isDigged && !curGridMsg.isFlagged) { + if (!curGridMsg.isMine) { + digJudge(gameLevel, msgArr, iRowNum, iLineNum); + if (curGridMsg.figure === 0) { + curGridEle.className = "white"; + digAmibientGrid(gameLevel, msgArr, arr[i].x, arr[i].y, iRowNum, iLineNum); + } else { + addFigureImg(curGridEle, curGridMsg.figure); + } + } else { + digAllGrid(gameLevel, msgArr, iRowNum, iLineNum); + curGridEle.className = "bomb0"; + gameOver(false); + } + curGridMsg.isDigged = true; + } + } + } + //自动探测函数 + function autoExplore(gameLevel, msgArr, x, y, iRowNum, iLineNum) { + if (msgArr[x][y].isDigged) { + if (msgArr[x][y].figure != 0 && numOfSurroundingFlag(msgArr, x, y, iRowNum, iLineNum) === msgArr[x][y].figure) { + autoExploreUp(gameLevel, msgArr, x, y, iRowNum, iLineNum); + } else { + autoExploreDown(gameLevel, msgArr, x, y, iRowNum, iLineNum, false); + var numOfGrid = msgArr[x][y].figure; + addFalseFigureImg(gameLevel.children[x].children[y], numOfGrid); + clearTimeout(msgArr[x][y].deferTimer); + msgArr[x][y].deferTimer = setTimeout(function () { + addFigureImg(gameLevel.children[x].children[y], numOfGrid); + }, 800); + } + } else { + autoExploreDown(gameLevel, msgArr, x, y, iRowNum, iLineNum, false); + } + } + //检测周围旗帜数量函数 + function numOfSurroundingFlag(msgArr, x, y, iRowNum, iLineNum) { + var flagNum = 0, + arr = roundArray(x, y, iRowNum, iLineNum).slice(1); + for (var i = 0, len = arr.length; i < len; i++) { + if (msgArr[arr[i].x][arr[i].y].isFlagged) { + flagNum++; + } + } + return flagNum; + } + //游戏失败显示所有雷块函数 + function digAllGrid(gameLevel, msgArr, iRowNum, iLineNum) { + var curGridEle; + for (var i = 0; i < iRowNum; i++) { + for (var j = 0; j < iLineNum; j++) { + curGridEle = gameLevel.children[i].children[j]; + if (!msgArr[i][j].isDigged) { + if (msgArr[i][j].isMine && !msgArr[i][j].isFlagged) { + curGridEle.className = "bomb"; + } + if (!msgArr[i][j].isMine && msgArr[i][j].isFlagged) { + curGridEle.className = "bomb_wrong"; + } + } + } + } + } + //剩余雷数处理函数 + function remainderMine(bFlag) { + var reMine = parseInt($gameMine.children[1].innerHTML); + reMine = bFlag ? reMine - 1 : reMine + 1; + $gameMine.children[1].innerHTML = reMine; + } + //游戏结束处理函数 + function gameOver(isWin) { + bGameOver = true; + startMove($gameTime, upExPos); + startMove($gameMine, downExPos); + if (isWin) { + startMove($win, upPos); + startMove($overTime, upPos); + $overTime.children[1].innerHTML = $gameTime.children[0].innerHTML + ' 秒'; + } else { + startMove($lose, upPos); + startMove($overTime, upPos); + $overTime.children[1].innerHTML = $gameTime.children[0].innerHTML + ' 秒'; + } + startMove($overChoose, downPos); + } + //重置游戏清空数据函数 + function clearData(gameLevel) { + var gameLevelArr = gameLevel.children, + row = gameLevelArr.length, + line = gameLevelArr[0].children.length, + i, j; + for (i = 0; i < row; i++) { + for (j = 0; j < line; j++) { + gameLevel.children[i].children[j].className = "mc_cell"; + } + } + clearInterval(gameLevel.displayTimeTimer); + $gameTime.children[0].innerHTML = "0"; + gameLevel.onmouseover = null; + gameLevel.onmouseout = null; + gameLevel.onmousedown = null; + gameLevel.onmouseup = null; + gameLevel.ondblclick = null; + } + + //初始化游戏数据事件绑定函数 + function initGame(gameLevel, gameStr, pos, rowNum, lineNum, mineNum) { + bGameOver = false; + msgArr = []; + mineArr = []; + curGameLevel = gameStr; + iMineNum = mineNum; + iRowNum = rowNum; + iLineNum = lineNum; + iGridNum = iRowNum * iLineNum; + iDigNum = 0; + timeStart = 0; + timeEnd = 0; + initMineArr(mineArr, iMineNum, iGridNum); + initMsgArr(msgArr, mineArr, iRowNum, iLineNum); + initFigure(msgArr, iRowNum, iLineNum); + var isMouseDown = false, + isOutside = false, + isMidMouseDown = false, + bFirstClick = true; + $gameMine.children[1].innerHTML = iMineNum; + //绑定游戏规则相关事件 + //鼠标移入事件 + gameLevel.onmouseover = function (e) { + if (bGameOver) { + return; + } + var event = e || global.event, + src = event.target || event.srcElement, + x = coordOfGrid(src).x, + y = coordOfGrid(src).y; + if (src.nodeName.toLowerCase() === "li") { + if (isMidMouseDown && !isOutside) { + autoExploreDown(gameLevel, msgArr, x, y, iRowNum, iLineNum, true); + } else { + if (!msgArr[x][y].isDigged) { + if (isMouseDown && !isOutside) { + src.className = "white"; + } else { + if (msgArr[x][y].isFlagged) { + src.className = "flag_light"; + } else if (msgArr[x][y].isMarked) { + src.className = "mark_light"; + } else { + src.className = "mc_cell_light"; + } + } + } + } + } else { + isOutside = true; + } + }; + //鼠标移出事件 + gameLevel.onmouseout = function (e) { + if (bGameOver) { + return; + } + var event = e || global.event, + src = event.target || event.srcElement, + x = coordOfGrid(src).x, + y = coordOfGrid(src).y; + if (src.nodeName.toLowerCase() === "li") { + if (isMidMouseDown) { + autoExploreDown(gameLevel, msgArr, x, y, iRowNum, iLineNum, false); + } else { + if (!msgArr[x][y].isDigged) { + if (msgArr[x][y].isFlagged) { + src.className = "flag"; + } else if (msgArr[x][y].isMarked) { + src.className = "mark"; + } else { + src.className = "mc_cell"; + } + } + } + } + }; + //鼠标按下事件 + gameLevel.onmousedown = function (e) { + if (bGameOver) { + return; + } + var event = e || global.event, + src = event.target || event.srcElement, + x = coordOfGrid(src).x, + y = coordOfGrid(src).y, + index = msgArr[x][y].figure; + isOutside = false; + isMidMouseDown = false; + if (src.nodeName.toLowerCase() !== "li") { + return; + } + if (event.button === 0) { + if (!msgArr[x][y].isDigged && !msgArr[x][y].isFlagged) { + isMouseDown = true; + src.className = "white"; + } + } else if (event.button === 2) { + if (!msgArr[x][y].isDigged) { + if (msgArr[x][y].isFlagged) { + src.className = "mark_light"; + remainderMine(false); + msgArr[x][y].isFlagged = false; + msgArr[x][y].isMarked = true; + } else if (msgArr[x][y].isMarked) { + src.className = "mc_cell_light"; + msgArr[x][y].isMarked = false; + } else { + src.className = "flag_light"; + remainderMine(true); + msgArr[x][y].isFlagged = true; + } + } + } else { + isMidMouseDown = true; + autoExploreDown(gameLevel, msgArr, x, y, iRowNum, iLineNum, true); + } + }; + //鼠标抬起事件 + document.onmouseup = function (e) { + if (bGameOver) { + return; + } + var event = e || global.event, + src = event.target || event.srcElement, + x = coordOfGrid(src).x, + y = coordOfGrid(src).y, + index = msgArr[x][y].figure; + if (src.nodeName.toLowerCase() !== "li") { + isOutside = true; + return; + } + if (event.button === 0) { + isMouseDown = false; + if (bFirstClick) { + timeStart = new Date().getTime(); + bFirstClick = false; + clearInterval(gameLevel.displayTimeTimer); + gameLevel.displayTimeTimer = setInterval(function () { + timeEnd = new Date().getTime(); + $gameTime.children[0].innerHTML = parseInt((timeEnd - timeStart) / 1000); + }, 50); + } + if (!msgArr[x][y].isDigged && !msgArr[x][y].isFlagged) { + msgArr[x][y].isDigged = true; + if (msgArr[x][y].isMine) { + src.className = "bomb0"; + digAllGrid(gameLevel, msgArr, iRowNum, iLineNum); + gameOver(false); + } else if (index !== 0) { + addFigureImg(src, index); + digJudge(gameLevel, msgArr, iRowNum, iLineNum); + } else { + src.className = "white"; + digJudge(gameLevel, msgArr, iRowNum, iLineNum); + digAmibientGrid(gameLevel, msgArr, x, y, iRowNum, iLineNum); + } + } + } else if (event.button === 1) { + isMidMouseDown = false; + autoExplore(gameLevel, msgArr, x, y, iRowNum, iLineNum); + } + }; + //鼠标双击事件 + gameLevel.ondblclick = function (e) { + if (bGameOver) { + return; + } + var event = e || global.event, + src = event.target || event.srcElement, + x = coordOfGrid(src).x, + y = coordOfGrid(src).y; + autoExplore(gameLevel, msgArr, x, y, iRowNum, iLineNum); + }; + }; + + //阻止浏览器默认拖拽事件 + document.onmousemove = function (e) { + cancelHandler(e); + }; + //阻止浏览器默认右键菜单事件 + document.oncontextmenu = function (e) { + cancelHandler(e); + }; + + //绑定按钮点击事件 + $btnStart.onclick = function () { + startMove($mcStart, upExPos); + startMove($mcLevel, midPos); + }; + $btnPri.onclick = function () { + startMove($mcLevel, upExPos); + startMove($priGame, priLevelPos); + startMove($gameTime, upPos); + startMove($gameMine, downPos); + initGame($priGame, "pri", priLevelPos, 9, 9, 10); + }; + $btnMid.onclick = function () { + startMove($mcLevel, upExPos); + startMove($midGame, highLevelPos); + startMove($gameTime, upPos); + startMove($gameMine, downPos); + initGame($midGame, "mid", highLevelPos, 16, 16, 40); + }; + $btnExp.onclick = function () { + startMove($mcLevel, upExPos); + startMove($expGame, highLevelPos); + startMove($gameTime, upPos); + startMove($gameMine, downPos); + initGame($expGame, "exp", highLevelPos, 16, 30, 99); + }; + $replay.onclick = function () { + startMove($win, upExPos); + startMove($lose, upExPos); + startMove($overTime, upExPos); + startMove($overChoose, downExPos); + startMove($gameTime, upPos); + startMove($gameMine, downPos); + switch (curGameLevel) { + case "pri": + clearData($priGame); + initGame($priGame, "pri", priLevelPos, 9, 9, 10); + break; + case "mid": + clearData($midGame); + initGame($midGame, "mid", highLevelPos, 16, 16, 40); + break; + case "exp": + clearData($expGame); + initGame($expGame, "exp", highLevelPos, 16, 30, 99); + break; + } + }; + $reselect.onclick = function () { + startMove($win, upExPos); + startMove($lose, upExPos); + startMove($overTime, upExPos); + startMove($overChoose, downExPos); + switch (curGameLevel) { + case "pri": + clearData($priGame); + startMove($priGame, downExPos); + break; + case "mid": + clearData($midGame); + startMove($midGame, downExPos); + break; + case "exp": + clearData($expGame); + startMove($expGame, downExPos); + break; + } + startMove($mcLevel, midPos); + }; +} (window)); diff --git a/saolei/mine_img/0.jpg b/saolei/mine_img/0.jpg new file mode 100755 index 0000000..e5c1953 Binary files /dev/null and b/saolei/mine_img/0.jpg differ diff --git a/saolei/mine_img/1.jpg b/saolei/mine_img/1.jpg new file mode 100755 index 0000000..a76470c Binary files /dev/null and b/saolei/mine_img/1.jpg differ diff --git a/saolei/mine_img/1_w.jpg b/saolei/mine_img/1_w.jpg new file mode 100755 index 0000000..5b83b15 Binary files /dev/null and b/saolei/mine_img/1_w.jpg differ diff --git a/saolei/mine_img/1_wrong.gif b/saolei/mine_img/1_wrong.gif new file mode 100755 index 0000000..04cdaab Binary files /dev/null and b/saolei/mine_img/1_wrong.gif differ diff --git a/saolei/mine_img/2.jpg b/saolei/mine_img/2.jpg new file mode 100755 index 0000000..165aaea Binary files /dev/null and b/saolei/mine_img/2.jpg differ diff --git a/saolei/mine_img/2_w.jpg b/saolei/mine_img/2_w.jpg new file mode 100755 index 0000000..bda2000 Binary files /dev/null and b/saolei/mine_img/2_w.jpg differ diff --git a/saolei/mine_img/2_wrong.gif b/saolei/mine_img/2_wrong.gif new file mode 100755 index 0000000..89602fd Binary files /dev/null and b/saolei/mine_img/2_wrong.gif differ diff --git a/saolei/mine_img/3.jpg b/saolei/mine_img/3.jpg new file mode 100755 index 0000000..9faa270 Binary files /dev/null and b/saolei/mine_img/3.jpg differ diff --git a/saolei/mine_img/3_w.jpg b/saolei/mine_img/3_w.jpg new file mode 100755 index 0000000..06c2ea8 Binary files /dev/null and b/saolei/mine_img/3_w.jpg differ diff --git a/saolei/mine_img/3_wrong.gif b/saolei/mine_img/3_wrong.gif new file mode 100755 index 0000000..98646d3 Binary files /dev/null and b/saolei/mine_img/3_wrong.gif differ diff --git a/saolei/mine_img/4.jpg b/saolei/mine_img/4.jpg new file mode 100755 index 0000000..43bdb03 Binary files /dev/null and b/saolei/mine_img/4.jpg differ diff --git a/saolei/mine_img/4_w.jpg b/saolei/mine_img/4_w.jpg new file mode 100755 index 0000000..a08387f Binary files /dev/null and b/saolei/mine_img/4_w.jpg differ diff --git a/saolei/mine_img/4_wrong.gif b/saolei/mine_img/4_wrong.gif new file mode 100755 index 0000000..29cdc98 Binary files /dev/null and b/saolei/mine_img/4_wrong.gif differ diff --git a/saolei/mine_img/5.jpg b/saolei/mine_img/5.jpg new file mode 100755 index 0000000..e9d90e9 Binary files /dev/null and b/saolei/mine_img/5.jpg differ diff --git a/saolei/mine_img/5_w.jpg b/saolei/mine_img/5_w.jpg new file mode 100755 index 0000000..4354553 Binary files /dev/null and b/saolei/mine_img/5_w.jpg differ diff --git a/saolei/mine_img/5_wrong.gif b/saolei/mine_img/5_wrong.gif new file mode 100755 index 0000000..aef4a9f Binary files /dev/null and b/saolei/mine_img/5_wrong.gif differ diff --git a/saolei/mine_img/6.jpg b/saolei/mine_img/6.jpg new file mode 100755 index 0000000..ae918a2 Binary files /dev/null and b/saolei/mine_img/6.jpg differ diff --git a/saolei/mine_img/6_w.jpg b/saolei/mine_img/6_w.jpg new file mode 100755 index 0000000..da6b6f5 Binary files /dev/null and b/saolei/mine_img/6_w.jpg differ diff --git a/saolei/mine_img/6_wrong.gif b/saolei/mine_img/6_wrong.gif new file mode 100755 index 0000000..a7307ed Binary files /dev/null and b/saolei/mine_img/6_wrong.gif differ diff --git a/saolei/mine_img/7.jpg b/saolei/mine_img/7.jpg new file mode 100755 index 0000000..e3afdce Binary files /dev/null and b/saolei/mine_img/7.jpg differ diff --git a/saolei/mine_img/7_w.jpg b/saolei/mine_img/7_w.jpg new file mode 100755 index 0000000..4bf1fc2 Binary files /dev/null and b/saolei/mine_img/7_w.jpg differ diff --git a/saolei/mine_img/7_wrong.gif b/saolei/mine_img/7_wrong.gif new file mode 100755 index 0000000..5e00d76 Binary files /dev/null and b/saolei/mine_img/7_wrong.gif differ diff --git a/saolei/mine_img/8.jpg b/saolei/mine_img/8.jpg new file mode 100755 index 0000000..da7d3ac Binary files /dev/null and b/saolei/mine_img/8.jpg differ diff --git a/saolei/mine_img/8_w.jpg b/saolei/mine_img/8_w.jpg new file mode 100755 index 0000000..bfc5468 Binary files /dev/null and b/saolei/mine_img/8_w.jpg differ diff --git a/saolei/mine_img/8_wrong.gif b/saolei/mine_img/8_wrong.gif new file mode 100755 index 0000000..64660aa Binary files /dev/null and b/saolei/mine_img/8_wrong.gif differ diff --git a/saolei/mine_img/back/bomb.jpg.bak b/saolei/mine_img/back/bomb.jpg.bak new file mode 100755 index 0000000..32172da Binary files /dev/null and b/saolei/mine_img/back/bomb.jpg.bak differ diff --git a/saolei/mine_img/back/bomb0.jpg.bak b/saolei/mine_img/back/bomb0.jpg.bak new file mode 100755 index 0000000..69a9001 Binary files /dev/null and b/saolei/mine_img/back/bomb0.jpg.bak differ diff --git a/saolei/mine_img/back/bomb_w.jpg.bak b/saolei/mine_img/back/bomb_w.jpg.bak new file mode 100755 index 0000000..7c89b5a Binary files /dev/null and b/saolei/mine_img/back/bomb_w.jpg.bak differ diff --git a/saolei/mine_img/back/cb935f09f5fabab884e7174b65668700.png b/saolei/mine_img/back/cb935f09f5fabab884e7174b65668700.png new file mode 100755 index 0000000..76d989b Binary files /dev/null and b/saolei/mine_img/back/cb935f09f5fabab884e7174b65668700.png differ diff --git a/saolei/mine_img/bomb.jpg b/saolei/mine_img/bomb.jpg new file mode 100755 index 0000000..928dced Binary files /dev/null and b/saolei/mine_img/bomb.jpg differ diff --git a/saolei/mine_img/bomb0.jpg b/saolei/mine_img/bomb0.jpg new file mode 100755 index 0000000..e525e38 Binary files /dev/null and b/saolei/mine_img/bomb0.jpg differ diff --git a/saolei/mine_img/bomb_w.jpg b/saolei/mine_img/bomb_w.jpg new file mode 100755 index 0000000..deb0905 Binary files /dev/null and b/saolei/mine_img/bomb_w.jpg differ diff --git a/saolei/mine_img/flag.jpg b/saolei/mine_img/flag.jpg new file mode 100755 index 0000000..d4e244c Binary files /dev/null and b/saolei/mine_img/flag.jpg differ diff --git a/saolei/mine_img/flag_light.jpg b/saolei/mine_img/flag_light.jpg new file mode 100755 index 0000000..f436883 Binary files /dev/null and b/saolei/mine_img/flag_light.jpg differ diff --git a/saolei/mine_img/flag_light0.jpg b/saolei/mine_img/flag_light0.jpg new file mode 100755 index 0000000..2c08bcb Binary files /dev/null and b/saolei/mine_img/flag_light0.jpg differ diff --git a/saolei/mine_img/mark.jpg b/saolei/mine_img/mark.jpg new file mode 100755 index 0000000..2eb0519 Binary files /dev/null and b/saolei/mine_img/mark.jpg differ diff --git a/saolei/mine_img/mark_light.jpg b/saolei/mine_img/mark_light.jpg new file mode 100755 index 0000000..1969ae8 Binary files /dev/null and b/saolei/mine_img/mark_light.jpg differ diff --git a/saolei/mine_img/mark_light0.jpg b/saolei/mine_img/mark_light0.jpg new file mode 100755 index 0000000..0598ba0 Binary files /dev/null and b/saolei/mine_img/mark_light0.jpg differ diff --git a/saolei/mine_img/mouse.ico b/saolei/mine_img/mouse.ico new file mode 100755 index 0000000..60295f1 Binary files /dev/null and b/saolei/mine_img/mouse.ico differ diff --git a/saolei/mine_img/s.jpg b/saolei/mine_img/s.jpg new file mode 100755 index 0000000..89a54f1 Binary files /dev/null and b/saolei/mine_img/s.jpg differ diff --git a/saolei/mine_img/s_light.jpg b/saolei/mine_img/s_light.jpg new file mode 100755 index 0000000..b31a096 Binary files /dev/null and b/saolei/mine_img/s_light.jpg differ diff --git a/saolei/mine_img/s_light0.jpg b/saolei/mine_img/s_light0.jpg new file mode 100755 index 0000000..e98f354 Binary files /dev/null and b/saolei/mine_img/s_light0.jpg differ diff --git a/saolei/myTools.js b/saolei/myTools.js new file mode 100755 index 0000000..c2c08c9 --- /dev/null +++ b/saolei/myTools.js @@ -0,0 +1,348 @@ +//栈 +function Stack() { + var items = []; + this.push = function (element) { + items.push(element); + };//推栈 + this.pop = function () { + return items.pop(); + };//弹栈 + this.peek = function () { + return items[items.length - 1]; + };//栈顶元素 + this.isEmpty = function () { + return items.length === 0; + };//栈是否为空 + this.size = function () { + return items.length; + };//栈大小 + this.clear = function () { + items = []; + };//清空栈 + this.print = function () { + console.log(items.toString()); + };//打印栈 +} +//队列 +function Queue() { + var items = []; + this.enqueue = function (element) { + items.push(element); + }//入队 + this.dequeue = function () { + return items.shift(); + }//出队 + this.front = function () { + return items[0]; + }//队首元素 + this.isEmpty = function () { + return items.length === 0; + }//队列是否为空 + this.clear = function () { + items = []; + }//清空队列 + this.size = function () { + return items.length; + }//队列大小 + this.print = function () { + console.log(items.toString()); + }//打印队列 +} +//圣杯继承 +var inherit = (function (){ + var F = function () {}; + return function (Child, Parent) { + F.prototype = Parent.prototype; + Child.prototype = new F(); + Child.prototype.constructor = Child; + Child.prototype.uber = Parent.prototype; + } +})(); +//深层拷贝对象(不考虑函数) +function deepClone(original, target) { + var target = target || {}, + toStr = Object.prototype.toString, + arrStr = '[object Array]'; + for(var prop in original){ + if(original.hasOwnProperty(prop)){ + if(typeof original[prop] === 'object'){ + target[prop] = (toStr.call(original[prop]) === arrStr) ? [] : {}; + deepClone(original[prop], target[prop]); + }else{ + target[prop] = original[prop]; + } + } + + } + return target; +} +//数组去重 +Array.prototype.unique = function() { + var obj = {}, + arr = [], + len = this.length; + for(var i = 0; i < len; i++){ + if(!obj[this[i]]){ + obj[this[i]] = true; + arr.push(this[i]); + } + } + return arr; +} +//类属性 +function classOf(o){ + if(o === null) return "Null"; + if(o === undefined) return "Undefined"; + return Object.prototype.toString.call(o).slice(8,-1); +} +//父节点的第几个元素节点 +Element.prototype.eleIndex = function(){ + var index = 0, + node = this; + while(node = node.previousSibling){ + if(node.nodeType == 1){ + index++; + } + } + return index; +} +//第n层祖先元素 +Element.prototype.nthParentEle = function(n) { + var node = this, + n = n || 0; + while(node && n--) { + node = node.parentElement; + } + return node; +} +//第n个兄弟节点 +Element.prototype.nthSiblingEle = function(n){ + var node = this; + while(node && n) { + if(n > 0){ + if(node.nextElementSibling){ + node = node.nextElementSibling; + }else{ + for(node = node.nextSibling; node && node.nodeType !== 1; node = node.nextSibling); + } + n--; + }else{ + if(node.previousElementSibling){ + node = node.previousElementSibling; + }else{ + for(node = node.previousSibling; node && node.nodeType !== 1; node = node.previousSibling); + } + n++; + } + } + return node; +} +//在某元素后插入元素 +Element.prototype.insertAfter = function (targetNode, afterNode){ + var siblingNode = afterNode.nextElementSibling; + if(siblingNode) { + this.insertBefore(targetNode,siblingNode); + } else { + this.appendChild(targetNode); + } + return targetNode; +} +//销毁元素节点自身 +Element.prototype.remove = function (){ + this.parentElement.removeChild(this); +} +//目标节点内部的节点顺序逆序 +Element.prototype.revChild = function (){ + var child = this.children, + len = child.length; + for (var i = len - 2; i >= 0; i--){ + this.appendChild(child[i]); + } + return this; +} +//查看滚动轮滚动距离 +function getScrollOffset(){ + if(window.pageXOffset){ + return { + x: window.pageXOffset, + y: window.pageYOffset + } + }else{ + return { + x: document.body.scrollLeft + document.documentElement.scrollLeft, + y: document.body.scrollTop + document.documentElement.scrollTop + } + } +} +//查看浏览器视口尺寸 +function getViewportOffset(){ + if(window.innerWidth){ + return { + w: window.innerWidth, + h: window.innerHeight + } + }else if(document.compatMode === "CSS1Compat"){ + return{ + w: document.documentElement.clientWidth, + h: document.documentElement.clientHeight + } + }else{ + return{ + w: document.body.clientWidth, + h: document.body.clientHeight + } + } +} +//求元素相对于文档的坐标 +Element.prototype.getCoord = function (){ + var coordX = 0, + coordY = 0, + docEle = this; + while(docEle){ + coordX += docEle.offsetLeft; + coordY += docEle.offsetTop; + docEle = docEle.offsetParent; + } + return { + x: coordX, + y: coordY + } +}; +//获取样式 +function getStyle(ele, style){ + if(window.getComputedStyle){ + return window.getComputedStyle(ele,null)[style]; + }else{ + return ele.currentStyle[style]; + } +} +//添加事件 +function addEvent(elem, type, handler){ + if(elem.addEventListener){ + elem.addEventListener(type, handler, false); + }else if(elem.attachEvent){ + elem['temp' + type + handler] = handler; + elem['temp' + type] = function(){ + elem['temp' + type + handler].call(elem); + } + elem.attachEvent('on' + type, elem['temp' + type]); + }else{ + elem['on' + type] = handler; + } +} +//解除事件 +function removeEvent(elem, type, handler){ + if(elem.removeEventListener){ + elem.removeEventListener(type, handler, false); + }else if(elem.detachEvent){ + elem.detachEvent('on' + type, elem['temp' + type]); + }else{ + elem['on' + type] = null; + } +} +//取消冒泡 +function stopBubble(event){ + if(event.stopPropagation){ + event.stopPropagation(); + }else{ + event.cancelBubble = true; + } +} +//阻止默认事件 +function cancelHandler(event){ + if(event.preventDefault){ + event.preventDefault(); + }else{ + event.returnValue = false; + } +} +//拖拽元素 +function drag(elem){ + var disX; + var disY; + addEvent(elem,"mousedown",function(e){ + var event = e || window.event; + disX = event.clientX - parseInt(getStyle(this,"left")); + disY = event.clientY - parseInt(getStyle(this,"top")); + addEvent(document,"mousemove",mouseMove); + addEvent(document,"mouseup",mouseUp); + }); + function mouseMove(e){ + var event = e || window.event; + elem.style.left = event.pageX - disX + 'px'; + elem.style.top = event.pageY - disY + 'px'; + } + function mouseUp(){ + removeEvent(document,"mousemove",mouseMove); + removeEvent(document,"mouseup",mouseUp); + } +} +//多物体多值链式运动框架 +function startMove(elem, json, func){ + clearInterval(elem.timer); + var iSpeed; + var iCur; + var bStop; + elem.timer = setInterval(function(){ + bStop = true; + for(var attr in json){ + iCur = attr === 'opacity' ? parseFloat(getStyle(elem,attr)) * 100 : parseInt(getStyle(elem,attr)); + iSpeed = attr === 'opacity' ? (parseFloat(json[attr])* 100 - iCur) / 7 : (parseInt(json[attr]) - iCur) / 7; + iSpeed = iSpeed > 0 ? Math.ceil(iSpeed) : Math.floor(iSpeed); + elem.style[attr] = attr === "opacity" ? (iCur + iSpeed) / 100 : iCur + iSpeed + 'px'; + if(iCur !== (attr === 'opacity' ? parseFloat(json[attr]) * 100 : parseInt(json[attr]))){ + bStop = false; + } + } + if(bStop){ + clearInterval(elem.timer); + if(func){ + func(); + } + } + },30); +} +//按需异步加载script +function scriptLoaded(url, callback){ + var script = document.createElement('script'); + script.type = "text/javascript"; + if(script.readyState){ + script.onreadystatechange = function(){ + if(script.readyState == "complete" || script.readyState == "loaded"){ + callback(); + script.onreadystatechange = null; + } + } + }else{ + script.onload = function(){ + script.onload = null; + callback(); + } + } + script.src = url; + document.head.appendChild(script); +} +//兼容getElementByClassName +Document.prototype.getByClassName = function(target) { + var allEle = document.getElementsByTagName('*'), + len = allEle.length, + arr = [], + classArr = [], + classArrLen; + for(var i = 0; i < len; i++) { + classArr = allEle[i].className.myTrim().splice(' '); + classArrLen = classArr.length; + for(var j = 0; j < classArrLen; j++){ + if(classArr[j] === target){ + arr.push(allEle[i]); + break; + } + } + } + return arr; +} +//兼容trim +String.prototype.myTrim = function() { + var reg = /^\s*|\s*$/; + return this.replace(reg,''); +} \ No newline at end of file