jquery框架JS扫雷
来源:互联网 发布:php与jsp的区别 编辑:程序博客网 时间:2024/05/17 02:58
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script src="../jquery-1.4.1.js"></script>
<style type="text/css">
table{
border:1px solid red;}
tr{
height:15px;}
td{
border:1px solid gray;
width:15px;
background:green;}
</style>
<script type="text/javascript">
//rows 行数 columns 列数 number 雷数
var rows,columns,number;
//初始化
function Init(){
//获取用户设置的信息并判断输入是否正确
rows = $("#rows").val();
columns = $("#columns").val();
number = $("#number").val();
if(isNaN(rows)||isNaN(columns)||isNaN(number)){
alert("请输入数字");
return;
}
if(rows==""||columns==""||number==""){
alert("数据输入不正确");
return;
}
if((rows*columns)/2<number){
alert("多");
return;
}
tableInit();
mineInit();
}
//初始化地雷的位置
function mineInit(){
for(var i=number;i>0;i--){
var c = parseInt(Math.random()*columns);
var r = parseInt(Math.random()*rows);
if(choose(c,r).attr("ismine")){
i++;
continue;
}
choose(c,r).attr("ismine",true);
}
}
//根据用户的设置初始化界面
function tableInit(){
for(var r=rows;r>0;r--){
var trs = $("<tr></tr>");
for(var c = columns;c>0;c--){
var tds = $("<td></td>");
//设置每个的坐标
tds.attr("columns",columns-c);
tds.attr("rows",rows-r);
$(trs).append(tds);
$(tds).mousedown(function(e){
tdClick(this,e);
});
}
$("table").append(trs);
}
}
//点击事件 判断是否点中地雷
function tdClick(td,e){
//判断按下的是什么键
if(e.which==1){
if($(td).attr("isl")){return;}
if($(td).attr("ismine")){
alert("你挂了");
}else{
minenumber(td);
}
}else{
if($(td).attr("isl")){
$(td).css("background","green").removeAttr("isl");
}else{
$(td).css("background","red").attr("isl",true);
}
}
issl();
}
//判断是否胜利
function issl(){
if($("td[isfangwen!=true]").length==number){
alert("你胜利了");
}
}
//根据行和列来选择
function choose(c,r){
if(c<0||r<0||c>columns-1||r>rows-1){
return null;
}
return $("td[columns="+c+"][rows="+r+"]");
}
//判断周围有多少地雷
function minenumber(td){
if(td==null){
return;
}
//判断此位置是否判断过
if($(td).attr("isfangwen")){//已判断
return;
}else{//未判读
$(td).attr("isfangwen",true);
$(td).css("background","gray");
}
var c = parseInt($(td).attr("columns"));
var r = parseInt($(td).attr("rows"));
var count=0;//存储周围地雷的数量
//判断各个方向是否是地雷
if(mn(c,r-1)){count++;}//上
if(mn(c+1,r-1)){count++;}//右上
if(mn(c+1,r)){count++;}//右
if(mn(c+1,r+1)){count++;}//右下
if(mn(c,r+1)){count++;}//下
if(mn(c-1,r+1)){count++;}//左下
if(mn(c-1,r)){count++;}//左
if(mn(c-1,r-1)){count++;}//左上
if(count==0){
minenumber(choose(c,r-1));
minenumber(choose(c+1,r-1));
minenumber(choose(c+1,r));
minenumber(choose(c+1,r+1));
minenumber(choose(c,r+1));
minenumber(choose(c-1,r+1));
minenumber(choose(c-1,r));
minenumber(choose(c-1,r-1));
}else{
$(td).text(count);
}
}
//判断指定位置是否是地雷
function mn(c,r){
if(isNaN(c)||isNaN(r)){
return false;
}
//判断边界
if(c<0||r<0||c>columns-1||r>rows-1){
return false;
}
if(choose(c,r).attr("ismine")){//是地雷
return true;
}else{//不是地雷
return false;
}
}
$(function(){
$("#btn").click(function(){
Init();
});
});
</script>
</head>
<body oncontextmenu="self.event.returnValue=false">
<table cellpadding="0" cellspacing="0">
</table>
行数:<input id="rows"/><br />
列数:<input id="columns"/><br/>
雷数:<input id="number"/><br/>
<input id="btn" type="button" value="确定" />
</body>
</html>
- jquery框架JS扫雷
- JS扫雷
- JS轻量级框架:jQuery
- 原创jquery扫雷
- JS版扫雷
- JS + PHP 扫雷
- JS + PHP 扫雷
- js扫雷小游戏
- Web扫雷(js)
- js模拟jquery 框架思想
- JS/JQuery 代码、框架收藏
- 扫雷游戏(js版)
- JS写的扫雷详解
- Web版 扫雷 JS实现
- jQuery与其他JS框架冲突解决
- 手机HTML JS框架 jQuery Mobile
- jquery.validate.js是jquery旗下的一个验证框架
- jquery.validate.js是jquery旗下的一个验证框架
- 关于trap ERR的一个bash shell set 参数之二:shopt -s extdebug
- 从消费流程看图书站点设计
- ntu下解决Ruby安装后缺少openssl的问题
- 看了《为什么你应该写博客》有感
- 非模态对话框 建立 销毁
- jquery框架JS扫雷
- 65个职场很有技巧的回答
- MFC 非模态对话框
- 站在巨人的肩膀上开发游戏(5) -- 打砖块游戏制作续
- 弈天棋缘-- 擂台规则
- bash if... then....else
- Java对象的序列化和反序列化实践
- PHP 操作达梦数据库测试
- 配置 SQL Server 2008 R2 中的Reporting Service 发送邮件功能