经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » JavaScript » 查看文章
js实现连连看游戏
来源:jb51  时间:2022/5/9 14:22:20  对本文有异议

本文实例为大家分享了js实现连连看游戏的具体代码,供大家参考,具体内容如下

  1. <!DOCTYPE html>
  2. <html>
  3. ?? ?<head>
  4. ?? ??? ?<meta charset="utf-8" />
  5. ?? ??? ?<style type="text/css">
  6. ?? ??? ??? ?*{
  7. ?? ??? ??? ??? ?margin: 0;
  8. ?? ??? ??? ??? ?padding: 0;
  9. ?? ??? ??? ?}
  10. ?? ??? ??? ?ul{
  11. ?? ??? ??? ??? ?width: 400px;
  12. ?? ??? ??? ??? ?height: 400px;
  13. ?? ??? ??? ??? ?border: 1px solid goldenrod;
  14. ?? ??? ??? ??? ?margin: 30px auto;
  15. ?? ??? ??? ??? ?list-style: none;
  16. ?? ??? ??? ??? ?display: flex;
  17. ?? ??? ??? ??? ?flex-wrap: wrap;
  18. ?? ??? ??? ??? ?justify-content: space-between;
  19. ?? ??? ??? ?}
  20. ?? ??? ??? ?li{
  21. ?? ??? ??? ??? ?width: 100px;
  22. ?? ??? ??? ??? ?height: 100px;
  23. ?? ??? ??? ??? ?border: 1px solid goldenrod;
  24. ?? ??? ??? ??? ?text-align: center;
  25. ?? ??? ??? ??? ?line-height: 100px;
  26. ?? ??? ??? ??? ?font-size: 30px;
  27. ?? ??? ??? ??? ?/*怪异盒模型*/
  28. ?? ??? ??? ??? ?box-sizing: border-box;
  29. ?? ??? ??? ?}
  30. ? ? ?
  31. ?? ??? ?</style>
  32. ?? ??? ?<title></title>
  33. ?? ?</head>
  34. ?? ?<body>
  35. ?? ??? ?
  36. ?? ??? ?<ul>
  37. ?? ??? ??? ?<li></li>
  38. ?? ??? ??? ?<li></li>
  39. ?? ??? ??? ?<li></li>
  40. ?? ??? ??? ?<li></li>
  41. ?? ??? ??? ?<li></li>
  42. ?? ??? ??? ?<li></li>
  43. ?? ??? ??? ?<li></li>
  44. ?? ??? ??? ?<li></li>
  45. ?? ??? ??? ?<li></li>
  46. ?? ??? ??? ?<li></li>
  47. ?? ??? ??? ?<li></li>
  48. ?? ??? ??? ?<li></li>
  49. ?? ??? ??? ?<li></li>
  50. ?? ??? ??? ?<li></li>
  51. ?? ??? ??? ?<li></li>
  52. ?? ??? ??? ?<li></li>
  53. ?? ??? ?</ul>?? ??? ?
  54. ?? ?</body>
  55. </html>
  56.  
  57. <script type="text/javascript">
  58. ?? ?//1.获取标签
  59. ?? ?var liArray = document.getElementsByTagName("li");
  60. ?? ?
  61. ?? ?//2.定义变量
  62. ?? ?var numArray = [];?? ?
  63. ?? ?
  64. ?? ?//3.封装函数
  65. ?? ?//随机数
  66. ?? ?function randomNum(min, max){
  67. ?? ??? ?return Math.floor(Math.random() * (max - min + 1) + min);
  68. ?? ?}
  69. ?? ?//随机颜色
  70. ?? ?function randomColor(){
  71. ?? ??? ?var red = randomNum(0, 255);
  72. ?? ??? ?var green = randomNum(0, 255);
  73. ?? ??? ?var blue = randomNum(0, 255);
  74. ?? ??? ?return "rgb(" + red + "," + green + "," + blue + ")";
  75. ?? ?}
  76. ?? ?
  77. ?? ?//封装函数 用于填满数组
  78. ?? ?function setNumberArray(){
  79. ?? ??? ?//16个数 两两相等
  80. ?? ??? ?for(var i = 0; i < 8; i++){
  81. ?? ??? ??? ?var temp = randomNum(30, 90);
  82. ?? ??? ??? ?//卡着!!一旦随机数已经出现过!就重新再取数字!
  83. ?? ??? ??? ?//标记 ?查看是否可用
  84. ?? ??? ??? ?var isExits = false;//默认希望temp不存在
  85. ?? ??? ??? ?//经过for循环遍历对比
  86. ?? ??? ??? ?for(var j = 0; j < numArray.length; j++){
  87. ?? ??? ??? ??? ?if(temp == numArray[j]){
  88. ?? ??? ??? ??? ??? ?//随机数已经出现过了!
  89. ?? ??? ??? ??? ??? ?isExits = true;
  90. ?? ??? ??? ??? ??? ?break;//结束 for..j循环
  91. ?? ??? ??? ??? ?}
  92. ?? ??? ??? ?}
  93. ?? ??? ??? ?//for..j结束 ?查看isExits的标记状态
  94. ?? ??? ??? ?if(isExits == false){
  95. ?? ??? ??? ??? ?//随机数可用
  96. ?? ??? ??? ??? ?numArray.push(temp);
  97. ?? ??? ??? ??? ?numArray.push(temp);
  98. ?? ??? ??? ?}else{
  99. ?? ??? ??? ??? ?i--; //此次循环失效!i-- 再来一次!!
  100. ?? ??? ??? ?}
  101. ?? ??? ??? ?
  102. ?? ??? ??? ?
  103. ?? ??? ?}
  104. ?? ??? ?//循环结束 ? 16个数字已经进入数组中
  105. ?? ??? ?console.log(numArray);
  106. ?? ??? ?//打乱数组?? ?
  107. ?? ??? ?crash(numArray);
  108. ?? ??? ?console.log(numArray);
  109.  
  110. ?? ??? ?
  111. ?? ?}
  112. ?? ?//调用函数
  113. ?? ?setNumberArray();
  114. ?? ?//封装打乱数组的函数
  115. ?? ?function crash(arr){
  116. ?? ??? ?for(var i = 0; i < 15; i++){
  117. ?? ??? ??? ?var n1 = randomNum(0, 15);
  118. ?? ??? ??? ?//16个元素,下标是0---15
  119. ?? ??? ??? ?var n2 = randomNum(0, 15);
  120. ?? ??? ??? ?if(n1 != n2){
  121. ?? ??? ??? ??? ?var t = arr[n1];
  122. ?? ??? ??? ??? ?arr[n1] = arr[n2];
  123. ?? ??? ??? ??? ?arr[n2] = t;
  124. ?? ??? ??? ?}?? ?
  125. ?? ??? ?}
  126. ?? ??? ?
  127. ?? ?}
  128. ?? ?
  129. ?? ?//封装函数 用于设置li标签
  130. ?? ?function setLiArray(){
  131. ?? ??? ?for(var i = 0; i < liArray.length; i++){
  132. ?? ??? ??? ?//赋值文本 ?li的个数和数字个数一致! 所以下标也一致!
  133. ?? ??? ??? ?liArray[i].innerHTML = numArray[i];
  134. ?? ??? ??? ?//设置字体颜色随机
  135. ?? ??? ??? ?liArray[i].style.color = randomColor();
  136. ?? ??? ??? ?//设置li的背景颜色
  137. ?? ??? ??? ?liArray[i].style.backgroundColor = randomColor();
  138. ?? ??? ?}
  139. ?? ?}
  140. ?? ?//调用函数
  141. ?? ?setLiArray();
  142. ?? ?
  143. ?? ?//--------------------------------
  144. ?? ?//给li添加点击事件
  145. ?? ?//专门定义一个数组 ?来存储点击的li标签
  146. ?? ?var arr = [];
  147. ?? ?for(var i = 0; i < liArray.length; i++){
  148. ?? ??? ?liArray[i].onclick = function(){
  149. ?? ??? ??? ?arr.push(this);
  150. ?? ??? ??? ?console.log(arr);
  151. ?? ??? ?
  152. ?? ??? ?//两个就得判断
  153. ?? ??? ?if(arr.length == 2){
  154. ?? ??? ??? ?//不能重复点击一个标签且点击的两个标签值还得一样
  155. ?? ??? ??? ?if(arr[0] != arr[1] && arr[0].innerHTML == arr[1].innerHTML){
  156. ?? ??? ??? ??? ?//消除成功!
  157. ?? ??? ??? ??? ?arr[0].style.visibility = "hidden";
  158. ?? ??? ??? ??? ?arr[1].style.visibility = "hidden";
  159. ?? ??? ??? ?}
  160. ?? ??? ??? ?
  161. ?? ??? ??? ?//在这里 ?只要arr中存储了两个li ?就清空 ?为下次存储li做准备
  162. ?? ??? ??? ?arr = [];
  163. ?? ??? ?}
  164. ?? ??? ?}
  165. ?? ?}
  166.  
  167. </script>

运行结果:

点两个数字相同的棋子:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号