JS小游戏之接粽子

各位小伙伴们,端午节都吃粽子了吗?吃完粽子,来一起用代码做个接粽子小游戏吧!

游戏规则

        选择难度后点击开始,倒计时30秒内会掉落粽子,点击粽子可得分,简单得10分,很难得20分,超级难得30,倒计时结束后游戏结束。

 实现思路

静态页面及样式

        * {
            padding: 0;
            margin: 0;
        }

        #app {
            display: flex;
            flex-direction: row;
        }

        .main {
            position: relative;
            width: 100%;
            height: 100vh;
            background-color: #2b4650;
            overflow: hidden;
        }

        .time {
            position: absolute;
            right: 0;
            top: 0;
            width: 100px;
            height: 20px;
            line-height: 20px;
            font-size: 12px;
            color: #fff;
            background-color: rgba(0, 0, 0, 0.5);
            border-radius: 10px;
            text-align: center;
            z-index: 10;
        }

        .setting {
            width: 300px;
            height: 100vh;
            background-color: #08A5DA;
            padding: 10px;
            box-sizing: border-box;
            font-size: 16px;
        }

        .title {
            font-size: 20px;
            color: #000;
            text-align: center;
            font-weight: bold;
            line-height: 40px;
        }
        .rule{
            font-size: 14px;
            line-height: 24px;
            font-weight: bolder;
            color: aliceblue;
        }
<div id="app">
        <div class="main">
            <div class="time">
                倒计时:<span>30</span>s
            </div>
        </div>
        <div class="setting">
            <div class="title mgb10">设置面板</div>
            <div class="difficulty mgb10">
                <span>难度:</span>
                <input type="radio" name="difficulty" value="1" checked>简单
                <input type="radio" name="difficulty" value="2">很难
                <input type="radio" name="difficulty" value="3">超级难
            </div>
            <div class="rule mgb10">&emsp;&emsp;游戏说明:选择难度后点击开始,倒计时30秒内会掉落粽子,点击粽子可得分,简单得10分,很难得20分,超级难得30,倒计时结束后游戏结束。</div>
            <div class="btn">开始游戏</div>
            <div class="result">总分:<span>0</span></div>
        </div>
    </div>

 开始游戏

        点击开始游戏,开始计时,时间30秒,页面上方开始随机掉落粽子,玩家通过点击粽子可获得积分,计时结束,弹出“时间结束”弹窗,粽子不再掉落。

    let result = 0;

    let btn = document.querySelector('.btn');
    let time = document.querySelector('.time span');
    let isStart = false;
    btn.addEventListener('click', function () {
        if (!isStart) {
            isStart = true;
            result = 0;
            let elemId = setInterval(function () {
                addElement();
            }, 500)
            let timeNumber = 30;
            let numberId = setInterval(function () {
                timeNumber -= 1;
                time.innerHTML = timeNumber;
                if (timeNumber <= 0) {
                    clearInterval(numberId);
                    clearInterval(elemId);
                    isStart = false;
                    alert('游戏结束');
                }
            }, 1000)
        }
    })

游戏难度选择

        玩家通过点击单选框来选择游戏的难度,难度越高,粽子掉落越快,粽子体积也会相应减小,当然,获取积分也会更高,粽子掉落,以及掉落速度通过动画完成。有兴趣的小伙伴也可以自行调式或者再加一些额外的动画。

        .zongzi1 {
            position: absolute;
            top: -90px;
            width: 90px;
            height: 90px;
            background-color: #ff9900;
            border-radius: 50%;
            animation: move 3s ease-in;
        }

        .zongzi2 {
            position: absolute;
            top: -70px;
            width: 70px;
            height: 70px;
            background-color: #ff9900;
            border-radius: 50%;
            animation: move 2s ease-in;
        }

        .zongzi3 {
            position: absolute;
            top: -50px;
            width: 50px;
            height: 50px;
            background-color: #ff9900;
            border-radius: 50%;
            animation: move 1s ease-in;
        }
    // 难度选择
    let difficulty = 1;
    let radios = document.querySelectorAll('input[type=radio]');
    radios.forEach(radio => {
        radio.addEventListener('change', function () {
            difficulty = radio.value;
        })
    })

粽子生成以及点击粽子

         添加元素生成粽子,生成的粽子通过随机修改left值来决定粽子的初始位置,当然粽子是经过定位之后的。没有被点击到的粽子设置一个定时,时间到自动清除掉。点击到的粽子就清除定时器,然后就清除掉点击的元素,并获得积分然后计入到总分中。

    let main = document.querySelector('.main');
    let resultElem = document.querySelector('.result span');

    function addElement() {
        let elem = document.createElement('img');
        elem.src = zongzi;
        elem.classList.add('zongzi' + difficulty);
        elem.style.left = Math.random() * 730 + 'px'
        main.appendChild(elem);

        let timeid = setTimeout(function () {
            main.removeChild(elem)
        }, 2990)

        elem.addEventListener('mousedown', function () {
            clearTimeout(timeid)
            main.removeChild(elem)
            result += 10 * difficulty;
            resultElem.innerHTML = result;
        })
    }


    var zongzi = './images/20160611092617_ceZdk.jpeg'

结语

游戏设计大概思路就是这些,有兴趣的小伙伴们可以在这基础上继续添加一些好玩的新功能,最后,祝大家端午节快乐!

端午节简介

端午节,又称端阳节、龙舟节、重五节、天中节等,是集拜神祭祖、祈福辟邪、欢庆娱乐和饮食为一体的民俗大节。端午节源于自然天象崇拜,由上古时代祭龙演变而来。仲夏端午,苍龙七宿飞升于正南中央,处在全年最“中正”之位,正如《易经·乾卦》第五爻:“飞龙在天”。端午是“飞龙在天”吉祥日,龙及龙舟文化始终贯穿在端午节的传承历史中。

端午节是流行于中国以及汉字文化圈诸国的传统文化节日,传说战国时期的楚国诗人屈原在五月初五跳汨罗江自尽,后人亦将端午节作为纪念屈原的节日;也有纪念伍子胥、曹娥及介子推等说法。端午节的起源涵盖了古老星象文化、人文哲学等方面内容,蕴含着深邃丰厚的文化内涵,在传承发展中杂糅了多种民俗为一体,各地因地域文化不同而又存在着习俗内容或细节上的差异。

端午节与春节、清明节、中秋节并称为中国四大传统节日。端午文化在世界上影响广泛,世界上一些国家和地区也有庆贺端午的活动。2006年5月,国务院将其列入首批国家级非物质文化遗产名录;自2008年起,被列为国家法定节假日。2009年9月,联合国教科文组织正式批准将其列入《人类非物质文化遗产代表作名录》,端午节成为中国首个入选世界非遗的节日。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值