Back up the tudoudilei site

This commit is contained in:
2025-10-21 10:38:28 +00:00
commit 2a2337042f
57 changed files with 2582 additions and 0 deletions

1
.htaccess Executable file
View File

@@ -0,0 +1 @@

1
.user.ini Normal file
View File

@@ -0,0 +1 @@
open_basedir=/www/wwwroot/tudoudilei.tgc.icu/:/tmp/

26
404.html Executable file
View File

@@ -0,0 +1,26 @@
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<title>404</title>
<style>
body{
background-color:#444;
font-size:14px;
}
h3{
font-size:60px;
color:#eee;
text-align:center;
padding-top:30px;
font-weight:normal;
}
</style>
</head>
<body>
<h3>404您请求的文件不存在!</h3>
</body>
</html>

96
index.php Executable file
View File

@@ -0,0 +1,96 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>土豆地雷</title>
<style>
body {
text-align: center;
font-family: Arial, sans-serif;
background-color: #f0f0f0;
margin-top: 50px;
}
.container {
position: relative;
display: inline-block;
}
#potato-mine {
width: 200px;
height: 200px;
transition: transform 0.5s ease-in-out;
position: relative;
z-index: 1; /* 土豆地雷在上层 */
}
.grass {
position: absolute;
width: 200px;
height: 30px;
background-color: #228B22; /* 草地颜色 */
bottom: 0px; /* 草地位于地面上方 */
left: 0;
z-index: 2; /* 草地在地面上方 */
border-radius: 5px 5px 0 0;
}
.ground {
position: absolute;
width: 200px;
height: 100px; /* 土地的厚度增加 */
background-color: #8B4513; /* 土色 */
bottom: -100px; /* 向下移动地面 */
left: 0;
z-index: 2; /* 地面在土豆地雷上方 */
border-radius: 5px;
}
#potato-mine:hover {
transform: translateY(100px); /* 鼠标悬停时土豆地雷缩进地下 */
}
</style>
</head>
<body>
<h2>我将会用尽全部力气,来保护土豆地雷</h2>
<h3>哪怕与全世界为敌,我也会坚定地和你在一块</h3>
<div class="container">
<img id="potato-mine" src="https://ningbo1.picpic.yuheng.hl.cn/2025/01/29/679a333aeac50.jpg" alt="土豆地雷">
<div class="grass"></div> <!-- 草地区域 -->
<div class="ground"></div>
</div>
<br><br><br><br><br><br>
<br><a href="/saolei/">扫雷</a>
<br>土豆地雷,脑袋缺弦
<br>----老舍 1931.03.16
<br>已经和土豆地雷相恋<?
$times = time() - 1699092000;
// 计算年数
$years = floor($times / (365 * 24 * 60 * 60));
$times %= (365 * 24 * 60 * 60);
// 计算月数
$months = floor($times / (30 * 24 * 60 * 60));
$times %= (30 * 24 * 60 * 60);
// 计算天数
$days = floor($times / (24 * 60 * 60));
$times %= (24 * 60 * 60);
// 计算小时数
$hours = floor($times / (60 * 60));
$times %= (60 * 60);
// 计算分钟数
$minutes = floor($times / 60);
$seconds = $times % 60;
echo "{$years}{$months}{$days}{$hours}{$minutes}{$seconds}";
?>
<script>
const potatoMine = document.getElementById('potato-mine');
potatoMine.addEventListener('mouseenter', function() {
potatoMine.style.transform = 'translateY(100px)'; // 鼠标放上去时,地雷“埋进地下”
});
potatoMine.addEventListener('mouseleave', function() {
potatoMine.style.transform = 'translateY(0)'; // 鼠标移开时,地雷返回原位置
});
</script>
</body>
</html>

27
old/v1.php Executable file
View File

@@ -0,0 +1,27 @@
<meta charset="utf-8">
<h2>我将会用尽全部力气,来保护土豆地雷</h2>
<h3>哪怕与全世界为敌,我也会坚定地和你在一块</h3>
<a href="/saolei/">
<img width=300 height=300 src="https://ningbo1.picpic.yuheng.hl.cn/2025/01/29/679a333aeac50.jpg">
</a>
<br>土豆地雷,脑袋缺弦
<br>----老舍 1931.03.16
<br>已经和土豆地雷相恋<?
$times = time() - 1699092000;
// 计算年数
$years = floor($times / (365 * 24 * 60 * 60));
$times %= (365 * 24 * 60 * 60);
// 计算月数
$months = floor($times / (30 * 24 * 60 * 60));
$times %= (30 * 24 * 60 * 60);
// 计算天数
$days = floor($times / (24 * 60 * 60));
$times %= (24 * 60 * 60);
// 计算小时数
$hours = floor($times / (60 * 60));
$times %= (60 * 60);
// 计算分钟数
$minutes = floor($times / 60);
$seconds = $times % 60;
echo "{$years}{$months}{$days}{$hours}{$minutes}{$seconds}";
?>

96
old/v2.php Executable file
View File

@@ -0,0 +1,96 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>土豆地雷</title>
<style>
body {
text-align: center;
font-family: Arial, sans-serif;
background-color: #f0f0f0;
margin-top: 50px;
}
.container {
position: relative;
display: inline-block;
}
#potato-mine {
width: 200px;
height: 200px;
transition: transform 0.5s ease-in-out;
position: relative;
z-index: 1; /* 土豆地雷在上层 */
}
.grass {
position: absolute;
width: 200px;
height: 30px;
background-color: #228B22; /* 草地颜色 */
bottom: 0px; /* 草地位于地面上方 */
left: 0;
z-index: 2; /* 草地在地面上方 */
border-radius: 5px 5px 0 0;
}
.ground {
position: absolute;
width: 200px;
height: 100px; /* 土地的厚度增加 */
background-color: #8B4513; /* 土色 */
bottom: -100px; /* 向下移动地面 */
left: 0;
z-index: 2; /* 地面在土豆地雷上方 */
border-radius: 5px;
}
#potato-mine:hover {
transform: translateY(100px); /* 鼠标悬停时土豆地雷缩进地下 */
}
</style>
</head>
<body>
<h2>我将会用尽全部力气,来保护土豆地雷</h2>
<h3>哪怕与全世界为敌,我也会坚定地和你在一块</h3>
<div class="container">
<img id="potato-mine" src="https://ningbo1.picpic.yuheng.hl.cn/2025/01/29/679a333aeac50.jpg" alt="土豆地雷">
<div class="grass"></div> <!-- 草地区域 -->
<div class="ground"></div>
</div>
<br><br><br><br><br><br>
<br><a href="/saolei/">扫雷</a>
<br>土豆地雷,脑袋缺弦
<br>----老舍 1931.03.16
<br>已经和土豆地雷相恋<?
$times = time() - 1699092000;
// 计算年数
$years = floor($times / (365 * 24 * 60 * 60));
$times %= (365 * 24 * 60 * 60);
// 计算月数
$months = floor($times / (30 * 24 * 60 * 60));
$times %= (30 * 24 * 60 * 60);
// 计算天数
$days = floor($times / (24 * 60 * 60));
$times %= (24 * 60 * 60);
// 计算小时数
$hours = floor($times / (60 * 60));
$times %= (60 * 60);
// 计算分钟数
$minutes = floor($times / 60);
$seconds = $times % 60;
echo "{$years}{$months}{$days}{$hours}{$minutes}{$seconds}";
?>
<script>
const potatoMine = document.getElementById('potato-mine');
potatoMine.addEventListener('mouseenter', function() {
potatoMine.style.transform = 'translateY(100px)'; // 鼠标放上去时,地雷“埋进地下”
});
potatoMine.addEventListener('mouseleave', function() {
potatoMine.style.transform = 'translateY(0)'; // 鼠标移开时,地雷返回原位置
});
</script>
</body>
</html>

8
saolei/.idea/.gitignore generated vendored Executable file
View File

@@ -0,0 +1,8 @@
# 默认忽略的文件
/shelf/
/workspace.xml
# 基于编辑器的 HTTP 客户端请求
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

8
saolei/.idea/Minesweeper-master.iml generated Executable file
View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

8
saolei/.idea/modules.xml generated Executable file
View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/Minesweeper-master.iml" filepath="$PROJECT_DIR$/.idea/Minesweeper-master.iml" />
</modules>
</component>
</project>

19
saolei/.idea/php.xml generated Executable file
View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="MessDetectorOptionsConfiguration">
<option name="transferred" value="true" />
</component>
<component name="PHPCSFixerOptionsConfiguration">
<option name="transferred" value="true" />
</component>
<component name="PHPCodeSnifferOptionsConfiguration">
<option name="highlightLevel" value="WARNING" />
<option name="transferred" value="true" />
</component>
<component name="PhpStanOptionsConfiguration">
<option name="transferred" value="true" />
</component>
<component name="PsalmOptionsConfiguration">
<option name="transferred" value="true" />
</component>
</project>

6
saolei/README.md Executable file
View File

@@ -0,0 +1,6 @@
# 功能实现
- 游戏难度选择(初级、中级、高级)
- 游戏时间记录
- 显示剩余雷数
- 双击或鼠标滑轮键智能探测

963
saolei/index.html Executable file
View File

@@ -0,0 +1,963 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>MineClearance</title>
<link rel="stylesheet" href="mineClearance.css">
<script src="myTools.js"></script>
</head>
<body>
<div class="mc_wrapper">
<div id="mc_start">
<h1>扫 雷</h1>
<button class="btn_start">新游戏</button>
</div>
<div id="mc_level">
<h2>⚔ 选择难度 ⚔</h2>
<button class="btn_pri">初级</button>
<button class="btn_mid">中级</button>
<button class="btn_exp">高级</button>
</div>
<div id="mc_game_time">
<span>0</span>
<p>⌛ 游戏时间 ⌛</p>
</div>
<div id="mc_game_mine">
<p>☢ 剩余雷数 ☢</p>
<span></span>
</div>
<h4 id="mc_gameover_win">游戏胜利</h4>
<h4 id="mc_gameover_lose">游戏失败</h4>
<p id="mc_gameover_time">
<span class="mc_go_t1">⌚时间:</span>
<span class="mc_go_t2"></span>
</p>
<div id="mc_gameover_choose">
<button id="mc_replay">重新游戏</button>
<button id="mc_reselect">选择难度</button>
</div>
<div id="mc_pri_game">
<ul class="mc_row">
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
</ul>
<ul class="mc_row">
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
</ul>
<ul class="mc_row">
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
</ul>
<ul class="mc_row">
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
</ul>
<ul class="mc_row">
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
</ul>
<ul class="mc_row">
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
</ul>
<ul class="mc_row">
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
</ul>
<ul class="mc_row">
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
</ul>
<ul class="mc_row">
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
</ul>
</div>
<div id="mc_mid_game">
<ul class="mc_row">
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
</ul>
<ul class="mc_row">
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
</ul>
<ul class="mc_row">
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
</ul>
<ul class="mc_row">
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
</ul>
<ul class="mc_row">
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
</ul>
<ul class="mc_row">
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
</ul>
<ul class="mc_row">
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
</ul>
<ul class="mc_row">
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
</ul>
<ul class="mc_row">
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
</ul>
<ul class="mc_row">
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
</ul>
<ul class="mc_row">
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
</ul>
<ul class="mc_row">
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
</ul>
<ul class="mc_row">
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
</ul>
<ul class="mc_row">
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
</ul>
<ul class="mc_row">
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
</ul>
<ul class="mc_row">
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
</ul>
</div>
<div id="mc_exp_game">
<ul class="mc_row">
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
</ul>
<ul class="mc_row">
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
</ul>
<ul class="mc_row">
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
</ul>
<ul class="mc_row">
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
</ul>
<ul class="mc_row">
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
</ul>
<ul class="mc_row">
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
</ul>
<ul class="mc_row">
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
</ul>
<ul class="mc_row">
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
</ul>
<ul class="mc_row">
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
</ul>
<ul class="mc_row">
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
</ul>
<ul class="mc_row">
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
</ul>
<ul class="mc_row">
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
</ul>
<ul class="mc_row">
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
</ul>
<ul class="mc_row">
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
</ul>
<ul class="mc_row">
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
</ul>
<ul class="mc_row">
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
<li class="mc_cell"></li>
</ul>
</div>
</div>
<script src="mineClearance.js"></script>
</body>
</html>
<!--
初级 9 * 9 81 10雷
中级 16 * 16 256 40雷
高级 16 * 30 480 99雷
游戏规则:
找出空方块,同时避免触雷。清除扫雷区速度越快,得分越高
-->

281
saolei/mineClearance.css Executable file
View File

@@ -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;
}

694
saolei/mineClearance.js Executable file
View File

@@ -0,0 +1,694 @@
/*
* author: payen S.Tsung 丛培森
* date2016.09
* bloghttp://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));

BIN
saolei/mine_img/0.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 B

BIN
saolei/mine_img/1.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 237 B

BIN
saolei/mine_img/1_w.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
saolei/mine_img/1_wrong.gif Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
saolei/mine_img/2.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 434 B

BIN
saolei/mine_img/2_w.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
saolei/mine_img/2_wrong.gif Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
saolei/mine_img/3.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 422 B

BIN
saolei/mine_img/3_w.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
saolei/mine_img/3_wrong.gif Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
saolei/mine_img/4.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 331 B

BIN
saolei/mine_img/4_w.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
saolei/mine_img/4_wrong.gif Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
saolei/mine_img/5.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 391 B

BIN
saolei/mine_img/5_w.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
saolei/mine_img/5_wrong.gif Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
saolei/mine_img/6.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 320 B

BIN
saolei/mine_img/6_w.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
saolei/mine_img/6_wrong.gif Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
saolei/mine_img/7.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 332 B

BIN
saolei/mine_img/7_w.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
saolei/mine_img/7_wrong.gif Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
saolei/mine_img/8.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 407 B

BIN
saolei/mine_img/8_w.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
saolei/mine_img/8_wrong.gif Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
saolei/mine_img/back/bomb.jpg.bak Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1002 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

BIN
saolei/mine_img/bomb.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
saolei/mine_img/bomb0.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
saolei/mine_img/bomb_w.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
saolei/mine_img/flag.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
saolei/mine_img/flag_light.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
saolei/mine_img/flag_light0.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
saolei/mine_img/mark.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
saolei/mine_img/mark_light.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
saolei/mine_img/mark_light0.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
saolei/mine_img/mouse.ico Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

BIN
saolei/mine_img/s.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 643 B

BIN
saolei/mine_img/s_light.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 643 B

BIN
saolei/mine_img/s_light0.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 751 B

348
saolei/myTools.js Executable file
View File

@@ -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,'');
}