自己做的一款利用了JavaScript和jQuery的“跑酷小游戏”

项目下载地址
代码结构图:
在这里插入图片描述

效果图:
在这里插入图片描述
HTML:

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>天天酷跑</title>
    <link href="css/gameCSS.css" rel="stylesheet">
    <script type="text/javascript" src="js/jquery-3.4.1.js"></script>
</head>
<body>

<div class="login">
    <p>名字:<input type="text" required name="userName" id="name"></p>
    <p>密码:<input type="password" required name="password" id="pwd"></p>
    <p class="login1">登录</p>
    <p class="reg">注册账号</p>
</div>

<div class="register">
    <p>名字:<input type="text" required name="userName"></p>
    <p>密码:<input type="password" required name="password"></p>
    <p>密码:<input type="password" required name="password"></p>
    <p id="submit">提交注册</p>
</div>

<div class="showMenu">
    <ul>
        <li>当前用户:<span id="currentName"></span></li>
        <li id="start">开始游戏</li>
        <li id="top">排行榜</li>
        <li id="exits">退出账号</li>
    </ul>
</div>

<!--排行榜,游戏结束动态添加!-->
<div class="top">
    <ul>

    </ul>
</div>

<div class="scene">

    <audio loop="loop" id="bossMusic" src="MP3/bossMusic.mp3" hidden>
    </audio>

    <audio loop="loop" id="sceneMusic" src="MP3/scene.mp3" hidden>
    </audio>

    <audio id="getMoneyMusic" src="MP3/getMoney.mp3" hidden>
    </audio>

    <audio id="hit" src="MP3/hit.mp3" hidden>
    </audio>

    <div class="count">
        <p>分数:<span class="number">1</span></p>
        <p>金币:<span id="money"></span></p>
        <p>血量:<span id="life"></span></p>
    </div>

    <img src="images/无标题.png" class="runImg">
</div>

</body>
<script type="text/javascript" src="js/game.js"></script>
<script type="text/javascript" src="js/leadHelp.js"></script>
<script type="text/javascript" src="js/login.js"></script>
</html>
.scene {
    display: none;
    background: url("images/scene1.png")no-repeat;
    background-size: contain;
    width: 99%;
    height: 98%;

}

.runImg {
    position: absolute;
    transform: rotateY(180deg);
    width: 150px;
    height: 150px;
    top: 480px;
    left: 100px;
}

.boom {
    width: 60px;
    height: 30px;
    position: absolute;
    transform: rotateY(180deg);
    left: 1450px;
    top: 560px;
}

ul li {
    list-style: none;
}

a {
    text-decoration: none;
}

.showMenu {
    background: url("images/denglu.JPG") no-repeat;
    margin: 0px auto;
    width: 99%;
    height: 600px;
    position: absolute;

    line-height: 50px;
    display: none;
    color: red;
    background-size: cover;
}

.showMenu > ul {
    position: absolute;
    margin: 0px auto;
    left: 48%;
}


.count {
    background-color: cornflowerblue;
    color: blue;
    width: 180px;
    height: 150px;
    font-size: 22px;
}

.number {
    color: blue;
    width: 30px;
    height: 30px;
}

.gw {
    width: 300px;
    height: 388px;
    position: absolute;
    top: 280px;
    left: 1000px;
}

.money {
    width: 100px;
    height: 100px;
    position: absolute;
    left: 1400px;
}

.login {
    width: 95%;
    height: 600px;
    border: black 1px solid;
    line-height: 50px;
    text-align: center;
    margin: 0px auto;
    background: url("images/denglu.JPG") no-repeat;
    background-size: cover;
    color: white;
}

.register {
    width: 95%;
    height: 600px;
    border: black 1px solid;
    line-height: 50px;
    text-align: center;
    margin: 0px auto;
    display: none;
    background: url("images/denglu.JPG") no-repeat;
    background-size: cover;
    color: white;
}

.top {
    display: none;
    color: black;
    background: url("images/topScene.jpg") no-repeat;
    position: absolute;
    left: 60%;
    line-height: 20px;
    width: 500px;
    height: 500px;
}

.top > ul {
    position: absolute;
    left: 100px;
    top: 100px;
}

.top > ul > li {
    width: 250px;
}

.myBoom {
    position: absolute;
    left: 130px;
    width: 100px;
    height: 100px;
}

.appearBoos {
    position: absolute;
    left: 50%;
    width: 450px;
    height: 450px;
}
.fire{
    position: absolute;
    width: 98%;
    height: 30px;
    top: 600px;
}

.bossFire{
    position: absolute;
    margin: 0px auto;
    width: 300px;
    height: 300px;
    left: 45%;
}

JavaScript碰撞代码:



    //判断障碍物是否与主角碰撞
    function isCollision(className) {
        $(className).each(function () {
            var x1 = $(this).offset().left;
            var w1 = $(this).width();
            var y1 = $(this).offset().top;
            var h1 = $(this).height();

            var that = this;

            $(".runImg").each(function () {
                var x2 = $(this).offset().left;
                var w2 = $(this).width();
                var y2 = $(this).offset().top;
                var h2 = $(this).height();

                //如果人物已经在障碍物的右边直接不往下判断。。。防止人物已经在障碍物右边了,人物落地时刚好与障碍物同一个高度,防止第二个if条件成立结束游戏
                if (x2 > x1) {
                    return;
                }
                if ((Math.abs(x1 + w1 / 2)) - (Math.abs(x2 + w2 / 2)) < Math.abs((w1 + w2) / 2)
                    && Math.abs((y1 + h1 / 2) - (y2 + h2 / 2)) < Math.abs((h1 + h2) / 2)
                ) {

                    if (className == ".money") {
                        getMoneyMusic.play();
                        moneys++;
                        $("#money").text(moneys);
                        $(that).remove();
                    } else if (className == ".boom") {                        hit.play();
                        $(".boom").remove();
                        life--;
                        $("#life").text(life);
                        if (life <= 0) {
                            endGame();
                        }
                    }
                }
            })
        })
    }

    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值