H5汉诺塔小游戏

简介: H5汉诺塔小游戏

汉诺塔小游戏

汉诺塔

<!DOCTYPE html>
<html>
<head>
  <title>汉诺塔游戏</title>
  <style>
    .tower {
    
    
      position: relative;
      display: inline-block;
      width: 200px;
      height: 300px;
      border: 1px solid #000;
      margin: 20px;
    }
    .disk {
    
    
      position: absolute;
      width: 100%;
      height: 20px;
      background-color: #00f;
      transition: left 0.5s, bottom 0.5s; /* 添加 bottom 过渡效果 */
    }
  </style>
</head>
<body>
  <div class="tower" id="tower1"></div>
  <div class="tower" id="tower2"></div>
  <div class="tower" id="tower3"></div>

  <script src="../js/jquery-3.7.0.min.js"></script>
  <script>
    $(document).ready(function() {
    
    
      var numDisks = 3;
      var diskHeight = 20;
      var towerHeight = 300;
      var towerWidth = 200;
      var towerPadding = 20;
      var selectedDisk = null;

      $('.tower').on('click', function() {
    
    
        var currentTower = $(this);

        if (selectedDisk === null) {
    
    
          var topDisk = currentTower.children('.disk').first();
          if (topDisk.length === 0) {
    
    
            return; // 当前柱子上没有盘子可选
          }
          selectedDisk = topDisk.detach();
          selectedDisk.addClass('selected');
        } else {
    
    
          var targetTower = currentTower;
          var targetDisk = currentTower.children('.disk').first();
          if (targetDisk.length === 0 || targetDisk.width() > selectedDisk.width()) {
    
    
            selectedDisk.prependTo(targetTower);
            selectedDisk.removeClass('selected');
            selectedDisk = null;
          } else {
    
    
            return; // 无效移动,目标柱子上有更小的盘子
          }
        }

        // 设置盘子位置
        $('.tower').each(function() {
    
    
          var tower = $(this);
          var disks = tower.children('.disk');
          var numDisks = disks.length;
          disks.each(function(index) {
    
    
            var disk = $(this);
            var bottom = (numDisks - 1 - index) * diskHeight;
            disk.css('bottom', bottom + 'px');
          });
        });

        // 判断是否完成游戏
        if ($('#tower3 .disk').length === numDisks) {
    
    
          console.log('游戏完成!');
          setTimeout(() => {
    
    
            alert("游戏完成!")
          }, 500);
        }
      });

      // 初始化游戏
      function init() {
    
    
        var tower1 = $('#tower1');
        var towerWidthOffset = (towerWidth - towerPadding) / 2;

        for (var i = numDisks; i > 0; i--) {
    
    
          var diskWidth = i * 40;
          var diskLeft = (towerWidth - diskWidth) / 2;
          var disk = $('<div class="disk"></div>').css({
    
    
            width: diskWidth + 'px',
            left: diskLeft + 'px'
          });
          tower1.prepend(disk);
        }

        // 设置初始盘子位置
        $('.tower').each(function() {
    
    
          var tower = $(this);
          var disks = tower.children('.disk');
          var numDisks = disks.length;
          disks.each(function(index) {
    
    
            var disk = $(this);
            var bottom = (numDisks - 1 - index) * diskHeight;
            disk.css('bottom', bottom + 'px');
          });
        });
      }

      init();
    });
  </script>
</body>
</html>
相关文章
|
11月前
|
算法 Java
【洛谷算法题】P1000-超级玛丽游戏【入门1顺序结构】
【洛谷算法题】P1000-超级玛丽游戏【入门1顺序结构】
|
11月前
三子棋小游戏思路及代码实现的详解
三子棋小游戏思路及代码实现的详解
39 0
|
12月前
【动态规划刷题 5】 最小路径和&&地下城游戏
【动态规划刷题 5】 最小路径和&&地下城游戏
|
3月前
|
C++
【洛谷 P1428】小鱼比可爱 题解(循环)
这是一个编程竞赛问题,题目要求编写一个程序来计算每只鱼在其视野内看到的更不可爱的鱼的数量。给定鱼的总数`n`和每只鱼的可爱程度数组`a[]`,输出每个位置的鱼能看到的更不可爱的鱼的数量。 **摘要:** ```markdown 解决一个编程挑战,计算鱼在“比可爱”比赛中左边有多少条更不可爱的鱼。输入包含鱼的总数`n`和每条鱼的可爱度,输出每条鱼眼中更不可爱的鱼数。提供的C++代码通过遍历数组,比较每只鱼的可爱度并累计小于它的数量,然后输出结果。 ``` 这个摘要在240个字符以内,简要概述了问题的背景、任务和解决方案的概要。
32 0
|
3月前
|
存储 算法 数据挖掘
力扣174题动态规划:地下城游戏(含模拟面试)
力扣174题动态规划:地下城游戏(含模拟面试)
|
4月前
|
算法 C语言
每日一题——迷宫问题(I)
每日一题——迷宫问题(I)
|
算法 定位技术 C++
【兔年之兔子走迷宫】 用一个小游戏对回溯法进行实现 | C++
简单的来说,算法就是用计算机程序代码来实现数学思想的一种方法。学习算法就是为了了解它们在计算机中如何演算,以及在当今的信息时代,它们是如何在各个层面上影响我们的日常生活的,从而提高我们的逻辑思维能力和处理实际问题的能力。善用算法、巧用算法,是培养程序设计逻辑的重中之重,许多实际的问题都可用多个可行的算法来解决, 但是要从中找出最优的解决算法却是一项挑战。
530 6
【兔年之兔子走迷宫】 用一个小游戏对回溯法进行实现 | C++
推箱子小游戏(c++实现)
推箱子小游戏(c++实现)
|
算法 测试技术 索引
leetcode每日一题:45. 跳跃游戏 II
leetcode每日一题:45. 跳跃游戏 II
|
算法 索引
leetcode每日一题:55. 跳跃游戏
leetcode每日一题:55. 跳跃游戏