(初学者编码器。入门级)HTML点击游戏上的保存/加载功能不起作用

Posted

技术标签:

【中文标题】(初学者编码器。入门级)HTML点击游戏上的保存/加载功能不起作用【英文标题】:(Beginner Coder. Entry Entry Level) Save/Load function on HTML clicker game not working 【发布时间】:2022-01-17 09:58:34 【问题描述】:

初学者从论坛网站和 youtube 学习,请多多包涵。 (加上我很笨)

我正在制作一个愚蠢的点击游戏,只是为了看看我能不能做到(显然不能)。 我有一些带有 onclick 功能和乘数设置的按钮,一切正常。

直到保存/加载。

我遵循了我为保存功能找到的教程,通过 localStorage/cookies 保存/加载您的进度,它在刷新时保存了总“金钱”(分数),但我的“scorepersecond”和每次通过按钮升级都没有'不保存,即使我已经包含了他们的成本和名称值来告诉我要保存哪些变量。我正在使用带有 Live Server 扩展的 VS Code 进行测试(firefox)。

    function loadGame() 
            var savedGame = JSON.parse(localStorage.getItem("gameSave", "score", "scorepersecond", "cursors", "cursorcost", "lighters", "lightercost", "grinders", "grindercost", "devils", "devilcost", "trays", "traycost", "dealers", "dealercost"));
            if (typeof savedGame.score !== "undefined") score = savedGame.score;
        
         function saveGame() 
             
            var gameSave = 
                 score: score,
                 scorepersecond: scorepersecond,
                 clickingPower: clickingPower,
                 cursors: cursors,
                 cursorcost: cursorcost,
                 lighters: lighters,
                 lightercost: lightercost,
                 grinders: grinders,                
                 grindercost: grindercost,
                 devils: devils,
                 devilcost: devilcost,
                 trays: trays,
                 traycost: traycost,
                 dealers: dealers,
                 dealercost: dealercost,
                        
             ;
             localStorage.setItem("gameSave", JSON.stringify(gameSave));
            document.getElementById("score").innerhtml = score;
        document.getElementById("scorepersecond").innerHTML = scorepersecond;
            document.getElementById("cursorcost").innerHTML = cursorcost;
            document.getElementById("cursors").innerHTML = cursors;
            document.getElementById("lightercost").innerHTML = lightercost;
            document.getElementById("lighters").innerHTML = lighters;
            document.getElementById("grindercost").innerHTML = grindercost;
            document.getElementById("grinders").innerHTML = grinders;
            document.getElementById("devilcost").innerHTML = devilcost;
            document.getElementById("devils").innerHTML = devils;
            document.getElementById("traycost").innerHTML = traycost;
            document.getElementById("trays").innerHTML = trays;
            document.getElementById("dealercost").innerHTML = dealercost;
            document.getElementById("dealers").innerHTML = dealers;
         
         window.onload = function() 
            loadGame();
            updatescorepersecond();
            document.getElementById("score").innerHTML = score;
            document.getElementById("cursorcost").innerHTML = cursorcost;
            document.getElementById("cursors").innerHTML = cursors;
            document.getElementById("lightercost").innerHTML = lightercost;
            document.getElementById("lighters").innerHTML = lighters;
            document.getElementById("grindercost").innerHTML = grindercost;
            document.getElementById("grinders").innerHTML = grinders;
            document.getElementById("devilcost").innerHTML = devilcost;
            document.getElementById("devils").innerHTML = devils;
            document.getElementById("traycost").innerHTML = traycost;
            document.getElementById("trays").innerHTML = trays;
            document.getElementById("dealercost").innerHTML = dealercost;
            document.getElementById("dealers").innerHTML = dealers;
            
         ;

我已经尝试过了。

function loadGame() 
        var savedGame = JSON.parse(localStorage.getItem("gameSave"));
        if (typeof savedGame.score !== "undefined") score = savedGame.score;
    
function loadGame() 
        var savedGame = JSON.parse(localStorage.getItem("gameSave"));
        if (typeof savedGame.score !== "undefined") score = savedGame.score;
        if (typeof savedGame.scorepersecond!== "undefined") scorepersecond = savedGame.scorepersecond;
    

连同我想保存的其他变量,以“(typeof”的形式也失败了。

不确定这个位是否真的意味着任何东西,但是如果我检查页面上的元素并访问本地存储,它会每 30 秒相应地更新一次并使用适当的值,但在页面刷新时它会噗的一声(除了总“钱”(分数)在页面顶部)。

不确定人们需要看到什么,或者我是否分享了足够多的内容,但如果有人可以在不成为 d-bag 的情况下提供帮助,那就太酷了 :)除了整个事情。如果您需要查看更多我的 poopy clicker 游戏,请提前感谢和 lmk。

【问题讨论】:

请修剪您的代码,以便更容易找到您的问题。请按照以下指南创建minimal reproducible example。 【参考方案1】:

getItem() 只能得到一个值。

如果要获取所有值的json对象,只需使用localStorage即可。

一个Storage对象,可以用来访问当前源的本地存储空间。

var savedGame = localStorage;

参考:

getItem() localStorage

【讨论】:

以上是关于(初学者编码器。入门级)HTML点击游戏上的保存/加载功能不起作用的主要内容,如果未能解决你的问题,请参考以下文章

《Python编程初学者指南》PDF高清完整版网盘下载_Python快速编程入门教程

unity3d游戏开发和unity入门到精通哪本书适合初学者

Python的类和对象 入门级讲解(简单粗暴)

20个入门级Python项目

Python开发入门14天集训营·第2章Python 数据类型字符编码学习-3级菜单

Unity黑巧克力 滚球游戏 入门级教程