首页 > 编程语言 >JavaScript 表格小游戏

JavaScript 表格小游戏

时间:2023-02-09 11:02:40浏览次数:47  
标签:function map arr 表格 JavaScript innerHTML 小游戏 str var

阅读目录

JavaScript 实现表格配对小游戏

实例描述:
当用户点击两个相同的图案或字符后配对成功,全部配对成功后游戏获胜。

案例 008 采用了大家常见的小游戏来帮助大家提高应用JS解决实际问题的能力,需要说明的是该案例在很大程度上做了简化,大家课下练习的时候可以发挥自己的想象力进一步来完善该游戏。

源码

JavaScript 表格小游戏_i++

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>演示文档-配对游戏</title>
<style type="text/css">
table{
    margin:15px auto 15px;
    background: rgba(60,180,100,0.3);
    color: blue;
    width: 500px;
    height: 500px;
}
hr{
        width: 600px;
        height: 5px;
        background: orange;
}
h2{text-align: center;}
td{
    text-align: center;
    background: rgba(160,80,10,0.1);
    width: 100px;
    height: 100px;
}
footer{
    margin:0px auto;
        text-align: center;
        background: rgba(0,100,100,0.2);
        padding: 10px;
        width: 500px;
}
</style>
</head>
<body>

<h2>配对游戏<hr></h2>

<table>
    <script>
        var cols=5,rows=4;
        for(var i=0;i<rows;i++){
            str="<tr>";
            for(var j=0;j<cols;j++){
                var sid="img"+((cols*i)+j)
                str+='<td  id="'+sid+'" οnclick="showimg('+((cols*i)+j)+')"'+'>'
                str+='</td>'
            }
            str+="</tr>";
            document.write(str)
        }
    </script>
</table>

<footer>
    用时:<span id="gameTime"></span>&nbsp&nbsp&nbsp
    <input type="button" value="开始游戏" onclick="init()">
</footer>

<script type="text/javascript">
var length=cols*rows //表格单元格数目
var map=[] //存储单元格里的内容
var user=[] //存储每个单元格是否可以翻开的状态
var times=0;
var newsatrt;
var firstIndex=0,secondIndex=0;//点击第一张、第二张图片的索引
var ctr=0;
var finished;
function $(x){
        return document.getElementById(x)
}
for(var i=0;i<length/2;i++){
    map[i]=i;
    map[length/2+i]=i
}
// alert(map)
function init(){
    for (var i=0;i<length;i++){
        $("img"+i).innerHTML=''
        user[i]=0;//是否显示图片,0为显示背面
    }
    // alert(map)
    map.sort(function(){return Math.random()-0.5})
    // alert(map)
    times=0; //计时器变量清零
    $("gameTime").innerHTML=times+'秒'
    newsatrt=true; //标记为新开局
}

function showimg(x){
    if (newsatrt) {
        start()
        newsatrt=false;
    }

    $("img"+x).innerHTML=map[x]
    // alert(x)
    if (ctr==0) {
        ctr++
        firstIndex=x //记录第一张图片索引
    }else{
        if (firstIndex!=x) {
        secondIndex=x;//记录第二张图片索引
        ctr=0;
        check()
        }
    }

}

function start(){
    times+=1
    $("gameTime").innerHTML=times+'秒';
    setTimeout('start()',1000)
}

function check(){
    if (map[firstIndex]==map[secondIndex]) {
        finished++;
        user[firstIndex]=1;
        user[secondIndex]=1;//不能再翻
        ctr=0;
    }else if(user[firstIndex]==0){
        $('img'+firstIndex).innerHTML=' ';
        firstIndex=secondIndex;
        secondIndex=0;
        ctr++ //标记已经点击了一张
    }
    if (finished==length/2) {
        clearTimeout(startTime);
        if(confirm("恭喜你!再来一局?")==true){
            init()
        }
    }
}

</script>

</body>
</html>
JavaScript 实现动态显示表格数据

实例描述:根据用户的选择表格中显示不同的数据
JavaScript 表格小游戏_html_02

源码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>演示文档</title>
    <style type="text/css">
    </style>
</head>
<body>

<h3>动态显示表格数据</h3>

<table style="width: 300px;height: 300px;border: 3px solid green;text-align: center;">
    <script>
        for(var i=0;i<5;i++){
            str_tab='<tr>'
            for(var j=0;j<5;j++){
                str_tab+='<td id='+"td"+(i*5+j+1)+' style="background: orange;">'+'</td>'
            }
            str_tab+='</tr>'
            document.write(str_tab)
        }
    </script>
</table>

<input type="button" value="奇数" onclick="td_num('odd')">
<input type="button" value="偶数" onclick="td_num('even')">
<input type="button" value="全部" onclick="td_num('all')">

<script type="text/javascript">
var arr=new Array();
// var arr=[]等效上句

function $(x){
    return document.getElementById(x);
}

for(var i=0;i<25;i++){
    arr[i]=i+1;
}

// alert(arr)
function write(){
    for(var i=0;i<25;i++){
    	$("td"+(i+1)).innerHTML=arr[i]
    }
}

function td_num(x){
    switch (x){
        case 'odd':
            for(var i=0;i<25;i++){
                if(i%2==0){
                    arr[i]=i+1;
                }else{arr[i]=""}
            }
            break;
        case 'even':
	        for(var i=0;i<25;i++){
	            if(i%2==1){
	                arr[i]=i+1;
	            }else{arr[i]=""}
	        }
            break;
        case 'all':
	        for(var i=0;i<25;i++){
	            arr[i]=i+1;
	        }
        break;
    }
    write()
}
</script>
</body>
</html>

源码解析

1、动态指定表格中每个单元格的 id,然后通过 id 可以获取每个单元格,然后对里面的innerHTML 进行赋值。

2、弄了一个数组,先把要赋值给单元格的 innerHTML 的数据存到数组里面,然后从数组里面批量赋值给单元格的 innerHTML。

3、写了一个便于通过 id 获取元素 element 的函数。

html 标签可以通过各种属性值来传参么?

解答:可以,html 标签可以通过各种属性(例如 id,value 等)来传参,或者是区别不同元素,因为属性可以动态添加啊。

html 如何动态指定元素的 id 属性(除了常规方法)?

解答:通过父亲的 innerHTML属性,标签的那个语句加个 id 属性倒是很容易的。 str_tab+='<td id='+"td"+(i*5+j+1)+' >'+'</td>'

JavaScript 表格小游戏_i++_03
js 中创建数组的两种方法 ?

解答:Array() 对象和 []。var arr=new Array(); var arr=[] 等效上句。

js自定义的通过 id 获取 element 的函数怎么写?

解答:function $(x){ return document.getElementById(x); }

html 中的标签中的事件(比如点击事件)调用的函数如何传参?

解答:直接将参数写进函数即可,比如整形和字符串,字符串加引号,单双引号都行。onclick="td_num('odd')"。function td_num(x){}

标签:function,map,arr,表格,JavaScript,innerHTML,小游戏,str,var
From: https://blog.51cto.com/u_13571520/6046074

相关文章

  • JavaScript 动态表格操作
    阅读目录JavaScript动态创建表格第一种示例第二种示例示例解析表格相关的属性和方法1.1Table对象集合1.2Table对象方法1.3Table对象常用属性1.4T......
  • JavaScript 正则
    阅读目录正则表达式准备工作复习学过的字符串常用操作方法创建正则表达式的两种方法修饰符方括号元字符量词JavaScript实现过滤HTML标签JavaScript验......
  • JavaScript if判断、三元运算符、循环
    阅读目录if判断三元运算符循环结构while循环for循环for循环数组循环字符串if判断letscore=162;if(score>=80){alert("优秀");}elseif(......
  • JavaScript事件冒泡和事件捕获
    阅读目录总结事件冒泡和事件捕获HTML结构需求:鼠标放到li上对应的li背景变灰源码总结它是描述事件触发时序问题的术语。事件捕获指的是从document......
  • Css & JavaScript & jquery 实现选项卡的制作
    阅读目录Css源码源码解析JavaScript源码JavaScript源码解析jQuery源码jQuery源码解析Css源码<!DOCTYPEhtml><htmllang="en"><style></style>......
  • JavaScript 索引、关联、对象数组增删改查循环
    阅读目录索引数组增删改查循环关联数组增循环对象增删改查循环JavaScript中数组元素删除1、length2、delete关键字3、栈方法4、队列方法......
  • JavaScript 运算符数据类型
    阅读目录运算符1、自增运算符2、分别赋值3、求多次方4、js中逻辑运算符数据类型1、数据类型2、强制类型转换运算符1、自增运算符leta=11;aler......
  • JavaScript undefined 与 null 的区别
    阅读目录阐述一、相似性二、历史原因三、最初设计四、目前的用法null表示"没有对象",即该处不应该有值。典型用法是:undefined表示"缺少值",就是此处应该有一......
  • JavaScript 评测代码运行速度
    一、使用performance.now()API在JavaScript中,可以使用performance.now()API来评测代码的运行速度。该API返回当前页面的高精度时间戳,您可以在代码执行前后调用它......
  • 1.3表格表头单元格标签
    一般表头单元格位于表格的第一行或第一列,表头单元格里面的文本内容加粗居中显示,<Ht>标签表示HTML表格的表头部分(table head的缩写)<table><tr><th>姓......