眼力夺宝小游戏

实现三个盒子随机两两交换猜盒子的游戏

实现效果如下

实现方法及完整代码如下

<!DOCTYPE html>
<html><head><title>眼力夺宝</title><script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.4.2.min.js"></script>
</head><body><p>游戏规则:在三个奖励里面点击选择一个,记住它所在的盒子里,在一系列交换后如果猜对了盒子即获得奖励,猜错则没有。</p><input id="btn1" type="button" onclick="swap()" value="开始" /><input id="btn2" type="button" onclick="reswap()" value="重新开始" /><div class="box" id="div1"><span class="font">5元现金</span></div><div class="box" id="div2"><span class="font">20元代金券</span></div><div class="box" id="div3"><span class="font">10元运费券</span></div><div id="remind"></div><script>// 全局变量:box保存点击的盒子标签,chooseID记住开始选择的盒子id,isChoose是否已经选择var box;var chooseID = '';var isChoose = false;$(function() {// 点击盒子事件$('.box').click(function(e) {if (!isChoose) {// 当还没有选择时if (e.target.id == '') {// 当点击的是div里的文字,找到文字的父元素div,改变div样式,显示文字box = $(e.target).parent()[0]var id = box.id;$(box).addClass('choose');$('.font').show();} else {// 当点击的是div,改变div样式,显示文字box = e.target;var id = box.id;$(box).addClass('choose');$('.font').show();}if (chooseID == '') {// 第一次选择,记住此idchooseID = id;} else {// 第二次选择,判断是否与第一次id相同if (chooseID == id) {$('#remind').text('恭喜你猜对啦!获得' + $($(box).children()[0]).text());// 判断完后将chooseID置空下次使用chooseID == '';} else {$('#remind').text('很遗憾你猜错了!');chooseID == '';}}isChoose = true;}})});function swap() {//点击开始,开始随机两两交换,将字隐藏,样式变回之前的样式$('.box').removeClass('choose');var font = $('.font');font.hide();//按钮置灰var btn1 = $('#btn1');var btn2 = $('#btn2');btn1.attr("disabled", "disabled");btn2.attr("disabled", "disabled");//count保存交换的次数var count = 0;// 定义随机交换次数6~10(可配置)var randomCount = Math.floor(Math.random() * 6 + 10);// setInterval循环执行交换var myTimer = setInterval(function() {// 随机产生0、1、2三个数,用于指明哪两个盒子交换,具体方法见judge函数var num = Math.floor(Math.random() * 2);var randomarr = judge(num);var div1 = $('#div1'),div2 = $('#div2'),div3 = $('#div3');// 获取随机出来的两个divvar obj1 = eval('div' + randomarr[0])var obj2 = eval('div' + randomarr[1])//获取两个盒子的位置var p1 = obj1.offset(),p2 = obj2.offset();//交换两个盒子位子动画obj1.animate(p2, 140);obj2.animate(p1, 140);//执行一次交换count+1count++;//当count=规定的次数时,清理定时器,打开重新开始按钮if (count == randomCount) {clearInterval(myTimer);//设置定时器等最后一个动画执行完成后才打开重新开始按钮setTimeout(function() {btn2.removeAttr('disabled');}, 140)}}, 280)//isChoose置为false,即不可再次点击盒子,保证每次能点一个isChoose = false;}function reswap() {//打开按钮,所有样式状态回到初始状态$('#btn1').removeAttr('disabled');$('.box').removeClass('choose');$('.font').show();$('#remind').text('');chooseID = '';isChoose = false;}//judge函数根据传入的的随机数0~2返回三种数组,函数根据返回的两个值,确定哪两个盒子交换位子//规定x=0:盒子1和盒子2交换,x=2:盒子1和盒子2交换,x=3:盒子1和盒子2交换function judge(x) {switch (x) {case 0:return [1, 2];break;case 1:return [1, 3];break;case 2:return [2, 3];break;}}</script><style>/*定义好三个盒子的初始位置*/#div1,#div2,#div3 {width: 70px;height: 70px;padding: auto;position: absolute;top: 200px;left: 200px;background-color: orange;line-height: 70px;text-align: center;font-size: 13px;}#div2 {top: 300px;left: 100px}#div3 {top: 300px;left: 300px}.choose {transform: scale(1.5);}</style>
</body></html>

代码可能有更好的写法,以上代码仅供参考

[Jquery]实现三个盒子两两交换的考眼力游戏相关推荐

  1. TCP 的三次握手+两次交换+四次挥手

    目录 1.TCP 的三次握手+两次交换+四次挥手 1.1.三次握手 1.1.1.流程 1.1.2.两次握手为什么不可以? 1.1.3.第一次握手是否可以携带数据? 1.1.4.第二次握手是否可以携带数 ...

  2. 左神讲算法——异或的高级操作(两数交换+经典面试题)

    目录 1. 异或的性质 2. 两数交换 3. 经典面试例题 参考链接:2021最新左神数据结构算法全家桶 1. 异或的性质 异或可以看成相同为1,不同为0:也可以看作无进位相加,有奇数个1则结果为1, ...

  3. 23. Leetcode 24. 两两交换链表中的节点 (链表-基础操作类-交换链表)

    给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点.你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换).示例 1:输入:head = [1,2,3,4] 输出:[2,1,4 ...

  4. LeetCode-链表-24. 两两交换链表中的节点

    24. 两两交换链表中的节点 思路:使用一个头节点,然后用cur指针指向头 /*** Definition for singly-linked list.* struct ListNode {* in ...

  5. leetcode24. 两两交换链表中的节点(思路+解析)

    一:题目 二:思路 思路: 1.分析题意 这是相邻结点进行交换 如果是4个结点 那么1和2交换 3和4交换 如果是3个结点 那么就1和2进行交换 3不动 2.这里我们定义一个虚拟头节点方便操作,我们只 ...

  6. c++ std 方法 取两个数的较大_【数据结构C++】两数交换(4种方法)

    一.语言:C++ 二.内容:通过函数调用实现两个数的交换 三.方法: 正常函数交换 引用类型的函数交换 指针类型的函数交换 宏函数定义交换(不常见) #include <iostream> ...

  7. LeetCode 24.两两交换链表中的节点 C语言

    题目 24.两两交换链表中的节点 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表. 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. 示例: 给定 1->2->3- ...

  8. 24. 两两交换链表中的节点-两两反转链表-LeetCode

    一.题目 二.思路 1.采用递归的方式 2.可以通过递归的方式实现两两交换链表中的节点. 递归的终止条件是链表中没有节点,或者链表中只有一个节点,此时无法进行交换. 如果链表中至少有两个节点,则在两两 ...

  9. C++ 两两交换链表中的节点

    C++ 两两交换链表中的节点   给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点.你必须在不修改节点内部的值的情况下完成本题(即只能进行节点交换). 示例1 输入:head = [1, ...

最新文章

  1. PHP之PHP文件引用详解
  2. 全球首届“AI球球大作战:Go-Bigger多智能体决策智能挑战赛”开启
  3. win8.1 php mysql,win8.1(64位) apache2.4.3+php5.6.3+mysql5.6安装
  4. Antd-Select组件的深入用法
  5. TCP/IP详解卷1 - wireshark抓包分析
  6. 深入浅出linux三剑客之awk必杀技一例
  7. 20220228:力扣第282场周赛(下)
  8. 经典算法面试题目-翻转一个C风格的字符串(1.2)
  9. 免费——离散数学(左孝凌)课后习题答案
  10. 广数系统加工中心编程_CNC数控加工中心编程指令详解
  11. webssh的安装与使用
  12. Android中常用计时器,延时,定时
  13. matlab 将路径靠左,latex 图片位置靠左
  14. PTV-VISSIM交通仿真软件
  15. android百度地图公交路线,android百度地图api实现查询经过某站点的所有公交路线...
  16. Word中删除全部页眉页脚的方法
  17. 齐齐哈尔大学计算机专业好么,齐齐哈尔大学(专业学位)计算机技术考研难吗
  18. 鸿蒙系统主页面斜纹,《中国美术欣赏》[精选].doc
  19. 内部比赛Cnbsp;Convertnbsp;Kilometersnbsp;tonbsp;…
  20. Matlab 基于IRLS的加权Cauchy稳健估计算法之二

热门文章

  1. 救赎自己——追风筝的人
  2. Atlas Antibodies神经胶质瘤标志物的研究意义
  3. Windows服务器双网卡绑定的方法(HP/Broadcom网卡)
  4. jvm原理解析——不疯魔不成活
  5. 谨以此篇文章开启我的博客生涯
  6. 科普:controller,service,serviceImpl,mapper,xml等几个文件的作用
  7. oracle 误删 log文件,Redo log文件被删除恢复
  8. 刺客信条奥德赛多项功能修改器(附游戏攻略)
  9. Redis高级应(2)-事务以及LUA脚本
  10. hydra海德拉 and Medusa美杜莎简单使用教程