• 像素鸟


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

    <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
    * {
    margin: 0;
    padding: 0;
    }

    #game {
    800px;
    height: 600px;
    background: url('./images/sky.png');
    position: relative;
    overflow: hidden;
    }

    #bird {
    34px;
    height: 25px;
    background: url('./images/birds.png') -8px -10px no-repeat;
    position: absolute;
    top: 100px;
    left: 100px;
    }
    </style>
    </head>

    <body>
    <div id="game">
    <div id="bird"></div>
    </div>
    <script>
    // 让小鸟飞起来
    // 移动的背景
    // top
    // 定时器
    // 动画原理 leader = leader + step
    // 获取相应的元素
    var game = document.getElementById('game');
    var birdEle = document.getElementById('bird');
    // 初始化背景图的值

    var sky = {
    x: 0
    }
    // 初始bird 的值
    var bird = {
    speedX: 5,
    speedY: 0,
    x: birdEle.offsetLeft,
    y: birdEle.offsetTop
    }
    // 游戏的状态
    var running = true;
    setInterval(function () {
    if (running) {
    // 移动背景让小鸟实现水平运动
    sky.x -= 5;
    game.style.backgroundPositionX = sky.x + 'px';
    // 实现小鸟的上下运动
    bird.speedY += 1;
    bird.y += bird.speedY;
    if (bird.y < 0) {
    running = false;
    bird.y = 0;
    }
    if (bird.y + birdEle.offsetHeight > 600) {
    running = false;
    bird.y = 600 - birdEle.offsetHeight;
    console.log(bird.y)
    }

    birdEle.style.top = bird.y + 'px';
    }

    }, 30)
    // 点击文档的时候实现小鸟向上运动
    document.onclick = function () {
    bird.speedY = -10;
    }
    // 创建管道
    function createPipe(position) {
    var pipe = {};
    pipe.x = position;
    pipe.uHeight = 200 + parseInt(Math.random() * 100);
    pipe.dHeight = 600 - pipe.uHeight - 200;
    pipe.dTop = pipe.uHeight + 200;
    var uPipe = document.createElement('div');
    uPipe.style.width = '52px';
    uPipe.style.height = pipe.uHeight + 'px';
    uPipe.style.background = 'url("./images/pipe2.png") no-repeat center bottom';
    uPipe.style.position = 'absolute';
    uPipe.style.top = '0px';
    uPipe.style.left = pipe.x + 'px';
    game.appendChild(uPipe);

    var dPipe = document.createElement('div');
    dPipe.style.width = '52px';
    dPipe.style.height = pipe.dHeight + 'px';
    dPipe.style.background = 'url("./images/pipe1.png") no-repeat center top';
    dPipe.style.position = 'absolute';
    dPipe.style.top = pipe.dTop + 'px';
    dPipe.style.left = pipe.x + 'px';
    game.appendChild(dPipe);
    // 让管道运动起来
    setInterval(function () {
    if (running) {
    pipe.x -= 2;
    uPipe.style.left = pipe.x + 'px';
    dPipe.style.left = pipe.x + 'px';
    if (pipe.x < -52) {
    pipe.x = 800;
    }
    var uCheck = bird.x + 34 > pipe.x && bird.x < pipe.x + 52 && bird.y < pipe.uHeight;
    var dCheck = bird.x + 34 > pipe.x && bird.x < pipe.x + 52 && bird.y > pipe.uHeight + 200;
    if (uCheck || dCheck) {
    running = false;
    }
    }
    }, 30)
    }
    createPipe(400);
    createPipe(600);
    createPipe(800);
    createPipe(1000);

    </script>
    </body>

    </html>

  • 相关阅读:
    Webpack的组成部分 半 详解
    代码简洁之道:编写干净的 React Components & JSX
    大体量点位置数据动态聚合Binning可视化效果
    树莓派FRP服务器自启动失败原因及解决办法
    nopCommerce自学笔记(一、环境搭建)-BigIcicle
    NopCommerce4.3中文版资源
    利用阿里云防勒索备份文件->ibdata 和 frm 文件恢复 MySQL 数据库
    ubuntu mysql设置sql_mode
    Ubuntu16.04 中PHP7.0 安装pdo_mysql 扩展
    相邻两个生产计划之间的衔接问题
  • 原文地址:https://www.cnblogs.com/pxxdbk/p/12655714.html
Copyright © 2020-2023  润新知