• 原生js做打地鼠游戏


               抱歉素材有点难找,这次的学习重点是在JS的实现,梳理一下打地鼠的实现逻辑,主要分为三个主要功能函数。

    • 开始游戏:对分数、并根据游戏难度对游戏的倒计时和延迟进行初始化之后,利用setInterval定时器Math.random随机函数实现地鼠间隔一定时间随机出现在方块中的位置。其中表格可以使用table布局或者网格布局。
    • 打地鼠:为了避免多次点击多次计算得分,用一个标志位来标志第一次点击,如果当前点击方块的itemid对应的方框里面有地鼠的样式,则得分+1
    • 结束游戏:还原表格的布局之后将计算的得分反馈给用户

    大概的展示如下

           

    代码如下:

    1. var startGame;//计时器
    2. var score = 0;//总分
    3. var time;//倒计时
    4. var timeVal;//时间间隔
    5. var curr_td = '';
    6. //难度改变,对应其实分数改变
    7. function changeTimeValue(){
    8. var diff = document.getElementById("diffculty").value;
    9. if(diff == 'high'){
    10. document.getElementById("time").value = 30;
    11. }else if(diff == 'normal'){
    12. document.getElementById("time").value = 60;
    13. }else{
    14. document.getElementById("time").value = 120;
    15. };
    16. }
    17. //开始游戏
    18. function showMouse(){
    19. score = 0;//总分
    20. var diff = document.getElementById("diffculty").value;
    21. if(diff == 'high'){
    22. time = 30;
    23. timeVal = 500;
    24. }else if(diff == 'normal'){
    25. time = 60;
    26. timeVal = 1000;
    27. }else{
    28. time = 120;
    29. timeVal = 2000;
    30. }
    31. //开始游戏之后禁用开始游戏和选择难度
    32. document.getElementById("start").disabled = true;
    33. document.getElementById("diffculty").disabled = true;
    34. startGame = window.setInterval(function(){
    35. //清空所有表格里的img
    36. var itemArr = document.getElementsByTagName('td');
    37. for (var i = 0; i < itemArr.length; i++) {
    38. itemArr[i].style.backgroundColor = '#00ff35';
    39. itemArr[i].innerHTML = '';
    40. };
    41. //生成一个1~25的随机数
    42. var mouse = parseInt(Math.random()*25+1);
    43. var index = 'item_'+mouse;
    44. time = time - 1;
    45. document.getElementById("time").value = time;
    46. if(time <= 0){
    47. document.getElementById("score").value = 0;
    48. changeTimeValue();
    49. window.clearInterval(startGame);
    50. alert('游戏结束,你的得分是'+score);
    51. //游戏结束之后重新启用开始游戏和选择难度
    52. document.getElementById("start").disabled = false;
    53. document.getElementById("diffculty").disabled = false;
    54. return false;
    55. }
    56. //操作dom
    57. document.getElementById(index).style.backgroundColor = '#ffffff';
    58. document.getElementById(index).innerHTML = '';
    59. },timeVal);
    60. };
    61. //停止游戏
    62. function stop(){
    63. var itemArr = document.getElementsByTagName('td');
    64. window.clearInterval(startGame);
    65. for (var i = 0; i < itemArr.length; i++) {
    66. itemArr[i].style.backgroundColor = '#00ff35';
    67. itemArr[i].innerHTML = '';
    68. };
    69. document.getElementById("score").value = 0;
    70. changeTimeValue();
    71. alert('游戏结束,你的得分是'+score);
    72. //点击停止结束之后重新启用开始游戏和选择难度
    73. document.getElementById("start").disabled = false;
    74. document.getElementById("diffculty").disabled = false;
    75. };
    76. //打地鼠
    77. function bump(itemid){
    78. //防止多次点击
    79. if(curr_td == itemid){
    80. return false;
    81. };
    82. curr_td = itemid;
    83. var itemId = 'item_' + itemid;
    84. //var curr_item = document.getElementById('itemId');
    85. if(document.getElementById(itemId).innerHTML != ''){
    86. score = score + 1;
    87. document.getElementById("score").value = score;
    88. };
    89. }

  • 相关阅读:
    MySQL之创建高性能的索引(十二)
    深入研究Android内存
    Cadence orcad 原理图导出带书签目录的办法
    视觉SLAM ch5——相机与图像
    《Android Studio开发实战 从零基础到App上线(第3版)》出版后记
    [LeetCode解题报告] 1738. 找出第 K 大的异或坐标值
    Linux安装Mysql主从集群(图文解说详细版)
    stm32之1602+DHT11+继电器
    校园广播站人员和节目管理系统
    DOTA-PEG-葡萄糖 DOTA-葡萄糖
  • 原文地址:https://blog.csdn.net/qq_42794545/article/details/134424151