有趣的代码之简易马里奥(html版)

198 阅读1分钟

在 WebStorm 中运行以下这段代码,简化版的马里奥游戏动画。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Simple Mario Animation</title>
    <style>
        body {
            text-align: center;
            font-family: 'Arial', sans-serif;
        }
        canvas {
            border: 1px solid #000;
            background: #222;
        }
    </style>
</head>
<body>
    <h1>Simple Mario Animation</h1>
    <canvas id="marioCanvas" width="480" height="400"></canvas>
    <script>
        const canvas = document.getElementById('marioCanvas');
        const context = canvas.getContext('2d');
        const mario = {
            x: 100,
            y: 100,
            width: 50,
            height: 50,
            color: 'red',
            velocity: 2
        };
        function drawMario() {
            context.fillStyle = mario.color;
            context.fillRect(mario.x, mario.y, mario.width, mario.height);
        }
        function clearCanvas() {
            context.clearRect(0, 0, canvas.width, canvas.height);
        }
        function updateMarioPosition() {
            mario.x += mario.velocity;
            if (mario.x > canvas.width - mario.width || mario.x < 0) {
                mario.velocity = -mario.velocity;
            }
        }
        function animateMario() {
            clearCanvas();
            drawMario();
            updateMarioPosition();
            requestAnimationFrame(animateMario);
        }
        animateMario();
    </script>
</body>
</html>

这个代码创建了一个简单的马里奥动画,其中一个小球(代表马里奥)在画布上左右移动。当小球接触到画布的边缘时,它会反向移动,创造出简单的反弹效果。这个动画使用了 requestAnimationFrame 方法来循环更新和绘制动画。

下面来展示一下动画效果:

image.png

Simple Mario Animation

请记住,这个示例非常基础,真正的马里奥游戏会涉及到更复杂的图形、物理、碰撞检测和游戏逻辑。要创建一个完整的马里奥游戏,需要编写大量的代码,并且可能需要使用游戏引擎或图形库来帮助处理复杂的动画和游戏逻辑。所以看到这篇文章的小伙伴要加油呀!!!