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>
相关文章
|
7月前
|
安全 C++ Python
小游戏实战-Python实现石头剪刀布+扫雷小游戏
小游戏实战-Python实现石头剪刀布+扫雷小游戏
108 0
|
算法 Java
【洛谷算法题】P1000-超级玛丽游戏【入门1顺序结构】
【洛谷算法题】P1000-超级玛丽游戏【入门1顺序结构】
三子棋小游戏思路及代码实现的详解
三子棋小游戏思路及代码实现的详解
71 0
|
1月前
|
人工智能 BI C++
约瑟夫生者死者小游戏
约瑟夫生者死者小游戏。
101 59
|
6月前
小游戏:三子棋的代码实现
小游戏:三子棋的代码实现
39 3
|
6月前
|
C++
【洛谷 P1428】小鱼比可爱 题解(循环)
这是一个编程竞赛问题,题目要求编写一个程序来计算每只鱼在其视野内看到的更不可爱的鱼的数量。给定鱼的总数`n`和每只鱼的可爱程度数组`a[]`,输出每个位置的鱼能看到的更不可爱的鱼的数量。 **摘要:** ```markdown 解决一个编程挑战,计算鱼在“比可爱”比赛中左边有多少条更不可爱的鱼。输入包含鱼的总数`n`和每条鱼的可爱度,输出每条鱼眼中更不可爱的鱼数。提供的C++代码通过遍历数组,比较每只鱼的可爱度并累计小于它的数量,然后输出结果。 ``` 这个摘要在240个字符以内,简要概述了问题的背景、任务和解决方案的概要。
68 0
|
7月前
|
人工智能 C语言
三子棋小游戏
三子棋小游戏
|
7月前
|
算法 JavaScript Java
html+css+js实现打砖块小游戏
html+css+js实现打砖块小游戏
132 0
|
7月前
|
算法 C语言
三子棋小游戏(可改棋盘大小)
三子棋小游戏(可改棋盘大小)
81 0
《蓝桥杯每日一题》递推·AcWing 3777. 砖块
《蓝桥杯每日一题》递推·AcWing 3777. 砖块
80 0

相关实验场景

更多