Laskukaavat

Sovellus on nyt siinä vaiheessa, että aloitamme toteuttamaan Store-sivulle tuotelistaa. Ennen kuin toteutamme tuotalistaa sovellukseen, niin tutustutaan hieman pelissä käytettyihin laskukaavoihin. Alla olevassa taulukossa on listattu pelin seitsemän ensimmäistä tuotetta.

nronimikerroinpohjahinta
1Lemon tree0,210
2Blender270
3Carbonator10490
4Bottler503400
5Truck23524000
6Spring1150169000
7Sugar cane field56001200000
....... ...................

Tällä sivulla esitellyt tuotteet, luvut ja kaavat löytyvät kokonaisuudessaan tässä linkissä olevasta Excel-taulukosta. Osa laskentakentistä on piilotettuna, jotta taulukosta ei tule liian sekava.

Lemons per click (increase)

Joka napautuksella käytettävissä olevien sitruunoiden määrä kasvaa aina tietyn vakiomäärän verran. Pelin alussa yhdellä napautuksella saa yhden sitruunan. Jos ostaa päivityksiä, niin silloin yhdellä napautuksella saatavien sitruunoiden määrä kasvaa.

Jokainen ostettu päivitys kasvattaa kertoimen mukaisella määrällä yhdellä napautuksella saattavien sitruunoiden määrää (increase). Alkutilanteessa increase-arvo on 1.

Jos käyttäjä on ostanut yhden kappaleen ensimmäistä tuotetta (Lemon tree), niin silloin yhdellä napautuksella saatavien sitruunoiden määrä saadaan laskukaavalla:

$$ increase = 1 + 1 \times 0,2 = 1,2 $$

Vastaavasti, jos käyttäjä on ostanut kaksi kappaletta Lemon tree -tuotetta ja yhden kappalleen Blender-tuotetta, niin silloin napautuksella saatavien sitruunoiden määrä saadaan laskukaavalla:

$$ increase = 1 + 2 \times 0,2 + 1 \times 2 = 3,4 $$

Samalla logiikalla, jos käyttäjä on ostanut viisi Lemon tree -tuotetta, viisi Blender-tuotetta ja kolme Carbonator-tuotetta, niin laskukaava olisi seuraavanlainen:

$$ increase = 1 + 5 \times 0,2 + 5 \times 2 + 3 \times 10 = 42 $$

Jokaisen tuoteoston jälkeen lasketaan uusi increase-arvo edellä kuvatulla periaatteella ja tallennetaan stats-tilamuuttujan increase-avaimen arvoksi.

Taustatietoa

Tuotteiden kerroin-arvot noudattavat kahta ensimmäistä lukuunottamatta tiettyä logiikkaa. Toisesta tuotteesta eteenpäin seuraavan tuotteen kerroin on suunnilleen 5-kertainen edelliseen kertoimeen verrattuna. Tätä kerrointa pienennetään asteittain, jotta peliin tulisi lisähaastetta myöhemmissä vaiheissa. Laskukaavalla saatua tulosta on pyöristetty, jotta luvusta on saatu sopivampi.

tuotelaskukaavakerroin
Carbonator\(2 \times 4,9 = 9,8\)10
Bottler\(2 \times 5 \times 4,8 = 48\)50
Truck\(2 \times 5 \times 5 \times 4,7 = 235\)235
Spring\(2 \times 5 \times 5 \times 5 \times 4,6 = 1150\)1150
Sugar cane field\(2 \times 5 \times 5 \times 5 \times 5 \times 4,5 = 5625\)5600

Tuotteen hinta

Tuotteen hinta nousee aina 15 % jokaisen ostoksen jälkeen. Tämä hinnan nosto huolehtii siitä, että jossain vaiheessa pohjahinnaltaan kalliimpien tuotteiden hankinta on kannattavampaa.

Alla on esimerkki Lemon tree -tuotteen hintakehityksestä, tuotteen pohjahinta on 10. Laskukaavan tulos pyöristetään aina alaspäin seuraavaan kokonaislukuun.

#laskukaavahinta
1.\(10\)10
2.\(10 \times 1,15 = 11,5\)11
3.\(10 \times 1,15^2 \approx 13,23\)13
4.\(10 \times 1,15^3 \approx 15,21\)15
5.\(10 \times 1,15^4 \approx 17,49\)17
6.\(10 \times 1,15^5 \approx 20,11\)20
7.\(10 \times 1,15^6 \approx 23,13\)23
8.\(10 \times 1,15^7 \approx 26,60\)26
9.\(10 \times 1,15^8 \approx 30,59\)30
10.\(10 \times 1,15^9 \approx 35,18\)35
11.\(10 \times 1,15^{10} \approx 40,46\)40
12.\(10 \times 1,15^{11} \approx 46,52\)46
13.\(10 \times 1,15^{12} \approx 53,50\)53
14.\(10 \times 1,15^{13} \approx 61,53\)61
15.\(10 \times 1,15^{14} \approx 70,76\)70

Taustatietoa

Tuotteen 15. hinta määrittelee seuraavan tuotteen pohjahinnan. Esimerkiksi Blenderin pohjahinta on 70. Vastaavasti Blenderin 15. hinta (\(70 \times 1,15^{14} \approx 495\)) määrittelee Carbonator-tuotteen pohjahinnaksi 490. Pohjahinta pyöristetään tapauksesta riippuen joko kahden tai kolmen numeron tarkkuuteen.

Näillä edellä kuvatuilla periaatteilla pelin kannalta keskeiset arvot on laskettu. Seuraavaksi määrittelemme tuotelistan, jossa on muiden tietojen lisäksi määritelty ko. tuotteen pohjahinta ja kerroin. Näitä arvoja käytetään pelissä increase-arvon ja tuotehinnan laskentaan edellä kuvatulla tavalla.