当前位置:首页 > JavaScript

js实现计分

2026-04-06 01:59:27JavaScript

实现基础计分功能

使用JavaScript实现一个简单的计分功能可以通过变量存储分数,并通过函数进行增减操作。以下是一个基础示例:

let score = 0;

function increaseScore(points) {
    score += points;
    updateScoreDisplay();
}

function decreaseScore(points) {
    score -= points;
    updateScoreDisplay();
}

function updateScoreDisplay() {
    document.getElementById('score-display').textContent = `Score: ${score}`;
}

// 初始化显示
updateScoreDisplay();

添加本地存储支持

为了在页面刷新后保留分数,可以使用localStorage

js实现计分

let score = localStorage.getItem('gameScore') ? parseInt(localStorage.getItem('gameScore')) : 0;

function updateScore(points) {
    score += points;
    localStorage.setItem('gameScore', score.toString());
    updateScoreDisplay();
}

function resetScore() {
    score = 0;
    localStorage.removeItem('gameScore');
    updateScoreDisplay();
}

实现动画效果

为分数变化添加动画效果可以增强用户体验:

function animateScoreChange(newScore) {
    const display = document.getElementById('score-display');
    display.style.transform = 'scale(1.2)';
    display.style.color = newScore > score ? 'green' : 'red';

    setTimeout(() => {
        display.style.transform = 'scale(1)';
        display.style.color = '';
    }, 300);

    score = newScore;
    display.textContent = `Score: ${score}`;
}

创建计分类

对于更复杂的应用,可以创建一个计分类:

js实现计分

class ScoreSystem {
    constructor(initialScore = 0) {
        this.score = initialScore;
    }

    add(points) {
        this.score += points;
        this.onChange();
    }

    subtract(points) {
        this.score -= points;
        this.onChange();
    }

    reset() {
        this.score = 0;
        this.onChange();
    }

    onChange() {
        // 可重写此方法实现自定义逻辑
        console.log(`Current score: ${this.score}`);
    }
}

const gameScore = new ScoreSystem();
gameScore.add(10);

与DOM事件绑定

将计分系统与页面按钮事件绑定:

<button id="add-points">Add 5 Points</button>
<button id="reset-score">Reset</button>
<div id="score-display">Score: 0</div>

<script>
    const scoreSystem = new ScoreSystem();

    document.getElementById('add-points').addEventListener('click', () => {
        scoreSystem.add(5);
        document.getElementById('score-display').textContent = `Score: ${scoreSystem.score}`;
    });

    document.getElementById('reset-score').addEventListener('click', () => {
        scoreSystem.reset();
        document.getElementById('score-display').textContent = `Score: ${scoreSystem.score}`;
    });
</script>

添加音效反馈

为分数变化添加音效可以提升交互体验:

function playScoreSound(isPositive) {
    const sound = new Audio(isPositive ? 'point-earned.mp3' : 'point-lost.mp3');
    sound.volume = 0.5;
    sound.play().catch(e => console.log('Audio play failed:', e));
}

function updateScore(points) {
    score += points;
    playScoreSound(points > 0);
    updateScoreDisplay();
}

标签: js
分享给朋友:

相关文章

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…

js 实现链表

js 实现链表

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。与数组不同,链表在内存中是非连续存储的,插入和删除操作效率较高。 链表的实现 在 JavaScrip…

js进度条实现

js进度条实现

使用HTML和CSS创建基础结构 在HTML中创建一个容器元素用于显示进度条,通常使用<div>元素。CSS用于设置进度条的样式,包括宽度、高度、颜色和圆角等属性。 <div cl…

js实现图片放大

js实现图片放大

使用 CSS transform 实现图片放大 通过 CSS 的 transform: scale() 属性实现图片放大效果。当鼠标悬停时,图片会平滑放大。 const img = document…

js 实现递归

js 实现递归

递归的基本概念 递归是指函数直接或间接调用自身的过程。在JavaScript中,递归通常用于解决可以分解为相似子问题的问题,如阶乘、斐波那契数列、树形结构遍历等。 递归的实现要点 基线条件(Base…