Kasvatusarvon laskeminen
Tuoteoston yhteydessä yhdellä napautuksella saatavien sitruunoiden määrä muuttuu. Seuraavaksi toteutamme koodin, joka laskee uuden kasvatusarvon. Uusi kasvatusarvo lasketaan Laskukaavat-sivun periaatteiden mukaisesti. Samalla laskemme ostettujen tuotteiden yhteislukumäärän.
Muokkaa src-kansion App.jsx-tiedostossa olevaa handlePurchase
-funktiota. Korvaa // TODO lasketaan uusi kasvatusarvo
-rivi seuraavilla riveillä:
// Koostemuuttujien esittely.
let increase = 1;
let upgrades = 0;
// Käydään tuotteet yksitellen lävitse.
for (let i=0; i<storeitems.length; i++) {
// Lisätään tuotteiden määrä kokonaismäärään.
upgrades = upgrades + storeitems[i].qty;
// Lisätään tuotteen vaikutus kasvatusarvoon.
increase = increase + storeitems[i].multiplier*storeitems[i].qty;
}
// Tallennetaan lasketut koostearvot.
newstats.increase = increase;
newstats.upgrades = upgrades;
Tämän lisäyksen jälkeen sovellus laskee uuden kasvastusarvon tuotteen oston yhteydessä.

Joissain tilanteissa sitruunoiden lukumäärä saattaa pitkänä desimaaliarvona. Tämä johtuu siitä, että kasvatusarvo on tietyissä tilanteissa liukuluku, joka on JavaScriptin näkökulmasta likiarvo. Jotta sovellus ei näytä pitkää desimaalimuotoa, on luvut pyöristettävä.
Lukujen pyöristäminen
JavaScript ei sisällä valmista funktiota, jolla luvun voisi pyöristää tiettyyn desimaalimäärään. Toteutamme ensin yksinkertaisen funktion, joka suorittaa tämän pyöristämisen.
Luo src/utils-kansioon uusi tiedosto, anna sen nimeksi round.js ja laita sen sisällöksi seuraava ohjelmakoodi:
// Pyöristää luvun määriteltyyn tarkkuuteen.
function round(value, precision) {
const multiplier = Math.pow(10, precision || 0);
return Math.round(value * multiplier) / multiplier;
}
export default round;
Muokkaa src-kansion App.jsx-tiedostoa seuraavasti:
-
Lisää tiedoston alkuun seuraava import-tuonti:
import round from './utils/round';
-
Muokkaa
handleClick
-funktion sisällä olevabalance
-arvon laskenta seuraavanlaiseksi:newstats.balance = round(newstats.balance + newstats.increase,1);
-
Muokkaa
handlePurchase
-funktion sisällä olevabalance
-arvon laskenta seuraavanlaiseksi:newstats.balance = round(newstats.balance - newstoreitems[index].price,1);
Nämä lisäykset pyöristävät lasketut balance
-arvot yhden desimaalin tarkkuuteen.

Muutosten vienti versiohallintaan
Viedään viimeisimmät muutokset versiohallintaan.
git add .
git commit -m "lisää kasvatusarvon laskennan ja pyöristyksen"