首页 前端知识 HTML5作业(二)-----扑克牌拖放小游戏

HTML5作业(二)-----扑克牌拖放小游戏

2024-10-30 20:10:05 前端知识 前端哥 711 475 我要收藏

实验目的:1. 理解元素拖放流程

          2. 理解CSS定位规则

3. 熟悉DOM添加和删除子元素流程

实验要求:设计一款扑克牌拖放小游戏。在网页中插入A框和B框。

要求用户拖动从A框拖动5张连续的扑克牌至B框,完成游戏。具体要求:

1.初始时,A框包含13张随机乱序后的同花色扑克牌,以背面显示。

2.用户可任意拖动其中一张扑克牌至B框,扑克牌以正面展示。

3.用户也可将扑克牌从B框拖至A框,扑克牌会自动回到初始的位置,且背面展示。

4.B框最多能够容纳5张扑克牌。在接收到5张扑克牌后,如果满足顺子要求,则提示用户游戏结束并显示用户成绩(拖动次数)。若不满足要求,用户必须先将其中不满足的牌拖回A框,游戏方可继续。

代码展示:

<!DOCTYPE html>

<html lang="en">

<head>

  <meta charset="UTF-8">

  <style>

  </style>

</head>

<body>

  <div id="A-box" style="width:100wh; height: 200px; border: 1px solid black;">

    <!-- 这里放置初始的扑克牌 -->

    <img src="C:\Users\12845\Desktop\bk.jpg" style="width: 100px;">

    <img src="C:\Users\12845\Desktop\bk.jpg" style="width: 100px;">

    <img src="C:\Users\12845\Desktop\bk.jpg" style="width: 100px;">

    <img src="C:\Users\12845\Desktop\bk.jpg" style="width: 100px;">

    <img src="C:\Users\12845\Desktop\bk.jpg" style="width: 100px;">

    <img src="C:\Users\12845\Desktop\bk.jpg" style="width: 100px;">

    <img src="C:\Users\12845\Desktop\bk.jpg" style="width: 100px;">

    <img src="C:\Users\12845\Desktop\bk.jpg" style="width: 100px;">

    <img src="C:\Users\12845\Desktop\bk.jpg" style="width: 100px;">

    <img src="C:\Users\12845\Desktop\bk.jpg" style="width: 100px;">

    <img src="C:\Users\12845\Desktop\bk.jpg" style="width: 100px;">

    <img src="C:\Users\12845\Desktop\bk.jpg" style="width: 100px;">

    <img src="C:\Users\12845\Desktop\bk.jpg" style="width: 100px;">

  </div>

  <div id="B-box" style="width: 300px; height: 200px; border: 1px solid black; padding-top: 400rpx;">

    <!-- 这里放置放置扑克牌的地方 -->

  </div>

  

  <script>

    // 获取A框和B框的元素

    var Abox = document.getElementById('A-box');

    var Bbox = document.getElementById('B-box');

    var B = Bbox.querySelector('.card'); // 获取B框中的扑克牌元素

    // 初始时,A框包含13张随机乱序后的同花色扑克牌

    for (var i = 0; i < 13; i++) {

      var card = document.createElement('div');

      card.classList.add('card');

      card.textContent = Math.floor(Math.random() * 52); // 生成随机数字作为牌面

      card.style.backgroundColor = 'black'; // 背面显示

      card.addEventListener('mousedown', startDrag);

      Abox.appendChild(card);

    }

    // 处理拖动事件

    function startDrag(e) {

      // 获取初始牌的位置和大小

      var offsetX = e.pageX - e.target.offsetLeft;

      var offsetY = e.pageY - e.target.offsetTop;

      var card = e.target;

      var cardRect = card.getBoundingClientRect();

      var cardWidth = cardRect.width;

      var cardHeight = cardRect.height;

      // 设置拖动状态,并在拖动结束后结束事件

      card.draggable = true;

      card.addEventListener('mouseup', endDrag);

      card.addEventListener('mousemove', dragCard);

    }

    function endDrag() {

      // 结束拖动状态,并删除事件监听器

      this.draggable = false;

      this.removeEventListener('mousemove');

      this.removeEventListener('mouseup');

    }

    function dragCard(e) {

      // 获取新的位置和大小,并更新元素的位置和大小

      var newX = e.pageX - offsetX; // 新位置的x坐标

      var newY = e.pageY - offsetY; // 新位置的y坐标

      this.style.left = newX + 'px'; // 设置元素的left属性为新的x坐标

      this.style.top = newY + 'px'; // 设置元素的top属性为新的y坐标

    }

  </script>

</body>

</html>

效果展示:

转载请注明出处或者链接地址:https://www.qianduange.cn//article/19624.html
标签
评论
发布的文章
大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!