2017-06-04 10 views
0

私のゲームは、陽子、中性子、電子をクリックするアイドルなゲームです。あなたが十分なものを持っていれば、水素などを作ることができます。私は仕事のためにローカル変数を持っていますが、購入段階に問題があります。localStorageが変数を保存しないのはなぜですか?

基本的に水素は1プロトンと1電子を要します。ボタンをクリックすると、SetHydrogen()という機能が実行されます。そのとき、変数に基づいて実行されます。これが実現可能かどうかはわかりません。

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

まず、全体の構造を再考する必要があります。あなたはあなたのコードを短縮し、それがOOPて再利用可能にすることができます:

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

関連する問題