前端技术搭建弹珠小游戏(内附源码)

在互联网游戏开发中,弹珠游戏是一种经典且受欢迎的类型。本文将介绍如何使用HTML、CSS和JavaScript创建一个简单的弹珠小游戏,并提供完整源码供大家参考。

游戏设计思路

弹珠游戏的基本规则是玩家使用鼠标控制弹珠的方向和力道,将弹珠发射到一个包含目标的区域,尽可能地获得高分。我们将使用HTML来构建游戏界面,CSS进行布局和样式设计,JavaScript实现游戏逻辑及交互。

1. HTML结构

首先,我们需要构建一个简单的HTML结构。下面是基本的HTML代码:

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>弹珠小游戏</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <div id="gameArea">
        <canvas id="gameCanvas" width="600" height="400"></canvas>
    </div>
    <div id="scoreboard">
        <h2>分数: <span id="score">0</span></h2>
        <button id="restartBtn">重新开始</button>
    </div>
    <script src="script.js"></script>
</body>
</html>

2. CSS样式

接下来,我们为游戏添加一些基本样式,使界面更美观。以下是CSS代码:

body {
    font-family: Arial, sans-serif;
    background-color: #f0f0f0;
    display: flex;
    flex-direction: column;
    align-items: center;
}

#gameArea {
    margin: 20px 0;
}

canvas {
    border: 2px solid #333;
    background-color: #fff;
}

#scoreboard {
    text-align: center;
}

3. JavaScript逻辑

最后,我们来实现游戏的核心逻辑。以下是JavaScript代码:

const canvas = document.getElementById('gameCanvas');
const ctx = canvas.getContext('2d');
const scoreDisplay = document.getElementById('score');
const restartBtn = document.getElementById('restartBtn');

let score = 0;
let isGameActive = true;

class Ball {
    constructor(x, y) {
        this.x = x;
        this.y = y;
        this.radius = 10;
        this.color = 'blue';
        this.speedX = 0;
        this.speedY = 0;
    }

    draw() {
        ctx.beginPath();
        ctx.arc(this.x, this.y, this.radius, 0, Math.PI * 2);
        ctx.fillStyle = this.color;
        ctx.fill();
        ctx.closePath();
    }

    update() {
        this.x += this.speedX;
        this.y += this.speedY;

        if (this.y + this.radius > canvas.height) {
            this.reset();
        }
    }

    reset() {
        this.x = canvas.width / 2;
        this.y = canvas.height - 30;
        this.speedX = 0;
        this.speedY = 0;
    }
}

const ball = new Ball(canvas.width / 2, canvas.height - 30);

canvas.addEventListener('click', (event) => {
    if (!isGameActive) return;

    const rect = canvas.getBoundingClientRect();
    const mouseX = event.clientX - rect.left;
    const mouseY = event.clientY - rect.top;

    const deltaX = mouseX - ball.x;
    const deltaY = mouseY - ball.y;
    const angle = Math.atan2(deltaY, deltaX);

    ball.speedX = Math.cos(angle) * 5;
    ball.speedY = Math.sin(angle) * 5;

    score++;
    scoreDisplay.innerText = score;
});

function draw() {
    ctx.clearRect(0, 0, canvas.width, canvas.height);
    ball.draw();
    ball.update();

    requestAnimationFrame(draw);
}

draw();

restartBtn.addEventListener('click', () => {
    score = 0;
    scoreDisplay.innerText = score;
    ball.reset();
    isGameActive = true;
});

4. 代码解析

  1. HTML部分:构建游戏界面,包含一个用来绘制游戏内容的<canvas>元素和一个分数显示区域。

  2. CSS部分:设置背景色、字体以及canvas的边框样式。

  3. JavaScript部分

  4. 使用class Ball定义弹珠的属性和方法。
  5. 点击canvas时计算鼠标与弹珠之间的角度,设置弹珠的速度。
  6. 使用requestAnimationFrame循环更新游戏状态,保持弹珠的运动。
  7. 提供重新开始游戏的功能。

总结

通过上述步骤,我们简单搭建了一个弹珠小游戏。你可以根据自己的需要进一步优化和扩展这个游戏,例如增加障碍物、计时功能、音效等。希望本文对你有所帮助,激发出你的创意,让更多有趣的游戏面世!

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部