2017-06-04 116 views
0

我的遊戲是一個空閒的,你點擊質子,中子和電子,當你有足夠的一些,你可以建立氫等等。我有我的本地變量工作,但現在我有購買階段的問題。爲什麼localStorage不保存我的變量?

基本上氫氣需要1個質子和1個電子,當你點擊按鈕時,它運行功能SetHydrogen(),當它這樣做時,它應該基於變量HydrogenCost運行。我不確定這是否可行。

var protons = Number(localStorage.setItem("ProtonS", Pcount)); 
var neutrons = Number(localStorage.NeutronS); 
var electrons = Number(localStorage.ElectronS); 
var hydrogens = Number(localStorage.HydrogenS); 

function SaveVariables(){ 
    if (localStorage.getItem("ProtonS")){ 
    localStorage.setItem("ProtonS", Pcount); 
    protons = Number(localStorage.ProtonS); 
    } else { 
    localStorage.ProtonS = Number(localStorage.ProtonS); 
    } 
    if (localStorage.NeutronS){ 
    localStorage.NeutronS = neutrons; 
    neutrons = Number(localStorage.NeutronS); 
    } else { 
    neutrons = Number(localStorage.NeutronS); 
    } 
    if (localStorage.ElectronS){ 
    localStorage.ElectronS = electrons; 
    electrons = Number(localStorage.ElectronS); 
    } else { 
    electrons = Number(localStorage.ElectronS); 
    } 
    if (localStorage.HydrogenS){ 
    localStorage.HydrogenS = document.getElementByID("HydrogenTotal").innerHTML; 
    hydrogens = Number(localStorage.HydrogenS); 
    } else { 
    hydrogens = 0; 
    } 
} 

function LoadVariables(){ 
    buying = 0; 
    CanUBuy = false; 
    protons = Number(localStorage.ProtonS); 
    neutrons = Number(localStorage.NeutronS); 
    electrons = Number(localStorage.ElectronS); 
    hydrogens = Number(localStorage.HydrogenS); 
} 

function update(){ 
    protonTap.onmousedown = function() {protons = protons + 1}; 
    neutronTap.onmousedown = function() {neutrons = neutrons + 1}; 
    electronTap.onmousedown = function() {electrons = electrons + 1}; 

}; 
function draw(){ 
    ProtonsTotal.value = protons.toFixed(0); 
    NeutronsTotal.value = neutrons.toFixed(0); 
    ElectronsTotal.value = electrons.toFixed(0); 
    console.log(hydrogens); 
    console.log(CanUBuy); 
    console.log(Pcount); 
}; 
var mainloop = function() {update(), draw(), SaveVariables()}; 
var buying = 0; 

function SetHydrogen(){ 
    buying = 1; 
    HydrogenCost.buy; 
    if (CanUBuy = true){ 
    HydrogenTotal.value ++; 
    buying = 0; 
    CanUBuy = false; 
    } else { 
    buying = 0; 
    } 
} 


function reset(){ 
    CanUBuy = false; 
    protons = 0; 
    neutrons = 0; 
    electrons = 0; 
    hydrogens = 0; 
    buying = 0; 
} 

setInterval(mainloop, 16); 

var CanUBuy = false; 
var HydrogenCost = new buy(1,0,1); 


function buy(ProtonCost, NeutronCost, ElectronCost){ 
    if (buying = 1){ 
    this.pCost = ProtonCost; 
    this.nCost = NeutronCost; 
    this.eCost = ElectronCost; 

    if (protons >= ProtonCost && neutrons >= NeutronCost && electrons >= ElectronCost) { 
     CanUBuy = true; 
     protons = protons - this.pCost; 
     neutrons = neutrons - this.nCost; 
     electrons = electrons - this.eCost; 
    } else{ 
     CanUBuy = false; 
     alert("You don't have enough money"); 
    } 
    } else if (buying = 0) { 
    buying = 0; 
    } 
} 

if(!localStorage.getItem('start')){ 
    localStorage.setItem('start', Date.now()); 
} 
    var start = parseInt(localStorage.getItem('start')); 
    setInterval(function(){ 
    ffs.value = ~~((Date.now() - start)/1e3); 

    }, 1e3); 
+0

你能不能做,如果沒有讀者需要了解你的遊戲邏輯證明您的問題小例子。 – bhspencer

回答

2

起初,我認爲你應該重新考慮你的整體結構。你可以縮短你的代碼,並使其通過面向對象的可重複使用:

function stored(name,startvalue){ 
    this.name=name; 
    this.value=+localStorage.getItem(name) || startvalue || 0; 
} 
stored.prototype={ 
    change:function(by){ 
     this.value+=by; 
     localStorage.setItem(this.name,this.value); 
    }, 
    set:function(to){ 
     this.value=to; 
     localStorage.setItem(this.name,this.value); 
    }, 
    valueOf:function(){ return this.value;}, 
}; 

所以,你可以這樣做:

var neutrons=new stored("neutrons"); 
alert(+neutrons);//0, 5 on reload 
neutrons.set(5); 
alert(+neutrons);//5 

注意+的存儲對象轉換爲它的價值。

氫功能看起來是這樣的:

var protons=new stored("protons",10); 
var electrons=new stored("electrons",10); 
var hydrogens=new stored("hydrogens"); 
hydrogens.buy=function(){ 
if(+protons && +neutrons){ 
    protons.change(-1); 
    neutrons.change(-1); 
    this.change(1); 
}else{ 
    alert("impossible. Sorry :("); 
} 
} 

hydrogens.buy();//test 

http://jsbin.com/pozinotida/1/edit?js

相關問題