JavaScript 表格小游戏

小鱼儿 2023-10-06 22:23 118阅读 0赞

阅读目录

  • JavaScript 实现表格配对小游戏
    • 源码
  • JavaScript 实现动态显示表格数据
    • 源码
    • 源码解析

JavaScript 实现表格配对小游戏

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

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

源码

在这里插入图片描述

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>演示文档-配对游戏</title>
  6. <style type="text/css">
  7. table{
  8. margin:15px auto 15px;
  9. background: rgba(60,180,100,0.3);
  10. color: blue;
  11. width: 500px;
  12. height: 500px;
  13. }
  14. hr{
  15. width: 600px;
  16. height: 5px;
  17. background: orange;
  18. }
  19. h2{
  20. text-align: center;}
  21. td{
  22. text-align: center;
  23. background: rgba(160,80,10,0.1);
  24. width: 100px;
  25. height: 100px;
  26. }
  27. footer{
  28. margin:0px auto;
  29. text-align: center;
  30. background: rgba(0,100,100,0.2);
  31. padding: 10px;
  32. width: 500px;
  33. }
  34. </style>
  35. </head>
  36. <body>
  37. <h2>配对游戏<hr></h2>
  38. <table>
  39. <script>
  40. var cols=5,rows=4;
  41. for(var i=0;i<rows;i++){
  42. str="<tr>";
  43. for(var j=0;j<cols;j++){
  44. var sid="img"+((cols*i)+j)
  45. str+='<td id="'+sid+'" οnclick="showimg('+((cols*i)+j)+')"'+'>'
  46. str+='</td>'
  47. }
  48. str+="</tr>";
  49. document.write(str)
  50. }
  51. </script>
  52. </table>
  53. <footer>
  54. 用时:<span id="gameTime"></span>&nbsp&nbsp&nbsp
  55. <input type="button" value="开始游戏" onclick="init()">
  56. </footer>
  57. <script type="text/javascript">
  58. var length=cols*rows //表格单元格数目
  59. var map=[] //存储单元格里的内容
  60. var user=[] //存储每个单元格是否可以翻开的状态
  61. var times=0;
  62. var newsatrt;
  63. var firstIndex=0,secondIndex=0;//点击第一张、第二张图片的索引
  64. var ctr=0;
  65. var finished;
  66. function $(x){
  67. return document.getElementById(x)
  68. }
  69. for(var i=0;i<length/2;i++){
  70. map[i]=i;
  71. map[length/2+i]=i
  72. }
  73. // alert(map)
  74. function init(){
  75. for (var i=0;i<length;i++){
  76. $("img"+i).innerHTML=''
  77. user[i]=0;//是否显示图片,0为显示背面
  78. }
  79. // alert(map)
  80. map.sort(function(){
  81. return Math.random()-0.5})
  82. // alert(map)
  83. times=0; //计时器变量清零
  84. $("gameTime").innerHTML=times+'秒'
  85. newsatrt=true; //标记为新开局
  86. }
  87. function showimg(x){
  88. if (newsatrt) {
  89. start()
  90. newsatrt=false;
  91. }
  92. $("img"+x).innerHTML=map[x]
  93. // alert(x)
  94. if (ctr==0) {
  95. ctr++
  96. firstIndex=x //记录第一张图片索引
  97. }else{
  98. if (firstIndex!=x) {
  99. secondIndex=x;//记录第二张图片索引
  100. ctr=0;
  101. check()
  102. }
  103. }
  104. }
  105. function start(){
  106. times+=1
  107. $("gameTime").innerHTML=times+'秒';
  108. setTimeout('start()',1000)
  109. }
  110. function check(){
  111. if (map[firstIndex]==map[secondIndex]) {
  112. finished++;
  113. user[firstIndex]=1;
  114. user[secondIndex]=1;//不能再翻
  115. ctr=0;
  116. }else if(user[firstIndex]==0){
  117. $('img'+firstIndex).innerHTML=' ';
  118. firstIndex=secondIndex;
  119. secondIndex=0;
  120. ctr++ //标记已经点击了一张
  121. }
  122. if (finished==length/2) {
  123. clearTimeout(startTime);
  124. if(confirm("恭喜你!再来一局?")==true){
  125. init()
  126. }
  127. }
  128. }
  129. </script>
  130. </body>
  131. </html>

JavaScript 实现动态显示表格数据

实例描述:根据用户的选择表格中显示不同的数据
在这里插入图片描述

源码

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>演示文档</title>
  6. <style type="text/css">
  7. </style>
  8. </head>
  9. <body>
  10. <h3>动态显示表格数据</h3>
  11. <table style="width: 300px;height: 300px;border: 3px solid green;text-align: center;">
  12. <script>
  13. for(var i=0;i<5;i++){
  14. str_tab='<tr>'
  15. for(var j=0;j<5;j++){
  16. str_tab+='<td id='+"td"+(i*5+j+1)+' style="background: orange;">'+'</td>'
  17. }
  18. str_tab+='</tr>'
  19. document.write(str_tab)
  20. }
  21. </script>
  22. </table>
  23. <input type="button" value="奇数" onclick="td_num('odd')">
  24. <input type="button" value="偶数" onclick="td_num('even')">
  25. <input type="button" value="全部" onclick="td_num('all')">
  26. <script type="text/javascript">
  27. var arr=new Array();
  28. // var arr=[]等效上句
  29. function $(x){
  30. return document.getElementById(x);
  31. }
  32. for(var i=0;i<25;i++){
  33. arr[i]=i+1;
  34. }
  35. // alert(arr)
  36. function write(){
  37. for(var i=0;i<25;i++){
  38. $("td"+(i+1)).innerHTML=arr[i]
  39. }
  40. }
  41. function td_num(x){
  42. switch (x){
  43. case 'odd':
  44. for(var i=0;i<25;i++){
  45. if(i%2==0){
  46. arr[i]=i+1;
  47. }else{
  48. arr[i]=""}
  49. }
  50. break;
  51. case 'even':
  52. for(var i=0;i<25;i++){
  53. if(i%2==1){
  54. arr[i]=i+1;
  55. }else{
  56. arr[i]=""}
  57. }
  58. break;
  59. case 'all':
  60. for(var i=0;i<25;i++){
  61. arr[i]=i+1;
  62. }
  63. break;
  64. }
  65. write()
  66. }
  67. </script>
  68. </body>
  69. </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>'

在这里插入图片描述
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){}

发表评论

表情:
评论列表 (有 0 条评论,118人围观)

还没有评论,来说两句吧...

相关阅读