用localstorage实现贪吃蛇本地高分榜的核心是:游戏结束时仅当新分更高才存字符串格式分数,页面加载时读取并显示;支持按难度扩展键名,需处理null兜底、跨域隔离等细节。

用 localStorage 实现贪吃蛇的本地高分榜,核心就两点:游戏结束时存分数,页面加载时读分数并显示。它不联网、不依赖后端,适合单机小项目,但要注意数据类型和键名管理。
存高分:只保存比历史更高的分数
localStorage 只能存字符串,所以得把数字转成字符串;同时要避免每次刷新都覆盖,只在新分数更高时才更新:
function saveHighScore(score) {
const key = 'snake_high_score';
const oldScore = parseInt(localStorage.getItem(key)) || 0;
if (score > oldScore) {
localStorage.setItem(key, score.toString());
}
}
// 游戏结束调用
saveHighScore(currentScore);
读高分:页面初始化时加载并显示
建议在 加载完或游戏初始化阶段读取,再渲染到对应 DOM 元素(比如一个 <div id="high-score">):
<font color="#666">
<pre class="brush:php;toolbar:false;">
function loadHighScore() {
const key = 'snake_high_score';
const score = parseInt(localStorage.getItem(key)) || 0;
document.getElementById('high-score').textContent = score;
}
// 页面加载后执行
window.addEventListener('DOMContentLoaded', loadHighScore);
</pre>
</font>
<h3>扩展支持多难度/多模式高分(可选)</h3>
<p>如果游戏有“简单”“困难”等模式,可以按模式区分存储键名,比如:</p><div class="aritcle_card flexRow artxards">
<div class="artcardd flexRow">
<a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill8272" title="anything-to-html"><img
src="https://img.php.cn/upload/skill/000/000/081/179195588450431.jpg" alt="anything-to-html" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
<div class="aritcle_card_info flexColumn">
<a rel="nofollow" href="/xiazai/skill8272" title="anything-to-html" class="overflowclass">anything-to-html</a>
<p class="overflowclass">将调研报告、方案对比、数据分析、需求梳理、会议纪要、设计说明、代码评审、学习笔记等任务产物输出为可在浏览器直接打开的单文件 HTML,替代 Markdown 作为最终交付物。Markdown 在信息密度、视觉清晰度和可分享性上已跟不上 AI 产物的丰富度,HTML 能同时承载排版、表格、SVG 等。</p>
</div>
<a rel="nofollow" href="/xiazai/skill8272" title="anything-to-html" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span>
</a>
</div>
</div>
<ul>
<li><code>'snake_high_score_easy'
'snake_high_score_hard'这样不会互相覆盖,也方便后续加 UI 切换查看。
注意边界情况
-
首次访问无数据:
getItem返回null,用|| 0或?? 0安全兜底 -
手动清空:用户清除浏览器缓存或调用
localStorage.removeItem('snake_high_score')会丢失数据 -
跨域名隔离:
http://a.com和http://b.com的localStorage互不可见
不复杂但容易忽略细节,把存、读、防覆盖、类型转换这四步理清楚,就能稳稳跑起本地高分榜。










