canvas练习——画马里奥

243 阅读21分钟

效果还很粗糙,慢慢修改优化,暂存。
html 代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="keywords" content="your keywords">
    <meta name="description" content="your description">
    <meta name="author" content="author,email address">
    <meta name="robots" content="index,follow">
    <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
    <meta name="renderer" content="ie-stand">
    <title>Super Mario</title>
    <style>
        body{
            padding: 0;
            margin: 0;
            overflow: hidden;
        }
    </style>
</head>
<body>
<canvas id="bg"></canvas>
<canvas id="screen" style="position: absolute;top: 0;"></canvas>
<script>
    var SCREEN_WIDTH = document.documentElement.clientWidth;
    var SCREEN_HEIGHT = document.documentElement.clientHeight;
    var LINE_WIDTH = 5;
    var s = 0;
    var s1 = 0;
    var exp = 1;
    var currentStatus = 'right';
    var bg = new Image();
    var canvas = document.getElementById('screen');
    canvas.width = SCREEN_WIDTH;
    canvas.height = SCREEN_HEIGHT;
    var ctx = canvas.getContext('2d');

    var bgCanvas = document.getElementById('bg');
    bgCanvas.width = SCREEN_WIDTH;
    bgCanvas.height = SCREEN_HEIGHT;
    var bgContext = bgCanvas.getContext('2d');

    ctx.lineWidth = LINE_WIDTH;
    var control = new Control();//实例化游戏控制类
    init();
    drawMarioA(ctx, s1);
    //drawMarioC(ctx, s1);
    var interval;

    function init() {
        bg.src = 'http://cdn.attach.qdfuns.com/notes/pics/201711/30/163940zti73hgoxh5ah39z.png';
        bgContext.drawImage(bg, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
    }

    //游戏控制类
    function Control() {
        this.code = {37: 'left', 39: 'right', 38: 'jump', 40: 'down'}
        this.status = {'left': false, 'right': false, 'jump': false, 'down': false};
        document.addEventListener("keydown", function (e) {
            var status = this.code[e.keyCode];
            if (!status) return;
            this.status[status] = true;
            clearInterval(interval);
            interval = setInterval(start, 1000 / 60);
        }.bind(this))
        document.addEventListener("keyup", function (e) {
            clearInterval(interval);
            var status = this.code[e.keyCode];
            if (!status) return;
            this.status[status] = false;
            ctx.clearRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
            if (e.keyCode == 37 || e.keyCode == 39) {
                currentStatus = this.code[e.keyCode];
            }
            if (currentStatus == 'right') {
                drawMarioA(ctx, s1);
            } else {
                drawMarioA1(ctx, SCREEN_WIDTH - s1 - 100);
            }
        }.bind(this))
    }

    function start() {
        ctx.clearRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
        if (control.status.left) {
            if (s > 0) { //判断当前线的位置,控制在区域内
                s = s - 1;
            }
            s1 = s;
            run(ctx, SCREEN_WIDTH - s - 100, 'left');
            //drawMarioA1(ctx, SCREEN_WIDTH - s - 100);
        } else if (control.status.right) {
            if (s <= SCREEN_WIDTH - 100) { //判断当前线的位置,控制在区域内
                s = s1 + 1; //起点+活动像素位置
            } else {
                s = s1;
            }
            s1 = s;
            run(ctx, s, 'right');
        } else if (control.status.jump) {
            if (currentStatus == 'right') {
                drawMarioB(ctx, s1);
            } else {
                drawMarioB1(ctx, SCREEN_WIDTH - s1 - 100);
            }
        } else {
            if (currentStatus == 'right') {
                drawMarioA(ctx, s1);
            } else {
                drawMarioA1(ctx, s1);
            }
        }
    }

    function run(ctx, s, d) {
        if (d == 'right') {
            drawMarioC(ctx, s);
            setTimeout(function () {
                ctx.clearRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
                drawMarioA(ctx, s);
            }, 10);
        } else {
            drawMarioC1(ctx, s);
            setTimeout(function () {
                ctx.clearRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
                drawMarioA1(ctx, s);
            }, 10);
        }

    }

    //站着的mario
    function drawMarioA(ctx, s) {
        var x = LINE_WIDTH       + (SCREEN_HEIGHT - SCREEN_HEIGHT * 0.4);
        //帽子
        ctx.beginPath();
        ctx.strokeStyle = "#e00000";
        ctx.moveTo(s + (LINE_WIDTH * 10), x + LINE_WIDTH * 10);
        ctx.lineTo(s + (LINE_WIDTH * 15), x + LINE_WIDTH * 10);
        ctx.moveTo(s + (LINE_WIDTH * 9), x + LINE_WIDTH * 11);
        ctx.lineTo(s + (LINE_WIDTH * 18), x + LINE_WIDTH * 11);
        ctx.stroke();

        //皮肤
        ctx.beginPath();
        ctx.strokeStyle = '#f7d7c2';
        ctx.moveTo(s + (LINE_WIDTH * 12), x + LINE_WIDTH * 12);
        ctx.lineTo(s + (LINE_WIDTH * 16), x + LINE_WIDTH * 12);
        ctx.moveTo(s + (LINE_WIDTH * 9), x + LINE_WIDTH * 13);
        ctx.lineTo(s + (LINE_WIDTH * 18), x + LINE_WIDTH * 13);
        ctx.moveTo(s + (LINE_WIDTH * 9), x + LINE_WIDTH * 14);
        ctx.lineTo(s + (LINE_WIDTH * 19), x + LINE_WIDTH * 14);
        ctx.moveTo(s + (LINE_WIDTH * 10), x + LINE_WIDTH * 15);
        ctx.lineTo(s + (LINE_WIDTH * 18), x + LINE_WIDTH * 15);
        ctx.moveTo(s + (LINE_WIDTH * 10), x + LINE_WIDTH * 16);
        ctx.lineTo(s + (LINE_WIDTH * 17), x + LINE_WIDTH * 16);
        //手
        ctx.moveTo(s + (LINE_WIDTH * 7), x + LINE_WIDTH * 20);
        ctx.lineTo(s + (LINE_WIDTH * 19), x + LINE_WIDTH * 20);
        ctx.moveTo(s + (LINE_WIDTH * 7), x + LINE_WIDTH * 21);
        ctx.lineTo(s + (LINE_WIDTH * 19), x + LINE_WIDTH * 21);
        ctx.moveTo(s + (LINE_WIDTH * 7), x + LINE_WIDTH * 22);
        ctx.lineTo(s + (LINE_WIDTH * 19), x + LINE_WIDTH * 22);
        ctx.stroke();

        //头发
        ctx.beginPath();
        ctx.strokeStyle = "#772102";
        ctx.moveTo(s + (LINE_WIDTH * 9), x + LINE_WIDTH * 12);
        ctx.lineTo(s + (LINE_WIDTH * 12), x + LINE_WIDTH * 12);
        ctx.moveTo(s + (LINE_WIDTH * 10), x + LINE_WIDTH * 13);
        ctx.lineTo(s + (LINE_WIDTH * 11), x + LINE_WIDTH * 13);
        ctx.moveTo(s + (LINE_WIDTH * 10), x + LINE_WIDTH * 14);
        ctx.lineTo(s + (LINE_WIDTH * 12), x + LINE_WIDTH * 14);

        ctx.moveTo(s + (LINE_WIDTH * 8), x + LINE_WIDTH * 13);
        ctx.lineTo(s + (LINE_WIDTH * 9), x + LINE_WIDTH * 13);
        ctx.moveTo(s + (LINE_WIDTH * 8), x + LINE_WIDTH * 14);
        ctx.lineTo(s + (LINE_WIDTH * 9), x + LINE_WIDTH * 14);
        ctx.moveTo(s + (LINE_WIDTH * 8), x + LINE_WIDTH * 15);
        ctx.lineTo(s + (LINE_WIDTH * 10), x + LINE_WIDTH * 15);
        ctx.stroke();

        //胡子和眼睛
        ctx.beginPath();
        ctx.strokeStyle = '#000';
        ctx.moveTo(s + (LINE_WIDTH * 14), x + LINE_WIDTH * 12);
        ctx.lineTo(s + (LINE_WIDTH * 15), x + LINE_WIDTH * 12);
        ctx.moveTo(s + (LINE_WIDTH * 14), x + LINE_WIDTH * 13);
        ctx.lineTo(s + (LINE_WIDTH * 15), x + LINE_WIDTH * 13);
        ctx.moveTo(s + (LINE_WIDTH * 15), x + LINE_WIDTH * 14);
        ctx.lineTo(s + (LINE_WIDTH * 16), x + LINE_WIDTH * 14);
        ctx.moveTo(s + (LINE_WIDTH * 14), x + LINE_WIDTH * 15);
        ctx.lineTo(s + (LINE_WIDTH * 18), x + LINE_WIDTH * 15);
        ctx.stroke();

        //红色衣服
        ctx.beginPath();
        ctx.strokeStyle = '#e00000';
        ctx.moveTo(s + (LINE_WIDTH * 9), x + LINE_WIDTH * 17);
        ctx.lineTo(s + (LINE_WIDTH * 15), x + LINE_WIDTH * 17);
        ctx.moveTo(s + (LINE_WIDTH * 8), x + LINE_WIDTH * 18);
        ctx.lineTo(s + (LINE_WIDTH * 18), x + LINE_WIDTH * 18);
        ctx.moveTo(s + (LINE_WIDTH * 7), x + LINE_WIDTH * 19);
        ctx.lineTo(s + (LINE_WIDTH * 19), x + LINE_WIDTH * 19);
        ctx.moveTo(s + (LINE_WIDTH * 9), x + LINE_WIDTH * 20);
        ctx.lineTo(s + (LINE_WIDTH * 17), x + LINE_WIDTH * 20);
        ctx.stroke();

        //蓝色衣服
        ctx.beginPath();
        ctx.strokeStyle = '#2b4bf4';
        ctx.moveTo(s + (LINE_WIDTH * 11), x + LINE_WIDTH * 17);
        ctx.lineTo(s + (LINE_WIDTH * 12), x + LINE_WIDTH * 17);
        ctx.moveTo(s + (LINE_WIDTH * 11), x + LINE_WIDTH * 18);
        ctx.lineTo(s + (LINE_WIDTH * 12), x + LINE_WIDTH * 18);
        ctx.moveTo(s + (LINE_WIDTH * 14), x + LINE_WIDTH * 18);
        ctx.lineTo(s + (LINE_WIDTH * 15), x + LINE_WIDTH * 18);
        ctx.moveTo(s + (LINE_WIDTH * 11), x + LINE_WIDTH * 19);
        ctx.lineTo(s + (LINE_WIDTH * 15), x + LINE_WIDTH * 19);
        ctx.moveTo(s + (LINE_WIDTH * 10), x + LINE_WIDTH * 20);
        ctx.lineTo(s + (LINE_WIDTH * 16), x + LINE_WIDTH * 20);
        ctx.moveTo(s + (LINE_WIDTH * 10), x + LINE_WIDTH * 21);
        ctx.lineTo(s + (LINE_WIDTH * 16), x + LINE_WIDTH * 21);
        ctx.moveTo(s + (LINE_WIDTH * 9), x + LINE_WIDTH * 22);
        ctx.lineTo(s + (LINE_WIDTH * 17), x + LINE_WIDTH * 22);
        ctx.moveTo(s + (LINE_WIDTH * 9), x + LINE_WIDTH * 23);
        ctx.lineTo(s + (LINE_WIDTH * 12), x + LINE_WIDTH * 23);
        ctx.moveTo(s + (LINE_WIDTH * 14), x + LINE_WIDTH * 23);
        ctx.lineTo(s + (LINE_WIDTH * 17), x + LINE_WIDTH * 23);
        ctx.stroke();

        //鞋子
        ctx.beginPath();
        ctx.strokeStyle = '#632705';
        ctx.moveTo(s + (LINE_WIDTH * 8), x + LINE_WIDTH * 24);
        ctx.lineTo(s + (LINE_WIDTH * 11), x + LINE_WIDTH * 24);
        ctx.moveTo(s + (LINE_WIDTH * 15), x + LINE_WIDTH * 24);
        ctx.lineTo(s + (LINE_WIDTH * 18), x + LINE_WIDTH * 24);
        ctx.moveTo(s + (LINE_WIDTH * 7), x + LINE_WIDTH * 25);
        ctx.lineTo(s + (LINE_WIDTH * 11), x + LINE_WIDTH * 25);
        ctx.moveTo(s + (LINE_WIDTH * 15), x + LINE_WIDTH * 25);
        ctx.lineTo(s + (LINE_WIDTH * 19), x + LINE_WIDTH * 25);
        ctx.stroke();

        //扣子
        ctx.beginPath();
        ctx.strokeStyle = '#fff';
        ctx.moveTo(s + (LINE_WIDTH * 11), x + LINE_WIDTH * 20);
        ctx.lineTo(s + (LINE_WIDTH * 12), x + LINE_WIDTH * 20);
        ctx.moveTo(s + (LINE_WIDTH * 14), x + LINE_WIDTH * 20);
        ctx.lineTo(s + (LINE_WIDTH * 15), x + LINE_WIDTH * 20);
        ctx.stroke();
    }
    //站着的mario
    function drawMarioA1(ctx, s) {
        var x = LINE_WIDTH       + (SCREEN_HEIGHT - SCREEN_HEIGHT * 0.4);
        //帽子
        ctx.beginPath();
        ctx.strokeStyle = "#e00000";
        ctx.moveTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 10)), x + LINE_WIDTH * 10);
        ctx.lineTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 15)), x + LINE_WIDTH * 10);
        ctx.moveTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 9)), x + LINE_WIDTH * 11);
        ctx.lineTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 18)), x + LINE_WIDTH * 11);
        ctx.stroke();

        //皮肤
        ctx.beginPath();
        ctx.strokeStyle = '#f7d7c2';
        ctx.moveTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 12)), x + LINE_WIDTH * 12);
        ctx.lineTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 16)), x + LINE_WIDTH * 12);
        ctx.moveTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 9)), x + LINE_WIDTH * 13);
        ctx.lineTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 18)), x + LINE_WIDTH * 13);
        ctx.moveTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 9)), x + LINE_WIDTH * 14);
        ctx.lineTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 19)), x + LINE_WIDTH * 14);
        ctx.moveTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 10)), x + LINE_WIDTH * 15);
        ctx.lineTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 18)), x + LINE_WIDTH * 15);
        ctx.moveTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 10)), x + LINE_WIDTH * 16);
        ctx.lineTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 17)), x + LINE_WIDTH * 16);
        //手
        ctx.moveTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 7)), x + LINE_WIDTH * 20);
        ctx.lineTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 19)), x + LINE_WIDTH * 20);
        ctx.moveTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 7)), x + LINE_WIDTH * 21);
        ctx.lineTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 19)), x + LINE_WIDTH * 21);
        ctx.moveTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 7)), x + LINE_WIDTH * 22);
        ctx.lineTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 19)), x + LINE_WIDTH * 22);
        ctx.stroke();

        //头发
        ctx.beginPath();
        ctx.strokeStyle = "#772102";
        ctx.moveTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 9)), x + LINE_WIDTH * 12);
        ctx.lineTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 12)), x + LINE_WIDTH * 12);
        ctx.moveTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 10)), x + LINE_WIDTH * 13);
        ctx.lineTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 11)), x + LINE_WIDTH * 13);
        ctx.moveTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 10)), x + LINE_WIDTH * 14);
        ctx.lineTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 12)), x + LINE_WIDTH * 14);

        ctx.moveTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 8)), x + LINE_WIDTH * 13);
        ctx.lineTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 9)), x + LINE_WIDTH * 13);
        ctx.moveTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 8)), x + LINE_WIDTH * 14);
        ctx.lineTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 9)), x + LINE_WIDTH * 14);
        ctx.moveTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 8)), x + LINE_WIDTH * 15);
        ctx.lineTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 10)), x + LINE_WIDTH * 15);
        ctx.stroke();

        //胡子和眼睛
        ctx.beginPath();
        ctx.strokeStyle = '#000';
        ctx.moveTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 14)), x + LINE_WIDTH * 12);
        ctx.lineTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 15)), x + LINE_WIDTH * 12);
        ctx.moveTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 14)), x + LINE_WIDTH * 13);
        ctx.lineTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 15)), x + LINE_WIDTH * 13);
        ctx.moveTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 15)), x + LINE_WIDTH * 14);
        ctx.lineTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 16)), x + LINE_WIDTH * 14);
        ctx.moveTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 14)), x + LINE_WIDTH * 15);
        ctx.lineTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 18)), x + LINE_WIDTH * 15);
        ctx.stroke();

        //红色衣服
        ctx.beginPath();
        ctx.strokeStyle = '#e00000';
        ctx.moveTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 9)), x + LINE_WIDTH * 17);
        ctx.lineTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 15)), x + LINE_WIDTH * 17);
        ctx.moveTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 8)), x + LINE_WIDTH * 18);
        ctx.lineTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 18)), x + LINE_WIDTH * 18);
        ctx.moveTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 7)), x + LINE_WIDTH * 19);
        ctx.lineTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 19)), x + LINE_WIDTH * 19);
        ctx.moveTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 9)), x + LINE_WIDTH * 20);
        ctx.lineTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 17)), x + LINE_WIDTH * 20);
        ctx.stroke();

        //蓝色衣服
        ctx.beginPath();
        ctx.strokeStyle = '#2b4bf4';
        ctx.moveTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 11)), x + LINE_WIDTH * 17);
        ctx.lineTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 12)), x + LINE_WIDTH * 17);
        ctx.moveTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 11)), x + LINE_WIDTH * 18);
        ctx.lineTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 12)), x + LINE_WIDTH * 18);
        ctx.moveTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 14)), x + LINE_WIDTH * 18);
        ctx.lineTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 15)), x + LINE_WIDTH * 18);
        ctx.moveTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 11)), x + LINE_WIDTH * 19);
        ctx.lineTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 15)), x + LINE_WIDTH * 19);
        ctx.moveTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 10)), x + LINE_WIDTH * 20);
        ctx.lineTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 16)), x + LINE_WIDTH * 20);
        ctx.moveTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 10)), x + LINE_WIDTH * 21);
        ctx.lineTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 16)), x + LINE_WIDTH * 21);
        ctx.moveTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 9)), x + LINE_WIDTH * 22);
        ctx.lineTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 17)), x + LINE_WIDTH * 22);
        ctx.moveTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 9)), x + LINE_WIDTH * 23);
        ctx.lineTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 12)), x + LINE_WIDTH * 23);
        ctx.moveTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 14)), x + LINE_WIDTH * 23);
        ctx.lineTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 17)), x + LINE_WIDTH * 23);
        ctx.stroke();

        //鞋子
        ctx.beginPath();
        ctx.strokeStyle = '#632705';
        ctx.moveTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 8)), x + LINE_WIDTH * 24);
        ctx.lineTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 11)), x + LINE_WIDTH * 24);
        ctx.moveTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 15)), x + LINE_WIDTH * 24);
        ctx.lineTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 18)), x + LINE_WIDTH * 24);
        ctx.moveTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 7)), x + LINE_WIDTH * 25);
        ctx.lineTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 11)), x + LINE_WIDTH * 25);
        ctx.moveTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 15)), x + LINE_WIDTH * 25);
        ctx.lineTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 19)), x + LINE_WIDTH * 25);
        ctx.stroke();

        //扣子
        ctx.beginPath();
        ctx.strokeStyle = '#fff';
        ctx.moveTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 11)), x + LINE_WIDTH * 20);
        ctx.lineTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 12)), x + LINE_WIDTH * 20);
        ctx.moveTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 14)), x + LINE_WIDTH * 20);
        ctx.lineTo(SCREEN_WIDTH - (s + (LINE_WIDTH * 15)), x + LINE_WIDTH * 20);
        ctx.stroke();
    }

    //跳起的mario
    function drawMarioB(ctx, s) {
        var x = LINE_WIDTH       + (SCREEN_HEIGHT - SCREEN_HEIGHT * 0.4);
        //帽子
        ctx.beginPath();
        ctx.strokeStyle = "#e00000";
        ctx.moveTo(s + LINE_WIDTH * 10, x + LINE_WIDTH * 7);
        ctx.lineTo(s + LINE_WIDTH * 15, x + LINE_WIDTH * 7);
        ctx.moveTo(s + LINE_WIDTH * 9, x + LINE_WIDTH * 8);
        ctx.lineTo(s + LINE_WIDTH * 18, x + LINE_WIDTH * 8);
        ctx.stroke();

        //皮肤
        ctx.beginPath();
        ctx.strokeStyle = '#f7d7c2';
        ctx.moveTo(s + LINE_WIDTH * 12, x + LINE_WIDTH * 9);
        ctx.lineTo(s + LINE_WIDTH * 16, x + LINE_WIDTH * 9);
        ctx.moveTo(s + LINE_WIDTH * 9, x + LINE_WIDTH * 10);
        ctx.lineTo(s + LINE_WIDTH * 18, x + LINE_WIDTH * 10);
        ctx.moveTo(s + LINE_WIDTH * 9, x + LINE_WIDTH * 11);
        ctx.lineTo(s + LINE_WIDTH * 19, x + LINE_WIDTH * 11);
        ctx.moveTo(s + LINE_WIDTH * 10, x + LINE_WIDTH * 12);
        ctx.lineTo(s + LINE_WIDTH * 18, x + LINE_WIDTH * 12);
        ctx.moveTo(s + LINE_WIDTH * 10, x + LINE_WIDTH * 13);
        ctx.lineTo(s + LINE_WIDTH * 17, x + LINE_WIDTH * 13);
        //手
        ctx.moveTo(s + LINE_WIDTH * 17, x + LINE_WIDTH * 7);
        ctx.lineTo(s + LINE_WIDTH * 20, x + LINE_WIDTH * 7);
        ctx.moveTo(s + LINE_WIDTH * 18, x + LINE_WIDTH * 8);
        ctx.lineTo(s + LINE_WIDTH * 20, x + LINE_WIDTH * 8);
        ctx.stroke();

        //头发
        ctx.beginPath();
        ctx.strokeStyle = "#772102";
        ctx.moveTo(s + LINE_WIDTH * 9, x + LINE_WIDTH * 9);
        ctx.lineTo(s + LINE_WIDTH * 12, x + LINE_WIDTH * 9);
        ctx.moveTo(s + LINE_WIDTH * 10, x + LINE_WIDTH * 10);
        ctx.lineTo(s + LINE_WIDTH * 11, x + LINE_WIDTH * 10);
        ctx.moveTo(s + LINE_WIDTH * 10, x + LINE_WIDTH * 11);
        ctx.lineTo(s + LINE_WIDTH * 12, x + LINE_WIDTH * 11);

        ctx.moveTo(s + LINE_WIDTH * 8, x + LINE_WIDTH * 10);
        ctx.lineTo(s + LINE_WIDTH * 9, x + LINE_WIDTH * 10);
        ctx.moveTo(s + LINE_WIDTH * 8, x + LINE_WIDTH * 11);
        ctx.lineTo(s + LINE_WIDTH * 9, x + LINE_WIDTH * 11);
        ctx.moveTo(s + LINE_WIDTH * 8, x + LINE_WIDTH * 12);
        ctx.lineTo(s + LINE_WIDTH * 10, x + LINE_WIDTH * 12);
        ctx.stroke();

        //胡子和眼睛
        ctx.beginPath();
        ctx.strokeStyle = '#000';
        ctx.moveTo(s + LINE_WIDTH * 14, x + LINE_WIDTH * 9);
        ctx.lineTo(s + LINE_WIDTH * 15, x + LINE_WIDTH * 9);
        ctx.moveTo(s + LINE_WIDTH * 14, x + LINE_WIDTH * 10);
        ctx.lineTo(s + LINE_WIDTH * 15, x + LINE_WIDTH * 10);
        ctx.moveTo(s + LINE_WIDTH * 15, x + LINE_WIDTH * 11);
        ctx.lineTo(s + LINE_WIDTH * 16, x + LINE_WIDTH * 11);
        ctx.moveTo(s + LINE_WIDTH * 14, x + LINE_WIDTH * 12);
        ctx.lineTo(s + LINE_WIDTH * 18, x + LINE_WIDTH * 12);
        ctx.stroke();

        //红色衣服
        ctx.beginPath();
        ctx.strokeStyle = '#e00000';
        ctx.moveTo(s + LINE_WIDTH * 17, x + LINE_WIDTH * 9);
        ctx.lineTo(s + LINE_WIDTH * 20, x + LINE_WIDTH * 9);
        ctx.moveTo(s + LINE_WIDTH * 18, x + LINE_WIDTH * 10);
        ctx.lineTo(s + LINE_WIDTH * 20, x + LINE_WIDTH * 10);
        ctx.moveTo(s + LINE_WIDTH * 19, x + LINE_WIDTH * 11);
        ctx.lineTo(s + LINE_WIDTH * 20, x + LINE_WIDTH * 11);
        ctx.moveTo(s + LINE_WIDTH * 18, x + LINE_WIDTH * 12);
        ctx.lineTo(s + LINE_WIDTH * 19, x + LINE_WIDTH * 12);
        ctx.moveTo(s + LINE_WIDTH * 17, x + LINE_WIDTH * 13);
        ctx.lineTo(s + LINE_WIDTH * 19, x + LINE_WIDTH * 13);
        ctx.moveTo(s + LINE_WIDTH * 7, x + LINE_WIDTH * 14);
        ctx.lineTo(s + LINE_WIDTH * 18, x + LINE_WIDTH * 14);
        ctx.moveTo(s + LINE_WIDTH * 7, x + LINE_WIDTH * 15);
        ctx.lineTo(s + LINE_WIDTH * 17, x + LINE_WIDTH * 15);
        ctx.moveTo(s + LINE_WIDTH * 8, x + LINE_WIDTH * 16);
        ctx.lineTo(s + LINE_WIDTH * 17, x + LINE_WIDTH * 16);
        ctx.stroke();

        //蓝色衣服
        ctx.beginPath();
        ctx.strokeStyle = '#2b4bf4';
        ctx.moveTo(s + LINE_WIDTH * 11, x + LINE_WIDTH * 14);
        ctx.lineTo(s + LINE_WIDTH * 12, x + LINE_WIDTH * 14);
        ctx.moveTo(s + LINE_WIDTH * 15, x + LINE_WIDTH * 14);
        ctx.lineTo(s + LINE_WIDTH * 16, x + LINE_WIDTH * 14);
        ctx.moveTo(s + LINE_WIDTH * 12, x + LINE_WIDTH * 15);
        ctx.lineTo(s + LINE_WIDTH * 13, x + LINE_WIDTH * 15);
        ctx.moveTo(s + LINE_WIDTH * 16, x + LINE_WIDTH * 15);
        ctx.lineTo(s + LINE_WIDTH * 17, x + LINE_WIDTH * 15);
        ctx.moveTo(s + LINE_WIDTH * 12, x + LINE_WIDTH * 16);
        ctx.lineTo(s + LINE_WIDTH * 19, x + LINE_WIDTH * 16);
        ctx.moveTo(s + LINE_WIDTH * 10, x + LINE_WIDTH * 17);
        ctx.lineTo(s + LINE_WIDTH * 19, x + LINE_WIDTH * 17);
        ctx.moveTo(s + LINE_WIDTH * 10, x + LINE_WIDTH * 18);
        ctx.lineTo(s + LINE_WIDTH * 19, x + LINE_WIDTH * 18);
        ctx.moveTo(s + LINE_WIDTH * 10, x + LINE_WIDTH * 19);
        ctx.lineTo(s + LINE_WIDTH * 15, x + LINE_WIDTH * 19);
        ctx.stroke();

        //鞋子
        ctx.beginPath();
        ctx.strokeStyle = '#632705';
        //左边
        ctx.moveTo(s + LINE_WIDTH * 8, x + LINE_WIDTH * 18);
        ctx.lineTo(s + LINE_WIDTH * 10, x + LINE_WIDTH * 18);
        ctx.moveTo(s + LINE_WIDTH * 7, x + LINE_WIDTH * 19);
        ctx.lineTo(s + LINE_WIDTH * 10, x + LINE_WIDTH * 19);
        ctx.moveTo(s + LINE_WIDTH * 7, x + LINE_WIDTH * 20);
        ctx.lineTo(s + LINE_WIDTH * 9, x + LINE_WIDTH * 20);
        //右边
        ctx.moveTo(s + LINE_WIDTH * 20, x + LINE_WIDTH * 14);
        ctx.lineTo(s + LINE_WIDTH * 21, x + LINE_WIDTH * 14);
        ctx.moveTo(s + LINE_WIDTH * 19, x + LINE_WIDTH * 15);
        ctx.lineTo(s + LINE_WIDTH * 21, x + LINE_WIDTH * 15);
        ctx.moveTo(s + LINE_WIDTH * 19, x + LINE_WIDTH * 16);
        ctx.lineTo(s + LINE_WIDTH * 21, x + LINE_WIDTH * 16);
        ctx.moveTo(s + LINE_WIDTH * 19, x + LINE_WIDTH * 17);
        ctx.lineTo(s + LINE_WIDTH * 21, x + LINE_WIDTH * 17);
        ctx.moveTo(s + LINE_WIDTH * 19, x + LINE_WIDTH * 18);
        ctx.lineTo(s + LINE_WIDTH * 21, x + LINE_WIDTH * 18);
        ctx.stroke();

        //扣子
        ctx.beginPath();
        ctx.strokeStyle = '#fff';
        ctx.moveTo(s + LINE_WIDTH * 16, x + LINE_WIDTH * 16);
        ctx.lineTo(s + LINE_WIDTH * 17, x + LINE_WIDTH * 16);
        ctx.moveTo(s + LINE_WIDTH * 13, x + LINE_WIDTH * 17);
        ctx.lineTo(s + LINE_WIDTH * 14, x + LINE_WIDTH * 17);
        ctx.stroke();

    }

    //跳起的mario
    function drawMarioB1(ctx, s) {
        var x = LINE_WIDTH       + (SCREEN_HEIGHT - SCREEN_HEIGHT * 0.4);
        //帽子
        ctx.beginPath();
        ctx.strokeStyle = "#e00000";
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 10), x + LINE_WIDTH * 7);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 15), x + LINE_WIDTH * 7);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 9), x + LINE_WIDTH * 8);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 18), x + LINE_WIDTH * 8);
        ctx.stroke();

        //皮肤
        ctx.beginPath();
        ctx.strokeStyle = '#f7d7c2';
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 12), x + LINE_WIDTH * 9);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 16), x + LINE_WIDTH * 9);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 9), x + LINE_WIDTH * 10);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 18), x + LINE_WIDTH * 10);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 9), x + LINE_WIDTH * 11);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 19), x + LINE_WIDTH * 11);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 10), x + LINE_WIDTH * 12);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 18), x + LINE_WIDTH * 12);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 10), x + LINE_WIDTH * 13);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 17), x + LINE_WIDTH * 13);
        //手
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 17), x + LINE_WIDTH * 7);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 20), x + LINE_WIDTH * 7);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 18), x + LINE_WIDTH * 8);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 20), x + LINE_WIDTH * 8);
        ctx.stroke();

        //头发
        ctx.beginPath();
        ctx.strokeStyle = "#772102";
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 9), x + LINE_WIDTH * 9);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 12), x + LINE_WIDTH * 9);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 10), x + LINE_WIDTH * 10);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 11), x + LINE_WIDTH * 10);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 10), x + LINE_WIDTH * 11);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 12), x + LINE_WIDTH * 11);

        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 8), x + LINE_WIDTH * 10);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 9), x + LINE_WIDTH * 10);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 8), x + LINE_WIDTH * 11);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 9), x + LINE_WIDTH * 11);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 8), x + LINE_WIDTH * 12);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 10), x + LINE_WIDTH * 12);
        ctx.stroke();

        //胡子和眼睛
        ctx.beginPath();
        ctx.strokeStyle = '#000';
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 14), x + LINE_WIDTH * 9);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 15), x + LINE_WIDTH * 9);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 14), x + LINE_WIDTH * 10);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 15), x + LINE_WIDTH * 10);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 15), x + LINE_WIDTH * 11);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 16), x + LINE_WIDTH * 11);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 14), x + LINE_WIDTH * 12);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 18), x + LINE_WIDTH * 12);
        ctx.stroke();

        //红色衣服
        ctx.beginPath();
        ctx.strokeStyle = '#e00000';
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 17), x + LINE_WIDTH * 9);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 20), x + LINE_WIDTH * 9);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 18), x + LINE_WIDTH * 10);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 20), x + LINE_WIDTH * 10);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 19), x + LINE_WIDTH * 11);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 20), x + LINE_WIDTH * 11);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 18), x + LINE_WIDTH * 12);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 19), x + LINE_WIDTH * 12);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 17), x + LINE_WIDTH * 13);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 19), x + LINE_WIDTH * 13);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 7), x + LINE_WIDTH * 14);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 18), x + LINE_WIDTH * 14);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 7), x + LINE_WIDTH * 15);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 17), x + LINE_WIDTH * 15);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 8), x + LINE_WIDTH * 16);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 17), x + LINE_WIDTH * 16);
        ctx.stroke();

        //蓝色衣服
        ctx.beginPath();
        ctx.strokeStyle = '#2b4bf4';
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 11), x + LINE_WIDTH * 14);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 12), x + LINE_WIDTH * 14);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 15), x + LINE_WIDTH * 14);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 16), x + LINE_WIDTH * 14);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 12), x + LINE_WIDTH * 15);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 13), x + LINE_WIDTH * 15);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 16), x + LINE_WIDTH * 15);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 17), x + LINE_WIDTH * 15);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 12), x + LINE_WIDTH * 16);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 19), x + LINE_WIDTH * 16);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 10), x + LINE_WIDTH * 17);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 19), x + LINE_WIDTH * 17);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 10), x + LINE_WIDTH * 18);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 19), x + LINE_WIDTH * 18);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 10), x + LINE_WIDTH * 19);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 15), x + LINE_WIDTH * 19);
        ctx.stroke();

        //鞋子
        ctx.beginPath();
        ctx.strokeStyle = '#632705';
        //左边
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 8), x + LINE_WIDTH * 18);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 10), x + LINE_WIDTH * 18);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 7), x + LINE_WIDTH * 19);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 10), x + LINE_WIDTH * 19);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 7), x + LINE_WIDTH * 20);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 9), x + LINE_WIDTH * 20);
        //右边
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 20), x + LINE_WIDTH * 14);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 21), x + LINE_WIDTH * 14);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 19), x + LINE_WIDTH * 15);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 21), x + LINE_WIDTH * 15);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 19), x + LINE_WIDTH * 16);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 21), x + LINE_WIDTH * 16);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 19), x + LINE_WIDTH * 17);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 21), x + LINE_WIDTH * 17);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 19), x + LINE_WIDTH * 18);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 21), x + LINE_WIDTH * 18);
        ctx.stroke();

        //扣子
        ctx.beginPath();
        ctx.strokeStyle = '#fff';
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 16), x + LINE_WIDTH * 16);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 17), x + LINE_WIDTH * 16);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 13), x + LINE_WIDTH * 17);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 14), x + LINE_WIDTH * 17);
        ctx.stroke();

    }

    //行走的mario
    function drawMarioC(ctx, s) {
        var x = LINE_WIDTH * 4       + (SCREEN_HEIGHT - SCREEN_HEIGHT * 0.4);
        s = s;
        //帽子
        ctx.beginPath();
        ctx.strokeStyle = "#e00000";
        ctx.moveTo(s + LINE_WIDTH * 10, x + LINE_WIDTH * 7);
        ctx.lineTo(s + LINE_WIDTH * 15, x + LINE_WIDTH * 7);
        ctx.moveTo(s + LINE_WIDTH * 9, x + LINE_WIDTH * 8);
        ctx.lineTo(s + LINE_WIDTH * 18, x + LINE_WIDTH * 8);
        ctx.stroke();

        //皮肤
        ctx.beginPath();
        ctx.strokeStyle = '#f7d7c2';
        ctx.moveTo(s + LINE_WIDTH * 12, x + LINE_WIDTH * 9);
        ctx.lineTo(s + LINE_WIDTH * 16, x + LINE_WIDTH * 9);
        ctx.moveTo(s + LINE_WIDTH * 9, x + LINE_WIDTH * 10);
        ctx.lineTo(s + LINE_WIDTH * 18, x + LINE_WIDTH * 10);
        ctx.moveTo(s + LINE_WIDTH * 9, x + LINE_WIDTH * 11);
        ctx.lineTo(s + LINE_WIDTH * 19, x + LINE_WIDTH * 11);
        ctx.moveTo(s + LINE_WIDTH * 10, x + LINE_WIDTH * 12);
        ctx.lineTo(s + LINE_WIDTH * 18, x + LINE_WIDTH * 12);
        ctx.moveTo(s + LINE_WIDTH * 10, x + LINE_WIDTH * 13);
        ctx.lineTo(s + LINE_WIDTH * 17, x + LINE_WIDTH * 13);
        //手
        ctx.moveTo(s + LINE_WIDTH * 17, x + LINE_WIDTH * 7);
        ctx.lineTo(s + LINE_WIDTH * 20, x + LINE_WIDTH * 7);
        ctx.moveTo(s + LINE_WIDTH * 18, x + LINE_WIDTH * 8);
        ctx.lineTo(s + LINE_WIDTH * 20, x + LINE_WIDTH * 8);
        ctx.stroke();

        //头发
        ctx.beginPath();
        ctx.strokeStyle = "#772102";
        ctx.moveTo(s + LINE_WIDTH * 9, x + LINE_WIDTH * 9);
        ctx.lineTo(s + LINE_WIDTH * 12, x + LINE_WIDTH * 9);
        ctx.moveTo(s + LINE_WIDTH * 10, x + LINE_WIDTH * 10);
        ctx.lineTo(s + LINE_WIDTH * 11, x + LINE_WIDTH * 10);
        ctx.moveTo(s + LINE_WIDTH * 10, x + LINE_WIDTH * 11);
        ctx.lineTo(s + LINE_WIDTH * 12, x + LINE_WIDTH * 11);

        ctx.moveTo(s + LINE_WIDTH * 8, x + LINE_WIDTH * 10);
        ctx.lineTo(s + LINE_WIDTH * 9, x + LINE_WIDTH * 10);
        ctx.moveTo(s + LINE_WIDTH * 8, x + LINE_WIDTH * 11);
        ctx.lineTo(s + LINE_WIDTH * 9, x + LINE_WIDTH * 11);
        ctx.moveTo(s + LINE_WIDTH * 8, x + LINE_WIDTH * 12);
        ctx.lineTo(s + LINE_WIDTH * 10, x + LINE_WIDTH * 12);
        ctx.stroke();

        //胡子和眼睛
        ctx.beginPath();
        ctx.strokeStyle = '#000';
        ctx.moveTo(s + LINE_WIDTH * 14, x + LINE_WIDTH * 9);
        ctx.lineTo(s + LINE_WIDTH * 15, x + LINE_WIDTH * 9);
        ctx.moveTo(s + LINE_WIDTH * 14, x + LINE_WIDTH * 10);
        ctx.lineTo(s + LINE_WIDTH * 15, x + LINE_WIDTH * 10);
        ctx.moveTo(s + LINE_WIDTH * 15, x + LINE_WIDTH * 11);
        ctx.lineTo(s + LINE_WIDTH * 16, x + LINE_WIDTH * 11);
        ctx.moveTo(s + LINE_WIDTH * 14, x + LINE_WIDTH * 12);
        ctx.lineTo(s + LINE_WIDTH * 18, x + LINE_WIDTH * 12);
        ctx.stroke();

        //红色衣服
        ctx.beginPath();
        ctx.strokeStyle = '#e00000';
        ctx.moveTo(s + LINE_WIDTH * 17, x + LINE_WIDTH * 9);
        ctx.lineTo(s + LINE_WIDTH * 20, x + LINE_WIDTH * 9);
        ctx.moveTo(s + LINE_WIDTH * 18, x + LINE_WIDTH * 10);
        ctx.lineTo(s + LINE_WIDTH * 20, x + LINE_WIDTH * 10);
        ctx.moveTo(s + LINE_WIDTH * 19, x + LINE_WIDTH * 11);
        ctx.lineTo(s + LINE_WIDTH * 20, x + LINE_WIDTH * 11);
        ctx.moveTo(s + LINE_WIDTH * 18, x + LINE_WIDTH * 12);
        ctx.lineTo(s + LINE_WIDTH * 19, x + LINE_WIDTH * 12);
        ctx.moveTo(s + LINE_WIDTH * 17, x + LINE_WIDTH * 13);
        ctx.lineTo(s + LINE_WIDTH * 19, x + LINE_WIDTH * 13);
        ctx.moveTo(s + LINE_WIDTH * 7, x + LINE_WIDTH * 14);
        ctx.lineTo(s + LINE_WIDTH * 18, x + LINE_WIDTH * 14);
        ctx.moveTo(s + LINE_WIDTH * 7, x + LINE_WIDTH * 15);
        ctx.lineTo(s + LINE_WIDTH * 17, x + LINE_WIDTH * 15);
        ctx.moveTo(s + LINE_WIDTH * 8, x + LINE_WIDTH * 16);
        ctx.lineTo(s + LINE_WIDTH * 17, x + LINE_WIDTH * 16);
        ctx.stroke();

        //蓝色衣服
        ctx.beginPath();
        ctx.strokeStyle = '#2b4bf4';
        ctx.moveTo(s + LINE_WIDTH * 11, x + LINE_WIDTH * 14);
        ctx.lineTo(s + LINE_WIDTH * 12, x + LINE_WIDTH * 14);
        ctx.moveTo(s + LINE_WIDTH * 15, x + LINE_WIDTH * 14);
        ctx.lineTo(s + LINE_WIDTH * 16, x + LINE_WIDTH * 14);
        ctx.moveTo(s + LINE_WIDTH * 12, x + LINE_WIDTH * 15);
        ctx.lineTo(s + LINE_WIDTH * 13, x + LINE_WIDTH * 15);
        ctx.moveTo(s + LINE_WIDTH * 16, x + LINE_WIDTH * 15);
        ctx.lineTo(s + LINE_WIDTH * 17, x + LINE_WIDTH * 15);
        ctx.moveTo(s + LINE_WIDTH * 12, x + LINE_WIDTH * 16);
        ctx.lineTo(s + LINE_WIDTH * 19, x + LINE_WIDTH * 16);
        ctx.moveTo(s + LINE_WIDTH * 10, x + LINE_WIDTH * 17);
        ctx.lineTo(s + LINE_WIDTH * 19, x + LINE_WIDTH * 17);
        ctx.moveTo(s + LINE_WIDTH * 10, x + LINE_WIDTH * 18);
        ctx.lineTo(s + LINE_WIDTH * 19, x + LINE_WIDTH * 18);
        ctx.moveTo(s + LINE_WIDTH * 10, x + LINE_WIDTH * 19);
        ctx.lineTo(s + LINE_WIDTH * 15, x + LINE_WIDTH * 19);
        ctx.stroke();

        //鞋子
        ctx.beginPath();
        ctx.strokeStyle = '#632705';
        //左边
        ctx.moveTo(s + LINE_WIDTH * 8, x + LINE_WIDTH * 18);
        ctx.lineTo(s + LINE_WIDTH * 10, x + LINE_WIDTH * 18);
        ctx.moveTo(s + LINE_WIDTH * 7, x + LINE_WIDTH * 19);
        ctx.lineTo(s + LINE_WIDTH * 10, x + LINE_WIDTH * 19);
        ctx.moveTo(s + LINE_WIDTH * 7, x + LINE_WIDTH * 20);
        ctx.lineTo(s + LINE_WIDTH * 9, x + LINE_WIDTH * 20);
        //右边
        ctx.moveTo(s + LINE_WIDTH * 20, x + LINE_WIDTH * 14);
        ctx.lineTo(s + LINE_WIDTH * 21, x + LINE_WIDTH * 14);
        ctx.moveTo(s + LINE_WIDTH * 19, x + LINE_WIDTH * 15);
        ctx.lineTo(s + LINE_WIDTH * 21, x + LINE_WIDTH * 15);
        ctx.moveTo(s + LINE_WIDTH * 19, x + LINE_WIDTH * 16);
        ctx.lineTo(s + LINE_WIDTH * 21, x + LINE_WIDTH * 16);
        ctx.moveTo(s + LINE_WIDTH * 19, x + LINE_WIDTH * 17);
        ctx.lineTo(s + LINE_WIDTH * 21, x + LINE_WIDTH * 17);
        ctx.moveTo(s + LINE_WIDTH * 19, x + LINE_WIDTH * 18);
        ctx.lineTo(s + LINE_WIDTH * 21, x + LINE_WIDTH * 18);
        ctx.stroke();

        //扣子
        ctx.beginPath();
        ctx.strokeStyle = '#fff';
        ctx.moveTo(s + LINE_WIDTH * 16, x + LINE_WIDTH * 16);
        ctx.lineTo(s + LINE_WIDTH * 17, x + LINE_WIDTH * 16);
        ctx.moveTo(s + LINE_WIDTH * 13, x + LINE_WIDTH * 17);
        ctx.lineTo(s + LINE_WIDTH * 14, x + LINE_WIDTH * 17);
        ctx.stroke();
    }

    //行走的mario
    function drawMarioC1(ctx, s) {
        var x = LINE_WIDTH * 4       + (SCREEN_HEIGHT - SCREEN_HEIGHT * 0.4);
        s = s;
        //帽子
        ctx.beginPath();
        ctx.strokeStyle = "#e00000";
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 10), x + LINE_WIDTH * 7);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 15), x + LINE_WIDTH * 7);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 9), x + LINE_WIDTH * 8);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 18), x + LINE_WIDTH * 8);
        ctx.stroke();

        //皮肤
        ctx.beginPath();
        ctx.strokeStyle = '#f7d7c2';
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 12), x + LINE_WIDTH * 9);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 16), x + LINE_WIDTH * 9);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 9), x + LINE_WIDTH * 10);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 18), x + LINE_WIDTH * 10);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 9), x + LINE_WIDTH * 11);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 19), x + LINE_WIDTH * 11);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 10), x + LINE_WIDTH * 12);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 18), x + LINE_WIDTH * 12);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 10), x + LINE_WIDTH * 13);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 17), x + LINE_WIDTH * 13);
        //手
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 17), x + LINE_WIDTH * 7);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 20), x + LINE_WIDTH * 7);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 18), x + LINE_WIDTH * 8);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 20), x + LINE_WIDTH * 8);
        ctx.stroke();

        //头发
        ctx.beginPath();
        ctx.strokeStyle = "#772102";
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 9), x + LINE_WIDTH * 9);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 12), x + LINE_WIDTH * 9);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 10), x + LINE_WIDTH * 10);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 11), x + LINE_WIDTH * 10);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 10), x + LINE_WIDTH * 11);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 12), x + LINE_WIDTH * 11);

        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 8), x + LINE_WIDTH * 10);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 9), x + LINE_WIDTH * 10);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 8), x + LINE_WIDTH * 11);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 9), x + LINE_WIDTH * 11);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 8), x + LINE_WIDTH * 12);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 10), x + LINE_WIDTH * 12);
        ctx.stroke();

        //胡子和眼睛
        ctx.beginPath();
        ctx.strokeStyle = '#000';
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 14), x + LINE_WIDTH * 9);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 15), x + LINE_WIDTH * 9);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 14), x + LINE_WIDTH * 10);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 15), x + LINE_WIDTH * 10);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 15), x + LINE_WIDTH * 11);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 16), x + LINE_WIDTH * 11);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 14), x + LINE_WIDTH * 12);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 18), x + LINE_WIDTH * 12);
        ctx.stroke();

        //红色衣服
        ctx.beginPath();
        ctx.strokeStyle = '#e00000';
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 17), x + LINE_WIDTH * 9);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 20), x + LINE_WIDTH * 9);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 18), x + LINE_WIDTH * 10);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 20), x + LINE_WIDTH * 10);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 19), x + LINE_WIDTH * 11);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 20), x + LINE_WIDTH * 11);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 18), x + LINE_WIDTH * 12);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 19), x + LINE_WIDTH * 12);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 17), x + LINE_WIDTH * 13);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 19), x + LINE_WIDTH * 13);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 7), x + LINE_WIDTH * 14);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 18), x + LINE_WIDTH * 14);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 7), x + LINE_WIDTH * 15);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 17), x + LINE_WIDTH * 15);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 8), x + LINE_WIDTH * 16);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 17), x + LINE_WIDTH * 16);
        ctx.stroke();

        //蓝色衣服
        ctx.beginPath();
        ctx.strokeStyle = '#2b4bf4';
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 11), x + LINE_WIDTH * 14);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 12), x + LINE_WIDTH * 14);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 15), x + LINE_WIDTH * 14);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 16), x + LINE_WIDTH * 14);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 12), x + LINE_WIDTH * 15);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 13), x + LINE_WIDTH * 15);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 16), x + LINE_WIDTH * 15);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 17), x + LINE_WIDTH * 15);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 12), x + LINE_WIDTH * 16);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 19), x + LINE_WIDTH * 16);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 10), x + LINE_WIDTH * 17);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 19), x + LINE_WIDTH * 17);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 10), x + LINE_WIDTH * 18);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 19), x + LINE_WIDTH * 18);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 10), x + LINE_WIDTH * 19);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 15), x + LINE_WIDTH * 19);
        ctx.stroke();

        //鞋子
        ctx.beginPath();
        ctx.strokeStyle = '#632705';
        //左边
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 8), x + LINE_WIDTH * 18);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 10), x + LINE_WIDTH * 18);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 7), x + LINE_WIDTH * 19);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 10), x + LINE_WIDTH * 19);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 7), x + LINE_WIDTH * 20);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 9), x + LINE_WIDTH * 20);
        //右边
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 20), x + LINE_WIDTH * 14);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 21), x + LINE_WIDTH * 14);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 19), x + LINE_WIDTH * 15);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 21), x + LINE_WIDTH * 15);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 19), x + LINE_WIDTH * 16);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 21), x + LINE_WIDTH * 16);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 19), x + LINE_WIDTH * 17);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 21), x + LINE_WIDTH * 17);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 19), x + LINE_WIDTH * 18);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 21), x + LINE_WIDTH * 18);
        ctx.stroke();

        //扣子
        ctx.beginPath();
        ctx.strokeStyle = '#fff';
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 16), x + LINE_WIDTH * 16);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 17), x + LINE_WIDTH * 16);
        ctx.moveTo(SCREEN_WIDTH - (s + LINE_WIDTH * 13), x + LINE_WIDTH * 17);
        ctx.lineTo(SCREEN_WIDTH - (s + LINE_WIDTH * 14), x + LINE_WIDTH * 17);
        ctx.stroke();
    }

</script>
</body>
</html>

优化代码:
1、运用ctx.translate()移动画布,改变画布的坐标轴位置来进行绘制反方向的图像。
注意:在移动前,先用ctx.save();保存当前画布,然后进行移动,绘制。绘制完成后恢复之前的保存状态ctx.restore();这样删除了一半的冗余的代码。
html 代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="keywords" content="your keywords">
    <meta name="description" content="your description">
    <meta name="author" content="author,email address">
    <meta name="robots" content="index,follow">
    <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
    <meta name="renderer" content="ie-stand">
    <title>Super Mario</title>
    <style>
        body {
            padding: 0;
            margin: 0;
            overflow: hidden;
        }
    </style>
</head>
<body>
<canvas id="bg"></canvas>
<canvas id="screen" style="position: absolute;top: 0;"></canvas>
<script>
    var SCREEN_WIDTH = document.documentElement.clientWidth;
    var SCREEN_HEIGHT = document.documentElement.clientHeight;
    var LINE_WIDTH = 5;
    var s = 0;
    var s1 = 0;
    var exp = 1;
    var currentStatus = 'right';
    var bg = new Image();
    var canvas = document.getElementById('screen');
    canvas.width = SCREEN_WIDTH;
    canvas.height = SCREEN_HEIGHT;
    var ctx = canvas.getContext('2d');

    var bgCanvas = document.getElementById('bg');
    bgCanvas.width = SCREEN_WIDTH;
    bgCanvas.height = SCREEN_HEIGHT;
    var bgContext = bgCanvas.getContext('2d');

    ctx.lineWidth = LINE_WIDTH;
    var control = new Control();//实例化游戏控制类
    init();
    drawMarioA(ctx, s1, 1);
    var interval;

    function init() {
        bg.src = 'http://cdn.attach.qdfuns.com/notes/pics/201711/30/163940zti73hgoxh5ah39z.png';
        bgContext.drawImage(bg, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
    }

    //游戏控制类
    function Control() {
        this.code = {37: 'left', 39: 'right', 38: 'jump', 40: 'down'}
        this.status = {'left': false, 'right': false, 'jump': false, 'down': false};
        document.addEventListener("keydown", function (e) {
            var status = this.code[e.keyCode];
            if (!status) return;
            this.status[status] = true;
            clearInterval(interval);
            interval = setInterval(start, 1000 / 60);
        }.bind(this))
        document.addEventListener("keyup", function (e) {
            clearInterval(interval);
            var status = this.code[e.keyCode];
            if (!status) return;
            this.status[status] = false;
            ctx.clearRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
            if (e.keyCode == 37 || e.keyCode == 39) {
                currentStatus = this.code[e.keyCode];
            }
            if (currentStatus == 'right') {
                drawMarioA(ctx, s1, 1);
            } else {
                drawMarioA(ctx, SCREEN_WIDTH - s1 - 100, -1);
            }
        }.bind(this))
    }

    function start() {
        ctx.clearRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
        if (control.status.left) {
            if (s > 0) { //判断当前线的位置,控制在区域内
                s = s - 1;
            }
            s1 = s;
            run(ctx, SCREEN_WIDTH - s - 100, 'left');
        } else if (control.status.right) {
            if (s <= SCREEN_WIDTH - 100) { //判断当前线的位置,控制在区域内
                s = s1 + 1; //起点+活动像素位置
            } else {
                s = s1;
            }
            s1 = s;
            run(ctx, s, 'right');
        } else if (control.status.jump) {
            if (currentStatus == 'right') {
                drawMarioB(ctx, s1, 1);
            } else {
                drawMarioB(ctx, SCREEN_WIDTH - s1 - 100, -1);
            }
        } else {
            if (currentStatus == 'right') {
                drawMarioA(ctx, s1, 1);
            } else {
                drawMarioA(ctx, SCREEN_WIDTH - s1 - 100, -1);
            }
        }
    }

    function run(ctx, s, d) {
        var p = 1;
        if (d == 'left') {
            p = -1;
        }
        drawMarioC(ctx, s, p);
        setTimeout(function () {
            ctx.clearRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
            drawMarioA(ctx, s, p);
        }, 10);
    }

    //站着的mario
    function drawMarioA(ctx, s, p) {
        ctx.save();
        if (p == -1) {
            ctx.translate(SCREEN_WIDTH, 0);
        }
        var x = LINE_WIDTH + (SCREEN_HEIGHT - SCREEN_HEIGHT * 0.4);
        //帽子
        ctx.beginPath();
        ctx.strokeStyle = "#e00000";
        ctx.moveTo(p * (s + (LINE_WIDTH * 10)), x + LINE_WIDTH * 10);
        ctx.lineTo(p * (s + (LINE_WIDTH * 15)), x + LINE_WIDTH * 10);
        ctx.moveTo(p * (s + (LINE_WIDTH * 9)), x + LINE_WIDTH * 11);
        ctx.lineTo(p * (s + (LINE_WIDTH * 18)), x + LINE_WIDTH * 11);
        ctx.stroke();

        //皮肤
        ctx.beginPath();
        ctx.strokeStyle = '#f7d7c2';
        ctx.moveTo(p * (s + (LINE_WIDTH * 12)), x + LINE_WIDTH * 12);
        ctx.lineTo(p * (s + (LINE_WIDTH * 16)), x + LINE_WIDTH * 12);
        ctx.moveTo(p * (s + (LINE_WIDTH * 9)), x + LINE_WIDTH * 13);
        ctx.lineTo(p * (s + (LINE_WIDTH * 18)), x + LINE_WIDTH * 13);
        ctx.moveTo(p * (s + (LINE_WIDTH * 9)), x + LINE_WIDTH * 14);
        ctx.lineTo(p * (s + (LINE_WIDTH * 19)), x + LINE_WIDTH * 14);
        ctx.moveTo(p * (s + (LINE_WIDTH * 10)), x + LINE_WIDTH * 15);
        ctx.lineTo(p * (s + (LINE_WIDTH * 18)), x + LINE_WIDTH * 15);
        ctx.moveTo(p * (s + (LINE_WIDTH * 10)), x + LINE_WIDTH * 16);
        ctx.lineTo(p * (s + (LINE_WIDTH * 17)), x + LINE_WIDTH * 16);
        //手
        ctx.moveTo(p * (s + (LINE_WIDTH * 7)), x + LINE_WIDTH * 20);
        ctx.lineTo(p * (s + (LINE_WIDTH * 19)), x + LINE_WIDTH * 20);
        ctx.moveTo(p * (s + (LINE_WIDTH * 7)), x + LINE_WIDTH * 21);
        ctx.lineTo(p * (s + (LINE_WIDTH * 19)), x + LINE_WIDTH * 21);
        ctx.moveTo(p * (s + (LINE_WIDTH * 7)), x + LINE_WIDTH * 22);
        ctx.lineTo(p * (s + (LINE_WIDTH * 19)), x + LINE_WIDTH * 22);
        ctx.stroke();

        //头发
        ctx.beginPath();
        ctx.strokeStyle = "#772102";
        ctx.moveTo(p * (s + (LINE_WIDTH * 9)), x + LINE_WIDTH * 12);
        ctx.lineTo(p * (s + (LINE_WIDTH * 12)), x + LINE_WIDTH * 12);
        ctx.moveTo(p * (s + (LINE_WIDTH * 10)), x + LINE_WIDTH * 13);
        ctx.lineTo(p * (s + (LINE_WIDTH * 11)), x + LINE_WIDTH * 13);
        ctx.moveTo(p * (s + (LINE_WIDTH * 10)), x + LINE_WIDTH * 14);
        ctx.lineTo(p * (s + (LINE_WIDTH * 12)), x + LINE_WIDTH * 14);

        ctx.moveTo(p * (s + (LINE_WIDTH * 8)), x + LINE_WIDTH * 13);
        ctx.lineTo(p * (s + (LINE_WIDTH * 9)), x + LINE_WIDTH * 13);
        ctx.moveTo(p * (s + (LINE_WIDTH * 8)), x + LINE_WIDTH * 14);
        ctx.lineTo(p * (s + (LINE_WIDTH * 9)), x + LINE_WIDTH * 14);
        ctx.moveTo(p * (s + (LINE_WIDTH * 8)), x + LINE_WIDTH * 15);
        ctx.lineTo(p * (s + (LINE_WIDTH * 10)), x + LINE_WIDTH * 15);
        ctx.stroke();

        //胡子和眼睛
        ctx.beginPath();
        ctx.strokeStyle = '#000';
        ctx.moveTo(p * (s + (LINE_WIDTH * 14)), x + LINE_WIDTH * 12);
        ctx.lineTo(p * (s + (LINE_WIDTH * 15)), x + LINE_WIDTH * 12);
        ctx.moveTo(p * (s + (LINE_WIDTH * 14)), x + LINE_WIDTH * 13);
        ctx.lineTo(p * (s + (LINE_WIDTH * 15)), x + LINE_WIDTH * 13);
        ctx.moveTo(p * (s + (LINE_WIDTH * 15)), x + LINE_WIDTH * 14);
        ctx.lineTo(p * (s + (LINE_WIDTH * 16)), x + LINE_WIDTH * 14);
        ctx.moveTo(p * (s + (LINE_WIDTH * 14)), x + LINE_WIDTH * 15);
        ctx.lineTo(p * (s + (LINE_WIDTH * 18)), x + LINE_WIDTH * 15);
        ctx.stroke();

        //红色衣服
        ctx.beginPath();
        ctx.strokeStyle = '#e00000';
        ctx.moveTo(p * (s + (LINE_WIDTH * 9)), x + LINE_WIDTH * 17);
        ctx.lineTo(p * (s + (LINE_WIDTH * 15)), x + LINE_WIDTH * 17);
        ctx.moveTo(p * (s + (LINE_WIDTH * 8)), x + LINE_WIDTH * 18);
        ctx.lineTo(p * (s + (LINE_WIDTH * 18)), x + LINE_WIDTH * 18);
        ctx.moveTo(p * (s + (LINE_WIDTH * 7)), x + LINE_WIDTH * 19);
        ctx.lineTo(p * (s + (LINE_WIDTH * 19)), x + LINE_WIDTH * 19);
        ctx.moveTo(p * (s + (LINE_WIDTH * 9)), x + LINE_WIDTH * 20);
        ctx.lineTo(p * (s + (LINE_WIDTH * 17)), x + LINE_WIDTH * 20);
        ctx.stroke();

        //蓝色衣服
        ctx.beginPath();
        ctx.strokeStyle = '#2b4bf4';
        ctx.moveTo(p * (s + (LINE_WIDTH * 11)), x + LINE_WIDTH * 17);
        ctx.lineTo(p * (s + (LINE_WIDTH * 12)), x + LINE_WIDTH * 17);
        ctx.moveTo(p * (s + (LINE_WIDTH * 11)), x + LINE_WIDTH * 18);
        ctx.lineTo(p * (s + (LINE_WIDTH * 12)), x + LINE_WIDTH * 18);
        ctx.moveTo(p * (s + (LINE_WIDTH * 14)), x + LINE_WIDTH * 18);
        ctx.lineTo(p * (s + (LINE_WIDTH * 15)), x + LINE_WIDTH * 18);
        ctx.moveTo(p * (s + (LINE_WIDTH * 11)), x + LINE_WIDTH * 19);
        ctx.lineTo(p * (s + (LINE_WIDTH * 15)), x + LINE_WIDTH * 19);
        ctx.moveTo(p * (s + (LINE_WIDTH * 10)), x + LINE_WIDTH * 20);
        ctx.lineTo(p * (s + (LINE_WIDTH * 16)), x + LINE_WIDTH * 20);
        ctx.moveTo(p * (s + (LINE_WIDTH * 10)), x + LINE_WIDTH * 21);
        ctx.lineTo(p * (s + (LINE_WIDTH * 16)), x + LINE_WIDTH * 21);
        ctx.moveTo(p * (s + (LINE_WIDTH * 9)), x + LINE_WIDTH * 22);
        ctx.lineTo(p * (s + (LINE_WIDTH * 17)), x + LINE_WIDTH * 22);
        ctx.moveTo(p * (s + (LINE_WIDTH * 9)), x + LINE_WIDTH * 23);
        ctx.lineTo(p * (s + (LINE_WIDTH * 12)), x + LINE_WIDTH * 23);
        ctx.moveTo(p * (s + (LINE_WIDTH * 14)), x + LINE_WIDTH * 23);
        ctx.lineTo(p * (s + (LINE_WIDTH * 17)), x + LINE_WIDTH * 23);
        ctx.stroke();

        //鞋子
        ctx.beginPath();
        ctx.strokeStyle = '#632705';
        ctx.moveTo(p * (s + (LINE_WIDTH * 8)), x + LINE_WIDTH * 24);
        ctx.lineTo(p * (s + (LINE_WIDTH * 11)), x + LINE_WIDTH * 24);
        ctx.moveTo(p * (s + (LINE_WIDTH * 15)), x + LINE_WIDTH * 24);
        ctx.lineTo(p * (s + (LINE_WIDTH * 18)), x + LINE_WIDTH * 24);
        ctx.moveTo(p * (s + (LINE_WIDTH * 7)), x + LINE_WIDTH * 25);
        ctx.lineTo(p * (s + (LINE_WIDTH * 11)), x + LINE_WIDTH * 25);
        ctx.moveTo(p * (s + (LINE_WIDTH * 15)), x + LINE_WIDTH * 25);
        ctx.lineTo(p * (s + (LINE_WIDTH * 19)), x + LINE_WIDTH * 25);
        ctx.stroke();

        //扣子
        ctx.beginPath();
        ctx.strokeStyle = '#fff';
        ctx.moveTo(p * (s + (LINE_WIDTH * 11)), x + LINE_WIDTH * 20);
        ctx.lineTo(p * (s + (LINE_WIDTH * 12)), x + LINE_WIDTH * 20);
        ctx.moveTo(p * (s + (LINE_WIDTH * 14)), x + LINE_WIDTH * 20);
        ctx.lineTo(p * (s + (LINE_WIDTH * 15)), x + LINE_WIDTH * 20);
        ctx.stroke();

        ctx.restore();
    }

    //跳起的mario
    function drawMarioB(ctx, s, p) {
        var x = LINE_WIDTH + (SCREEN_HEIGHT - SCREEN_HEIGHT * 0.4);
        ctx.save();
        if (p == -1) {
            ctx.translate(SCREEN_WIDTH, 0);
        }
        //帽子
        ctx.beginPath();
        ctx.strokeStyle = "#e00000";
        ctx.moveTo(p * (s + LINE_WIDTH * 10), x + LINE_WIDTH * 7);
        ctx.lineTo(p * (s + LINE_WIDTH * 15), x + LINE_WIDTH * 7);
        ctx.moveTo(p * (s + LINE_WIDTH * 9), x + LINE_WIDTH * 8);
        ctx.lineTo(p * (s + LINE_WIDTH * 18), x + LINE_WIDTH * 8);
        ctx.stroke();

        //皮肤
        ctx.beginPath();
        ctx.strokeStyle = '#f7d7c2';
        ctx.moveTo(p * (s + LINE_WIDTH * 12), x + LINE_WIDTH * 9);
        ctx.lineTo(p * (s + LINE_WIDTH * 16), x + LINE_WIDTH * 9);
        ctx.moveTo(p * (s + LINE_WIDTH * 9), x + LINE_WIDTH * 10);
        ctx.lineTo(p * (s + LINE_WIDTH * 18), x + LINE_WIDTH * 10);
        ctx.moveTo(p * (s + LINE_WIDTH * 9), x + LINE_WIDTH * 11);
        ctx.lineTo(p * (s + LINE_WIDTH * 19), x + LINE_WIDTH * 11);
        ctx.moveTo(p * (s + LINE_WIDTH * 10), x + LINE_WIDTH * 12);
        ctx.lineTo(p * (s + LINE_WIDTH * 18), x + LINE_WIDTH * 12);
        ctx.moveTo(p * (s + LINE_WIDTH * 10), x + LINE_WIDTH * 13);
        ctx.lineTo(p * (s + LINE_WIDTH * 17), x + LINE_WIDTH * 13);
        //手
        ctx.moveTo(p * (s + LINE_WIDTH * 17), x + LINE_WIDTH * 7);
        ctx.lineTo(p * (s + LINE_WIDTH * 20), x + LINE_WIDTH * 7);
        ctx.moveTo(p * (s + LINE_WIDTH * 18), x + LINE_WIDTH * 8);
        ctx.lineTo(p * (s + LINE_WIDTH * 20), x + LINE_WIDTH * 8);
        ctx.stroke();

        //头发
        ctx.beginPath();
        ctx.strokeStyle = "#772102";
        ctx.moveTo(p * (s + LINE_WIDTH * 9), x + LINE_WIDTH * 9);
        ctx.lineTo(p * (s + LINE_WIDTH * 12), x + LINE_WIDTH * 9);
        ctx.moveTo(p * (s + LINE_WIDTH * 10), x + LINE_WIDTH * 10);
        ctx.lineTo(p * (s + LINE_WIDTH * 11), x + LINE_WIDTH * 10);
        ctx.moveTo(p * (s + LINE_WIDTH * 10), x + LINE_WIDTH * 11);
        ctx.lineTo(p * (s + LINE_WIDTH * 12), x + LINE_WIDTH * 11);

        ctx.moveTo(p * (s + LINE_WIDTH * 8), x + LINE_WIDTH * 10);
        ctx.lineTo(p * (s + LINE_WIDTH * 9), x + LINE_WIDTH * 10);
        ctx.moveTo(p * (s + LINE_WIDTH * 8), x + LINE_WIDTH * 11);
        ctx.lineTo(p * (s + LINE_WIDTH * 9), x + LINE_WIDTH * 11);
        ctx.moveTo(p * (s + LINE_WIDTH * 8), x + LINE_WIDTH * 12);
        ctx.lineTo(p * (s + LINE_WIDTH * 10), x + LINE_WIDTH * 12);
        ctx.stroke();

        //胡子和眼睛
        ctx.beginPath();
        ctx.strokeStyle = '#000';
        ctx.moveTo(p * (s + LINE_WIDTH * 14), x + LINE_WIDTH * 9);
        ctx.lineTo(p * (s + LINE_WIDTH * 15), x + LINE_WIDTH * 9);
        ctx.moveTo(p * (s + LINE_WIDTH * 14), x + LINE_WIDTH * 10);
        ctx.lineTo(p * (s + LINE_WIDTH * 15), x + LINE_WIDTH * 10);
        ctx.moveTo(p * (s + LINE_WIDTH * 15), x + LINE_WIDTH * 11);
        ctx.lineTo(p * (s + LINE_WIDTH * 16), x + LINE_WIDTH * 11);
        ctx.moveTo(p * (s + LINE_WIDTH * 14), x + LINE_WIDTH * 12);
        ctx.lineTo(p * (s + LINE_WIDTH * 18), x + LINE_WIDTH * 12);
        ctx.stroke();

        //红色衣服
        ctx.beginPath();
        ctx.strokeStyle = '#e00000';
        ctx.moveTo(p * (s + LINE_WIDTH * 17), x + LINE_WIDTH * 9);
        ctx.lineTo(p * (s + LINE_WIDTH * 20), x + LINE_WIDTH * 9);
        ctx.moveTo(p * (s + LINE_WIDTH * 18), x + LINE_WIDTH * 10);
        ctx.lineTo(p * (s + LINE_WIDTH * 20), x + LINE_WIDTH * 10);
        ctx.moveTo(p * (s + LINE_WIDTH * 19), x + LINE_WIDTH * 11);
        ctx.lineTo(p * (s + LINE_WIDTH * 20), x + LINE_WIDTH * 11);
        ctx.moveTo(p * (s + LINE_WIDTH * 18), x + LINE_WIDTH * 12);
        ctx.lineTo(p * (s + LINE_WIDTH * 19), x + LINE_WIDTH * 12);
        ctx.moveTo(p * (s + LINE_WIDTH * 17), x + LINE_WIDTH * 13);
        ctx.lineTo(p * (s + LINE_WIDTH * 19), x + LINE_WIDTH * 13);
        ctx.moveTo(p * (s + LINE_WIDTH * 7), x + LINE_WIDTH * 14);
        ctx.lineTo(p * (s + LINE_WIDTH * 18), x + LINE_WIDTH * 14);
        ctx.moveTo(p * (s + LINE_WIDTH * 7), x + LINE_WIDTH * 15);
        ctx.lineTo(p * (s + LINE_WIDTH * 17), x + LINE_WIDTH * 15);
        ctx.moveTo(p * (s + LINE_WIDTH * 8), x + LINE_WIDTH * 16);
        ctx.lineTo(p * (s + LINE_WIDTH * 17), x + LINE_WIDTH * 16);
        ctx.stroke();

        //蓝色衣服
        ctx.beginPath();
        ctx.strokeStyle = '#2b4bf4';
        ctx.moveTo(p * (s + LINE_WIDTH * 11), x + LINE_WIDTH * 14);
        ctx.lineTo(p * (s + LINE_WIDTH * 12), x + LINE_WIDTH * 14);
        ctx.moveTo(p * (s + LINE_WIDTH * 15), x + LINE_WIDTH * 14);
        ctx.lineTo(p * (s + LINE_WIDTH * 16), x + LINE_WIDTH * 14);
        ctx.moveTo(p * (s + LINE_WIDTH * 12), x + LINE_WIDTH * 15);
        ctx.lineTo(p * (s + LINE_WIDTH * 13), x + LINE_WIDTH * 15);
        ctx.moveTo(p * (s + LINE_WIDTH * 16), x + LINE_WIDTH * 15);
        ctx.lineTo(p * (s + LINE_WIDTH * 17), x + LINE_WIDTH * 15);
        ctx.moveTo(p * (s + LINE_WIDTH * 12), x + LINE_WIDTH * 16);
        ctx.lineTo(p * (s + LINE_WIDTH * 19), x + LINE_WIDTH * 16);
        ctx.moveTo(p * (s + LINE_WIDTH * 10), x + LINE_WIDTH * 17);
        ctx.lineTo(p * (s + LINE_WIDTH * 19), x + LINE_WIDTH * 17);
        ctx.moveTo(p * (s + LINE_WIDTH * 10), x + LINE_WIDTH * 18);
        ctx.lineTo(p * (s + LINE_WIDTH * 19), x + LINE_WIDTH * 18);
        ctx.moveTo(p * (s + LINE_WIDTH * 10), x + LINE_WIDTH * 19);
        ctx.lineTo(p * (s + LINE_WIDTH * 15), x + LINE_WIDTH * 19);
        ctx.stroke();

        //鞋子
        ctx.beginPath();
        ctx.strokeStyle = '#632705';
        //左边
        ctx.moveTo(p * (s + LINE_WIDTH * 8), x + LINE_WIDTH * 18);
        ctx.lineTo(p * (s + LINE_WIDTH * 10), x + LINE_WIDTH * 18);
        ctx.moveTo(p * (s + LINE_WIDTH * 7), x + LINE_WIDTH * 19);
        ctx.lineTo(p * (s + LINE_WIDTH * 10), x + LINE_WIDTH * 19);
        ctx.moveTo(p * (s + LINE_WIDTH * 7), x + LINE_WIDTH * 20);
        ctx.lineTo(p * (s + LINE_WIDTH * 9), x + LINE_WIDTH * 20);
        //右边
        ctx.moveTo(p * (s + LINE_WIDTH * 20), x + LINE_WIDTH * 14);
        ctx.lineTo(p * (s + LINE_WIDTH * 21), x + LINE_WIDTH * 14);
        ctx.moveTo(p * (s + LINE_WIDTH * 19), x + LINE_WIDTH * 15);
        ctx.lineTo(p * (s + LINE_WIDTH * 21), x + LINE_WIDTH * 15);
        ctx.moveTo(p * (s + LINE_WIDTH * 19), x + LINE_WIDTH * 16);
        ctx.lineTo(p * (s + LINE_WIDTH * 21), x + LINE_WIDTH * 16);
        ctx.moveTo(p * (s + LINE_WIDTH * 19), x + LINE_WIDTH * 17);
        ctx.lineTo(p * (s + LINE_WIDTH * 21), x + LINE_WIDTH * 17);
        ctx.moveTo(p * (s + LINE_WIDTH * 19), x + LINE_WIDTH * 18);
        ctx.lineTo(p * (s + LINE_WIDTH * 21), x + LINE_WIDTH * 18);
        ctx.stroke();

        //扣子
        ctx.beginPath();
        ctx.strokeStyle = '#fff';
        ctx.moveTo(p * (s + LINE_WIDTH * 16), x + LINE_WIDTH * 16);
        ctx.lineTo(p * (s + LINE_WIDTH * 17), x + LINE_WIDTH * 16);
        ctx.moveTo(p * (s + LINE_WIDTH * 13), x + LINE_WIDTH * 17);
        ctx.lineTo(p * (s + LINE_WIDTH * 14), x + LINE_WIDTH * 17);
        ctx.stroke();

        ctx.restore();
    }

    //行走的mario
    function drawMarioC(ctx, s, p) {
        var x = LINE_WIDTH * 4 + (SCREEN_HEIGHT - SCREEN_HEIGHT * 0.4);
        ctx.save();
        if (p == -1) {
            ctx.translate(SCREEN_WIDTH, 0);
        }
        //帽子
        ctx.beginPath();
        ctx.strokeStyle = "#e00000";
        ctx.moveTo(p * (s + LINE_WIDTH * 10), x + LINE_WIDTH * 7);
        ctx.lineTo(p * (s + LINE_WIDTH * 15), x + LINE_WIDTH * 7);
        ctx.moveTo(p * (s + LINE_WIDTH * 9), x + LINE_WIDTH * 8);
        ctx.lineTo(p * (s + LINE_WIDTH * 18), x + LINE_WIDTH * 8);
        ctx.stroke();

        //皮肤
        ctx.beginPath();
        ctx.strokeStyle = '#f7d7c2';
        ctx.moveTo(p * (s + LINE_WIDTH * 12), x + LINE_WIDTH * 9);
        ctx.lineTo(p * (s + LINE_WIDTH * 16), x + LINE_WIDTH * 9);
        ctx.moveTo(p * (s + LINE_WIDTH * 9), x + LINE_WIDTH * 10);
        ctx.lineTo(p * (s + LINE_WIDTH * 18), x + LINE_WIDTH * 10);
        ctx.moveTo(p * (s + LINE_WIDTH * 9), x + LINE_WIDTH * 11);
        ctx.lineTo(p * (s + LINE_WIDTH * 19), x + LINE_WIDTH * 11);
        ctx.moveTo(p * (s + LINE_WIDTH * 10), x + LINE_WIDTH * 12);
        ctx.lineTo(p * (s + LINE_WIDTH * 18), x + LINE_WIDTH * 12);
        ctx.moveTo(p * (s + LINE_WIDTH * 10), x + LINE_WIDTH * 13);
        ctx.lineTo(p * (s + LINE_WIDTH * 17), x + LINE_WIDTH * 13);
        //手
        ctx.moveTo(p * (s + LINE_WIDTH * 17), x + LINE_WIDTH * 7);
        ctx.lineTo(p * (s + LINE_WIDTH * 20), x + LINE_WIDTH * 7);
        ctx.moveTo(p * (s + LINE_WIDTH * 18), x + LINE_WIDTH * 8);
        ctx.lineTo(p * (s + LINE_WIDTH * 20), x + LINE_WIDTH * 8);
        ctx.stroke();

        //头发
        ctx.beginPath();
        ctx.strokeStyle = "#772102";
        ctx.moveTo(p * (s + LINE_WIDTH * 9), x + LINE_WIDTH * 9);
        ctx.lineTo(p * (s + LINE_WIDTH * 12), x + LINE_WIDTH * 9);
        ctx.moveTo(p * (s + LINE_WIDTH * 10), x + LINE_WIDTH * 10);
        ctx.lineTo(p * (s + LINE_WIDTH * 11), x + LINE_WIDTH * 10);
        ctx.moveTo(p * (s + LINE_WIDTH * 10), x + LINE_WIDTH * 11);
        ctx.lineTo(p * (s + LINE_WIDTH * 12), x + LINE_WIDTH * 11);

        ctx.moveTo(p * (s + LINE_WIDTH * 8), x + LINE_WIDTH * 10);
        ctx.lineTo(p * (s + LINE_WIDTH * 9), x + LINE_WIDTH * 10);
        ctx.moveTo(p * (s + LINE_WIDTH * 8), x + LINE_WIDTH * 11);
        ctx.lineTo(p * (s + LINE_WIDTH * 9), x + LINE_WIDTH * 11);
        ctx.moveTo(p * (s + LINE_WIDTH * 8), x + LINE_WIDTH * 12);
        ctx.lineTo(p * (s + LINE_WIDTH * 10), x + LINE_WIDTH * 12);
        ctx.stroke();

        //胡子和眼睛
        ctx.beginPath();
        ctx.strokeStyle = '#000';
        ctx.moveTo(p * (s + LINE_WIDTH * 14), x + LINE_WIDTH * 9);
        ctx.lineTo(p * (s + LINE_WIDTH * 15), x + LINE_WIDTH * 9);
        ctx.moveTo(p * (s + LINE_WIDTH * 14), x + LINE_WIDTH * 10);
        ctx.lineTo(p * (s + LINE_WIDTH * 15), x + LINE_WIDTH * 10);
        ctx.moveTo(p * (s + LINE_WIDTH * 15), x + LINE_WIDTH * 11);
        ctx.lineTo(p * (s + LINE_WIDTH * 16), x + LINE_WIDTH * 11);
        ctx.moveTo(p * (s + LINE_WIDTH * 14), x + LINE_WIDTH * 12);
        ctx.lineTo(p * (s + LINE_WIDTH * 18), x + LINE_WIDTH * 12);
        ctx.stroke();

        //红色衣服
        ctx.beginPath();
        ctx.strokeStyle = '#e00000';
        ctx.moveTo(p * (s + LINE_WIDTH * 17), x + LINE_WIDTH * 9);
        ctx.lineTo(p * (s + LINE_WIDTH * 20), x + LINE_WIDTH * 9);
        ctx.moveTo(p * (s + LINE_WIDTH * 18), x + LINE_WIDTH * 10);
        ctx.lineTo(p * (s + LINE_WIDTH * 20), x + LINE_WIDTH * 10);
        ctx.moveTo(p * (s + LINE_WIDTH * 19), x + LINE_WIDTH * 11);
        ctx.lineTo(p * (s + LINE_WIDTH * 20), x + LINE_WIDTH * 11);
        ctx.moveTo(p * (s + LINE_WIDTH * 18), x + LINE_WIDTH * 12);
        ctx.lineTo(p * (s + LINE_WIDTH * 19), x + LINE_WIDTH * 12);
        ctx.moveTo(p * (s + LINE_WIDTH * 17), x + LINE_WIDTH * 13);
        ctx.lineTo(p * (s + LINE_WIDTH * 19), x + LINE_WIDTH * 13);
        ctx.moveTo(p * (s + LINE_WIDTH * 7), x + LINE_WIDTH * 14);
        ctx.lineTo(p * (s + LINE_WIDTH * 18), x + LINE_WIDTH * 14);
        ctx.moveTo(p * (s + LINE_WIDTH * 7), x + LINE_WIDTH * 15);
        ctx.lineTo(p * (s + LINE_WIDTH * 17), x + LINE_WIDTH * 15);
        ctx.moveTo(p * (s + LINE_WIDTH * 8), x + LINE_WIDTH * 16);
        ctx.lineTo(p * (s + LINE_WIDTH * 17), x + LINE_WIDTH * 16);
        ctx.stroke();

        //蓝色衣服
        ctx.beginPath();
        ctx.strokeStyle = '#2b4bf4';
        ctx.moveTo(p * (s + LINE_WIDTH * 11), x + LINE_WIDTH * 14);
        ctx.lineTo(p * (s + LINE_WIDTH * 12), x + LINE_WIDTH * 14);
        ctx.moveTo(p * (s + LINE_WIDTH * 15), x + LINE_WIDTH * 14);
        ctx.lineTo(p * (s + LINE_WIDTH * 16), x + LINE_WIDTH * 14);
        ctx.moveTo(p * (s + LINE_WIDTH * 12), x + LINE_WIDTH * 15);
        ctx.lineTo(p * (s + LINE_WIDTH * 13), x + LINE_WIDTH * 15);
        ctx.moveTo(p * (s + LINE_WIDTH * 16), x + LINE_WIDTH * 15);
        ctx.lineTo(p * (s + LINE_WIDTH * 17), x + LINE_WIDTH * 15);
        ctx.moveTo(p * (s + LINE_WIDTH * 12), x + LINE_WIDTH * 16);
        ctx.lineTo(p * (s + LINE_WIDTH * 19), x + LINE_WIDTH * 16);
        ctx.moveTo(p * (s + LINE_WIDTH * 10), x + LINE_WIDTH * 17);
        ctx.lineTo(p * (s + LINE_WIDTH * 19), x + LINE_WIDTH * 17);
        ctx.moveTo(p * (s + LINE_WIDTH * 10), x + LINE_WIDTH * 18);
        ctx.lineTo(p * (s + LINE_WIDTH * 19), x + LINE_WIDTH * 18);
        ctx.moveTo(p * (s + LINE_WIDTH * 10), x + LINE_WIDTH * 19);
        ctx.lineTo(p * (s + LINE_WIDTH * 15), x + LINE_WIDTH * 19);
        ctx.stroke();

        //鞋子
        ctx.beginPath();
        ctx.strokeStyle = '#632705';
        //左边
        ctx.moveTo(p * (s + LINE_WIDTH * 8), x + LINE_WIDTH * 18);
        ctx.lineTo(p * (s + LINE_WIDTH * 10), x + LINE_WIDTH * 18);
        ctx.moveTo(p * (s + LINE_WIDTH * 7), x + LINE_WIDTH * 19);
        ctx.lineTo(p * (s + LINE_WIDTH * 10), x + LINE_WIDTH * 19);
        ctx.moveTo(p * (s + LINE_WIDTH * 7), x + LINE_WIDTH * 20);
        ctx.lineTo(p * (s + LINE_WIDTH * 9), x + LINE_WIDTH * 20);
        //右边
        ctx.moveTo(p * (s + LINE_WIDTH * 20), x + LINE_WIDTH * 14);
        ctx.lineTo(p * (s + LINE_WIDTH * 21), x + LINE_WIDTH * 14);
        ctx.moveTo(p * (s + LINE_WIDTH * 19), x + LINE_WIDTH * 15);
        ctx.lineTo(p * (s + LINE_WIDTH * 21), x + LINE_WIDTH * 15);
        ctx.moveTo(p * (s + LINE_WIDTH * 19), x + LINE_WIDTH * 16);
        ctx.lineTo(p * (s + LINE_WIDTH * 21), x + LINE_WIDTH * 16);
        ctx.moveTo(p * (s + LINE_WIDTH * 19), x + LINE_WIDTH * 17);
        ctx.lineTo(p * (s + LINE_WIDTH * 21), x + LINE_WIDTH * 17);
        ctx.moveTo(p * (s + LINE_WIDTH * 19), x + LINE_WIDTH * 18);
        ctx.lineTo(p * (s + LINE_WIDTH * 21), x + LINE_WIDTH * 18);
        ctx.stroke();

        //扣子
        ctx.beginPath();
        ctx.strokeStyle = '#fff';
        ctx.moveTo(p * (s + LINE_WIDTH * 16), x + LINE_WIDTH * 16);
        ctx.lineTo(p * (s + LINE_WIDTH * 17), x + LINE_WIDTH * 16);
        ctx.moveTo(p * (s + LINE_WIDTH * 13), x + LINE_WIDTH * 17);
        ctx.lineTo(p * (s + LINE_WIDTH * 14), x + LINE_WIDTH * 17);
        ctx.stroke();

        ctx.restore();
    }

</script>
</body>
</html>