用html, js ,css实现一个简易的羊了个羊 - 网页版

话不多说,原理很简单,代码量也不多,我就直接上代码了,也写了简单的注释,各位看官可以自己研究看看,我就不多做废话了!!上代码!!

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>羊了个羊</title>
    <style>
        .page {
            margin: 0 auto;
            width: 400px;
            height: 550px;
            border: 1px solid black;
        }

        .header {
            width: 100%;
            height: 50px;
            text-align: center;
            background-color: green;
            line-height: 50px;
            color: white;
        }

        .body {
            height: 400px;
            background-color: brown;
            text-align: center;
            line-height: 400px;
            color: white;
            position: relative;
        }

        .footer {
            height: 100px;
            background-color: blue;
            color: white;
            text-align: center;
            line-height: 100px;
        }

        .plate {
            width: 40px;
            height: 40px;
            border: 1px solid gray;
            box-shadow: 0px 0px 5px 1px grya;
            background-size: cover;
            position: absolute;
            cursor: pointer;
            background-color: white;
            transition: 1s;
        }
    </style>
</head>

<body>
    <!-- 实际页面 -->
    <div class="page">
        <!-- 头部 - 倒计时 -->
        <div class="header">
            倒计时
        </div>
        <!-- 中心 - 牌库 -->
        <div class="body">
            牌库
        </div>
        <!-- 底部 - 待消除区 -->
        <div class="footer">
            底部
        </div>
    </div>
</body>

</html>

<script>
    let times = 100; // 倒计时
    let plates = [{
        id: "apple",
        img: "./imgs/apple.png",
        count: 16
    }, {
        id: "pear",
        img: "./imgs/pear.png",
        count: 18
    }, {
        id: "orange",
        img: "./imgs/orange.png",
        count: 19
    }, {
        id: "banana",
        img: "./imgs/banana.png",
        count: 11
    }]; // 初始牌库:id: 牌型,img: 牌的图片, count: 牌组数量
    let selecteds = []; // 被选中的牌库

    // 倒计时
    function CountDown() {
        let header = document.getElementsByClassName("header")[0];
        if (times === 0) {
            header.innerHTML = "Game  Over !!";
            alert("时间结束,游戏失败");
            clearInterval(timer);
            return;
        }
        header.innerHTML = times;
        times -= 1;
    }

    // 加载牌库
    function LoadPlates() {
        let body = document.getElementsByClassName("body")[0];
        plates.forEach(plate => {
            for (let i = 0; i < plate.count * 3; i++) {
                let dom = document.createElement("div");
                dom.className = plate.id + " plate";
                dom.style.backgroundImage = `url("${plate.img}")`;
                dom.style.top = Math.random() * 360 + "px";
                dom.style.left = Math.random() * 360 + "px";
                body.appendChild(dom);

                dom.addEventListener("click", () => {
                    dom.classList.add("selected");
                    // 先判断被选中的牌库中是否有同id的牌
                    let selectedPlate = selecteds.find(d => d.id === plate.id);
                    if (selectedPlate) {
                        selectedPlate.doms.push(dom);
                    } else {
                        selecteds.push({
                            id: plate.id,
                            doms: [dom]
                        });
                    }
                    SelectPlate(dom);
                });
            }
        });
    }

    // 选中牌
    function SelectPlate(plate) {
        let selectedPlates = document.querySelectorAll(".selected");
        let plateCount = selectedPlates.length;
        plate.style.top = "430px";
        plate.style.left = 40 * (plateCount + 1) + "px";
        selecteds.forEach(d => {
            if (d.doms.length === 3) {
                d.doms.forEach(dom => {
                    dom.remove();
                });
                d.doms = [];
                RefreshPlates();
            }
        });
        if(document.querySelectorAll(".selected").length >= 7){
            alert("游戏结束");
        }
    }

    // 刷新选中牌库的位置
    function RefreshPlates(){
        let count = 1;
        selecteds.forEach(plate => {
            plate.doms.forEach(dom => {
                dom.style.left = 40 * (count + 1) + "px";
                count++;
            });
        });
    }

    // 倒计时
    let timer = setInterval(() => {
        CountDown();
    }, 1000);

    LoadPlates();
</script>

代码中plates变量中的几个图片大家可以自己找图片替换掉,其他的照样运行即可!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
我可以帮你设计一个生成网页。你需要使用HTMLCSSJavaScript来编写这个网页。 首先,我们需要添加一个按钮,让用户点击后可以生成。在HTML中,添加以下代码: ```html <button onclick="generateSheep()">生成一个</button> <div id="sheep-container"></div> ``` 这将创建一个按钮和一个的容器。 接下来,我们需要编写一个JavaScript函数来生成。在JavaScript中,添加以下代码: ```javascript function generateSheep() { const sheepContainer = document.getElementById('sheep-container'); sheepContainer.innerHTML = ''; const sheep = document.createElement('img'); sheep.src = 'https://i.imgur.com/5u83FOw.png'; sheep.alt = ''; sheepContainer.appendChild(sheep); } ``` 这个函数首先获取的容器,并清空容器中已有的。然后,它创建一个新的<img>元素,并将它的src属性设置为的图片的URL,将它的alt属性设置为“”,最后将它添加到容器中。 最后,我们需要使用CSS来样式化的容器和图片。在CSS中,添加以下代码: ```css #sheep-container { width: 400px; height: 400px; border: 1px solid gray; display: flex; justify-content: center; align-items: center; } img { max-width: 100%; max-height: 100%; } ``` 这将设置的容器的宽度和高度为400px,并添加一个灰色的边框。它还将容器设置为灵活的,以便图像可以水平和垂直居中。最后,它将图像的最大宽度和高度设置为容器的最大宽度和高度,以确保图像不会超出容器。 现在,每当用户点击“生成一个”按钮时,网页上就会生成一只可爱的

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值