html实现汉诺塔小游戏

news2024/11/26 21:50:41

文章目录

  • 1.设计来源
    • 汉诺塔由来
    • 1.1 主界面
    • 1.2 游戏规则
    • 1.3 游戏完成界面
  • 2.效果和源码
    • 2.1 动态效果
    • 2.2 源代码
  • 源码下载

作者:xcLeigh
文章地址:https://blog.csdn.net/weixin_43151418/article/details/130606736


html实现汉诺塔小游戏源码 汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。

1.设计来源

2020年8月3日,夏焱以33.039秒的成绩成功打破6层汉诺塔吉尼斯世界纪录。 [5-7]
2021年5月16日,中国龙岩的陈诺以29.328秒的成绩打破了6层汉诺塔吉尼斯世界纪录。 [8]

汉诺塔由来

    法国数学家爱德华·卢卡斯曾编写过一个印度的古老传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片上面。僧侣们预言,当所有的金片都从梵天穿好的那根针上移到另外一根针上时,世界就将在一声霹雳中消灭,而梵塔、庙宇和众生也都将同归于尽。

1.1 主界面

请添加图片描述

实现功能:

  • 1.支持配置圆盘数量:3-8
  • 2.动态加载最小移动次数,当前移动次数
  • 3.支持回退上一步
  • 4.支持电脑帮助完成。

操作说明:
    鼠标点击 圆盘,拖动 圆盘,到其他柱子上,具体操作效果,见下面的动态效果展示

1.2 游戏规则

请添加图片描述
把圆盘由大到小放到第三根柱子。

1.3 游戏完成界面

请添加图片描述
成功后,提示完成步数。

2.效果和源码

2.1 动态效果

简洁的画面,层次分明,游戏体验非常棒,欢迎提出问题一起来探讨。

html实现汉诺塔小游戏

2.2 源代码

这里是主界面的代码,其他图片、js、css等代码,见下面的 源码下载 ,里面有所有代码资源和相关说明。

<html lang="zh">
<head>
	<meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>汉诺塔小游戏 - xcLeigh</title>
	<link rel="icon" type="image/png" href="images/favicon.ico" /> 
	<link rel="stylesheet" type="text/css" href="css/normalize.css" />
	<link rel="stylesheet" type="text/css" href="css/default.css">
	<link rel="stylesheet" href="css/sweet-alert.css">
	<script type="text/javascript" src="js/sweet-alert.min.js"></script>
	<script type="text/javascript" src="js/hanoi.js"></script>
</head>
<body onload="init();" onselectstart="return false" oncontextmenu="return false">
	<div class="htmleaf-container">
		<div class="htmleaf-content">
			<form name="hanoi">
		<div id="title" style="position:absolute;visibility:visible;left:-250px;top:-250px;width:160px;height:20px;color: white; font:bold 20px;text-align:center;">汉诺塔小游戏</div>
		<div id="tower1" class="container" style="left:-250px;top:-250px;width:200px;height:200px" onmousemove="indexTo=1">
		<div id="verttower1" class="towervert" style="left:99px;top:10px;width:3px;height:170px"></div>
		<div id="horiztower1" class="towerhoriz" style="left:0px;top:180px;width:200px;height:2px"></div>
		<div class="tower">第一根柱子</div>
		</div>
		<div id="tower2" class="container" style="left:-250px;top:-250px;width:200px;height:200px" onmousemove="indexTo=2">
		<div id="verttower2" class="towervert" style="left:99px;top:10px;width:3px;height:170px"></div>
		<div id="horiztower2" class="towerhoriz" style="left:0px;top:180px;width:200px;height:2px"></div>
		<div class="tower">第二根柱子</div>
		</div>
		<div id="tower3" class="container" style="left:-250px;top:-250px;width:200px;height:200px" onmousemove="indexTo=3">
		<div id="verttower3" class="towervert" style="left:99px;top:10px;width:3px;height:170px"></div>
		<div id="horiztower3" class="towerhoriz" style="left:0px;top:180px;width:200px;height:2px"></div>
		<div class="tower">第三根柱子</div>
		</div>
		<div id="disk1" class="disk" style="left:-250px;top:-250px;border-radius: 8px; width:50px;height:19px;background-color:orange" onmousedown="initializeDrag(this,event)" onmouseup="dropDisk(this)" title="圆盘 1"></div>
		<div id="disk2" class="disk" style="left:-250px;top:-250px;border-radius: 8px;width:70px;height:19px;background-color:rgb(165, 62, 165)" onmousedown="initializeDrag(this,event)" onmouseup="dropDisk(this)" title="圆盘 2"></div>
		<div id="disk3" class="disk" style="left:-250px;top:-250px;border-radius: 8px;width:90px;height:19px;background-color:indigo" onmousedown="initializeDrag(this,event)" onmouseup="dropDisk(this)" title="圆盘 3"></div>
		<div id="disk4" class="disk" style="left:-250px;top:-250px;border-radius: 8px;width:110px;height:19px;background-color:blue" onmousedown="initializeDrag(this,event)" onmouseup="dropDisk(this)" title="圆盘 4"></div>
		<div id="disk5" class="disk" style="left:-250px;top:-250px;border-radius: 8px;width:130px;height:19px;background-color:green" onmousedown="initializeDrag(this,event)" onmouseup="dropDisk(this)" title="圆盘 5"></div>
		<div id="disk6" class="disk" style="left:-250px;top:-250px;border-radius: 8px;width:150px;height:19px;background-color:yellow" onmousedown="initializeDrag(this,event)" onmouseup="dropDisk(this)" title="圆盘 6"></div>
		<div id="disk7" class="disk" style="left:-250px;top:-250px;border-radius: 8px;width:170px;height:19px;background-color:#080F39" onmousedown="initializeDrag(this,event)" onmouseup="dropDisk(this)" title="圆盘 7"></div>
		<div id="disk8" class="disk" style="left:-250px;top:-250px;border-radius: 8px;width:190px;height:19px;background-color:red" onmousedown="initializeDrag(this,event)" onmouseup="dropDisk(this)" title="圆盘 8"></div>

		<div id="settings" class="container" style="left:-250px;top:-250px;width:280px;">
			<div style="height: 50px;"></div>
		<table>
		<tr><td>圆盘数量</td>
		<td>
		<select name="diskno" style="border:1px solid white; width:100px; border-radius: 5px;background-color: #080F39; color: white;" onchange="newGame(this)" onclick="prevIndex=this.options.selectedIndex">
		<option value="7" selected>3</option>
		<option value="15">4</option>
		<option value="31">5</option>
		<option value="63">6</option>
		<option value="127">7</option>
		<option value="255">8</option>
		</select>
		</td></tr>
		<tr>
			<td>最小移动次数&nbsp;&nbsp;</td>
			<td><input name="minmove" style="border:1px solid #202640; cursor: default; width:100px; border-radius: 5px;background-color: #080F39; color: white;" size="3" value="255" readonly="readonly" /></td>
		</tr>
		<tr>
			<td>你的移动次数</td>
			<td><input name="yourmove" style="border:1px solid #202640; cursor: default; width:100px; border-radius: 5px;background-color: #080F39; color: white;" size="3" value="0" readonly="readonly" /></td>
		</tr>
		<tr>
			<td colspan="2" align="center">
				<input class="btnCss" type="button" name="btnIns" value="游戏说明" onclick="displayIns()" />
				<input class="btnCss" type="button" name="btnRes" value="重新开始" onclick="newGame(document.hanoi.diskno)" />
				<input class="btnCss" type="button" name="btnUndo" value="回退一步" onclick="unDo(this)" disabled="disabled" />
				<input class="btnCss" type="button" name="btnSolve" value="Solve" onclick="solve(this)" />
			</td>
		</tr>
		</table>
		<p>&nbsp;</p>
		</div>
	</form>
		</div>
	</div> 
	<!-- 四个角链接,底部说明 -->
	<div style="position:absolute;left:0;top:0; width:80px;height:80px;">
		<div  style="position:absolute;left:0;bottom:0; width:80px;height:80px;text-align:center;line-height:80px;color:#0F85F4;z-index:999;">
		<a href="https://blog.csdn.net/weixin_43151418/article/details/127635252" title="html实现飞机小游戏(源码)" target="_blank" style="text-decoration:none; font-weight:bold">打飞机</a>
		</div>
		  <div class='classScale' style='display:flex; justify-content: center; align-items: center; width:80px;height:80px;border-radius:50%; opacity: 0.5;'>
		  </div>
		  <div class='classScale1' style='position:relative; top: -80px;width:80px;height:80px;border-radius:50%; opacity: 0.5;'>
		  </div>
	  </div>
	  <div style="position:absolute;right:0;top:0; width:80px;height:80px;">
		<div  style="position:absolute;left:0;bottom:0; width:80px;height:80px;text-align:center;line-height:80px;color:#0BABC4;z-index:999;">
			<a href="https://blog.csdn.net/weixin_43151418/article/details/127631871" title="html实现贪吃蛇游戏(源码)" target="_blank" style="text-decoration:none; font-weight:bold">贪吃蛇</a>
		</div>
		  <div class='classScale' style='display:flex; justify-content: center; align-items: center; width:80px;height:80px;border-radius:50%; opacity: 0.5;'>
		  </div>
		  <div class='classScale1' style='position:relative; top: -80px;width:80px;height:80px;border-radius:50%; opacity: 0.5;'>
		  </div>
	  </div>
	  <div style="position:absolute;right:0;bottom:0; width:80px;height:80px;">
		<div  style="position:absolute;left:0;bottom:0; width:80px;height:80px;text-align:center;line-height:80px;color:red;z-index:999;">
			<a href="https://blog.csdn.net/weixin_43151418/article/details/127619801" title="html制作好看的五子棋(源码)" target="_blank" style="text-decoration:none; font-weight:bold">五子棋</a>
		</div>
		  <div class='classScale' style='display:flex; justify-content: center; align-items: center; width:80px;height:80px;border-radius:50%; opacity: 0.5;'>
		  </div>
		  <div class='classScale1' style='position:relative; top: -80px;width:80px;height:80px;border-radius:50%; opacity: 0.5;'>
		  </div>
	  </div>
	  <div style="position:absolute;left:0;bottom:0; width:80px;height:80px;">
		<div  style="position:absolute;left:0;bottom:0; width:80px;height:80px;text-align:center;line-height:80px;color:orange;z-index:999;">
			<a href="https://blog.csdn.net/weixin_43151418/article/details/127886480" title="html实现扫雷小游戏(附源码)" target="_blank" style="text-decoration:none; font-weight:bold;">扫雷</a>
		</div>
		  <div class='classScale' style='display:flex; justify-content: center; align-items: center; width:80px;height:80px;border-radius:50%; opacity: 0.5;'>
		  </div>
		  <div class='classScale1' style='position:relative; top: -80px;width:80px;height:80px;border-radius:50%; opacity: 0.5;'>
		  </div>
	  </div>
	  <div  style="position:absolute;left:0;bottom:0; width:100%;height:50px; line-height:40px; text-align:center; z-index:99;">
		<a href="https://blog.csdn.net/weixin_43151418" target="_blank" style="text-decoration:none; font-weight:bold;color:white;">xcLeigh | 星空系列 | 汉诺塔小游戏</a>
	  </div>
</body>
</html>

源码下载

html实现汉诺塔小游戏(源码) 点击下载
在这里插入图片描述


     💞 关注博主 带你实现畅游前后端

     🏰 加入社区 带你体验马航不孤单

     💯 神秘个人简介 带你体验不一样得介绍

     🎀 酷炫邀请函 带你体验高大上得邀请


     ① 🉑提供云服务部署(有自己的阿里云);
     ② 🉑提供前端、后端、应用程序、H5、小程序、公众号等相关业务;
     如🈶合作请联系我,期待您的联系。
    :本文撰写于CSDN平台,作者:xcLeigh(所有权归作者所有),https://blog.csdn.net/weixin_43151418,如果相关下载没有跳转,请查看这个地址,相关链接没有跳转,皆是抄袭本文,转载请备注本文原地址。


     亲,码字不易,动动小手,欢迎 点赞 ➕ 收藏,如 🈶 问题请留言(评论),博主看见后一定及时给您答复,💌💌💌


原文地址:https://blog.csdn.net/weixin_43151418/article/details/130606736(防止抄袭,原文地址不可删除)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/513426.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构-链表(详解)

前言&#xff1a;内容包括&#xff1a;链表的分类&#xff0c;无头单向非循环链表的增删查改的实现&#xff0c;带头双向循环链表的增删查改的实现 目录 链表的分类 1. 单向或者双向 ​编辑 2. 带头或者不带头 3. 循环或者非循环 无头单向非循环链表&#xff1a; ​编辑…

造梦日记 Printidea 用户手册

*Hi 造梦日记* 欢迎来到造梦日记的空间&#xff5e; 造梦日记Printidea是一款基于AI算法、输入文字或图片即可生成高质量图片的工具&#xff0c;由西湖大学深度学习实验室和西湖心辰联合出品&#xff0c;超强算力&#xff0c;0.8秒出图&#xff0c;目前支持微信小程序、网页端…

边缘计算盒子的特点?边缘计算盒子适用于什么场景

边缘计算盒子&#xff08;Edge Computing Box&#xff09;是一种用于边缘计算的硬件设备&#xff0c;它通常是一个小型的计算设备&#xff0c;具备一定的计算能力和存储资源&#xff0c;并且能够连接到网络。边缘计算盒子的主要目的是在物联网&#xff08;IoT&#xff09;和分布…

续ShaderEditor、Inspector之后又一成功爆品,2周260+单!

01 前言 大家好&#xff0c;我是98K&#xff01;五一前&#xff0c;我上架 Cocos Store 的『高性能割草框架』增加 Cocos Creator 2.4.x 引擎&#xff0c;已经支持的老铁可免费更新&#xff01; 后续的更新计划是&#xff1a;完善2D游戏案例、增加3D案例、支持RVO和群聚&#…

Android WebView 长按弹出的文本选择器如何监听滑动和如何弹出完全自定义的菜单栏

在这次改版中&#xff0c;h5小伙伴与我沟通说要把长按选择改用成原生的拉选框&#xff0c;之前我也没搞过呀&#xff0c;开始研究吧。 怎么研究呀&#xff0c;当然是百度一下了。 百度了一天总结如下&#xff1a; 好多文章都是告诉你如何在系统的基础上来修改自己的文字和点…

vue2 框架运行原理剖析系列(二)之 组件挂载$mount神秘之旅!!!

一、vue组件挂载 1.1 上一篇文章中&#xff0c;介绍到组件执行 mountComponent 函数&#xff0c;本文对此展开详细的讲解。 1.2 调用改方法的位置在于entry-runtime-with-compiler.js 的Vue.prototype.$mount&#xff0c;具体代码如下&#xff1a; 其中&#xff0c; &#xff…

【图像融合】Dif-Fusion:基于扩散模型的红外/可见图像融合方法

文章目录 摘要一、前言二、相关工作1.红外线和可见光的图像融合2.扩散模型&#xff08;可见博主之前的博客&#xff09; 三、方法1.红外线和可见光图像的联合扩散2*.多通道扩散特征的融合 四、实验1.实验设置2.融合性能分析&#xff08;效果展示&#xff09;3.泛化实验 总结 摘…

通知短信 API 技术细节以及发送流程机制原理解析

引言 短信是一种简单、直接、高效的通信方式&#xff0c;被广泛应用于各个领域。在移动互联网时代&#xff0c;短信成为了客户服务、政府通知、公共服务等方面的重要工具。为了更好地利用短信这种通信方式&#xff0c;通知短信 API应运而生。短信API可以帮助企业、政府和应用程…

RK3588旗舰32T人工智能多网口边缘智能网关交换机

32T边缘智能网关发布&#xff0c;助力多行业数字化升级&#xff0c;运维降本增效&#xff0c;搭载RK3588旗舰芯 搭载瑞芯微RK3588芯片的边缘智能网关XM-RK3588&#xff0c;算力可扩展至32T&#xff0c;适用于电力能源、智慧交通、智慧城市、智慧安防、智慧医疗、工业互联网等领…

前端的加密和解密,crypto-js的应用,AES / RSA / md5

每日鸡汤&#xff1a;每个你想学习的瞬间&#xff0c;都是未来你的向自己求救 内容预警*****新手内容&#xff0c;自己学习总结用****大佬请绕道 之前看https原理&#xff0c;看到对称加密和非对称加密&#xff0c;各种加密方法&#xff0c;看得云里雾里&#xff0c;即便是总结…

报错main.py: error: unrecognized arguments: stack_size 4 1001,770,123

运行从GitHub上面下载下来的代码时&#xff0c;按照作者提供的输入命令输入后报错&#xff1a; main.py: error: unrecognized arguments: stack_size 4 1001,770,123 将报错的部分在网上百度&#xff0c;找到部分方法&#xff0c;得出理解&#xff1a;输入的命令是出错的&am…

【RS专题】怎么知道你遇到的是rs风控

本文属于技术分享、如有侵权可联系本人下架 最简单的方法就是查看cookie,在控制台输入【document.cookie】 如果出现如上图中有【xxxxxxT】或者【xxxxxxP】的,并且它的值都为英文数字和下滑线加点,那么基本可以确定这个网站用了rs反爬 什么是rs反爬,下面抄一段内容 瑞数动…

【瑞数RS专题】首层代码分析,和获取eval层代码,cookie反爬虫详解

如有侵权、联系本人下架 以下面两个网站为例 1.aHR0cDovL3d3dy5mYW5nZGkuY29tLmNuL25ld19ob3VzZS9uZXdfaG91c2VfZGV0YWlsLmh0bWw= 2.aHR0cHM6Ly93d3cubm1wYS5nb3YuY24veWFvd2VuL3lwamd5dy9pbmRleC5odG1s 首先明确一下目标,我们要先获取网页200的源代码,RS5代第一次响应为…

unittest自动化测试框架讲解以及实战

为什么要学习unittest 按照测试阶段来划分&#xff0c;可以将测试分为单元测试、集成测试、系统测试和验收测试。单元测试是指对软件中的最小可测试单元在与程序其他部分相隔离的情况下进行检查和验证的工作&#xff0c;通常指函数或者类&#xff0c;一般是开发完成的。 单元…

软件架构:软件架构设计的三个维度

架构设计是一个非常大的话题&#xff0c;不管写几篇文章&#xff0c;接触到的始终只是冰山一角&#xff0c;更多的是实践中去体会。这篇文章主要介绍面向对象OO、面向方面AOP和面向服务SOA这三个要素在架构设计中的位置与作用。   架构设计有三个维度&#xff0c;或者说是我们…

文案改写神器软件-文案改编神器

文案改写神器软件 文案改写神器软件通常致力于通过人工智能技术将一篇已有文案进行改写和改编&#xff0c;以达到复用或优化的目的。以下是文案改写神器软件通常可以做的事情&#xff1a; 改写原文&#xff1a;文案改写神器可以通过自定义规则、语法分析和文本相似性匹配等功能…

设计模式之【组合模式】,树形结构的完美解决方案

文章目录 一、什么是组合模式1、组合模式三大角色2、组合模式应用场景3、组合模式注意事项和细节 二、透明组合模式1、学院院系案例2、透明组合模式总结 三、安全组合模式1、linux目录系统案例2、安全组合模式总结 四、源码中使用的组合模式1、HashMap2、ArrayList3、MyBatis 一…

跨平台应用开发进阶(六十一):uni-app 跨平台技术开发框架可行性调研

文章目录 一、流程类二、研发类(uni-app框架)三、心得分享(研发踩坑&uni-app踩坑)四、拓展阅读 一、流程类 IOS和安卓企业开发者账户申请流程(申请渠道、需要提供的相关证明、审核时间等)。 答&#xff1a;uni-app使用HBuliderX作为开发IDE,支持邮箱、密码方式注册&#x…

95、Image Restoration with Mean-Reverting Stochastic Differential Equations

简介 主页&#xff1a;https://github.com/Algolzw/image-restoration-sde 扩散模型终于在去噪、超分辨率等应用了。 这是一种基于随机微分方程的通用图像恢复方法&#xff0c;关键结构包括均值还原SDE&#xff0c;该SDE将高质量图像转换为具有固定高斯噪声的平均状态的降级…

怎么压缩png图片的大小?4个简单高效工具分享

怎么压缩png图片的大小&#xff1f;大家都知道jpg和png是目前电脑上最主流的两大图片文件格式&#xff0c;jpg图片的体积比较小&#xff0c;因为它属于有损压缩的图片格式&#xff0c;而png图片的体积相对就要大很多了&#xff0c;因为png属于无损压缩的图片格式。大家也同样知…