HTML5 用canvas画吃豆人

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

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <canvas width="1900" height="400" style="background-color: #aabbcc;"></canvas>
    <script>
        // 获取画布
        var canvas = document.getElementsByTagName('canvas')[0]
        // 获取绘制上下文
        var ctx = canvas.getContext('2d')
        var ctx1 = canvas.getContext('2d')
        // 定义样式
        ctx.fillStyle = 'yellow'
        ctx.strokeStyle = 'gray'
        // 定义嘴巴开启速度与初始大小
        var speed = 1.7;
        var s = 0.03;
        var point = 100;
        var p = 5;
        setInterval(function () {
            // 清掉之前画的图
            ctx.clearRect(point - 106, 1, 200, 200)
            // 开启一个新路径
            ctx.beginPath()
            // 画圆
            ctx.arc(point, 100, 100, 0, Math.PI * speed, 0)
            ctx.lineTo(point, 100)
            // 结束路径
            ctx.closePath();
            // 填充
            ctx.fill();
            // 画边
            ctx.stroke();
            // 控制嘴巴开启关闭与移动
            point += p
            speed += s
            // 当嘴巴闭合时速度取反 让嘴巴张开
            if (speed >= 2) {
                s = -s
            }
            // 当嘴巴张开到一定程度时再对速度取反让嘴巴开始闭合
            if (speed < 1.7) {
                s = -s
            }
            // 到最右边后重新开始,重新绘制食物与吃豆人
            if (point >= 2100) {
                point = -100;
                food();
            }
        }, 10)

        // 循环创建食物
        function food() {
            for (var i = 3; i <= 18; i++) {
                if (i % 3 == 0) {
                    ctx1.beginPath();
                    ctx1.arc(i * 100, 100, 20, 0, Math.PI * 2, 0)
                    ctx1.closePath();
                    ctx1.fill();
                }
            }
        }
        food();
    </script>
</body>

</html>

上一篇:【BJOI2019】删数 线段树


下一篇:滚动变色的文字js特效