Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Viikko- ja kuukausilaskuri peliin (QB) (VB6)

Sivun loppuun

E.K.Virtanen [13.12.2004 20:16:59]

#

Eli haluaisin että pelissä olisi laskurit päiviä ja kuukausia varten. Nyt on kello joka laskee tuntien kulumista.

If Time > 23 Then Time = 0 : Day = Day + 1

Joo toimiihan se noinkin. Mutta kun viikossa on 7 päivää ja jokaisella päivällä on oma nimensä jonka haluaisin myös tulostaa. Kuukausissa kun tuo päivien määrä vaihtelee reippaasti myös niin en ole onnistunut tekemää jotain edes suht yksinkertaista koodia jolla kertoa käyttäjälle seuraavasti.

"Maanantai, 19 joulukuuta 1243." Kyseessä on siis pelin oma aika eikä reaaliaika.

Sain tällaisen pelittämään mutta se vaati joka viikonpäivälle oman IF ehtonsa. Kuukausissa olikin sitten tekemistä. 12x kuukausi + että päiviä on 28-31 riippuen kuukaudesta.

Millään kahden rivin koodilla tätä tuskin saa tehtyä mutta omastani tuli miltei 40 rivinen joten olisiko kenelläkään tiedossa jotain hieman helpompaa tapaa? =)

Blaze [13.12.2004 20:25:55]

#

Tunge taulukkoon nuo kuukausien nimet, ja kutsu sitten vaan aina kuukausi(12) jne.

E.K.Virtanen [13.12.2004 20:35:20]

#

Njoo, kuukaudet taulukkoon ihan jees. Viikonpäivät kanssa mutta se että kuukausissa on eri määrä päiviä aina tuottaa nyt ongelman. Jos esim. Tammikuun 31 menossa niin seuraava on Helmikuun 1 ja helmikuun 28 jälkeen pitäisi tulla Maaliskuun 1. Eli nuo päivien määrät/kuukausi pitäisi jotenkin simppelisti saada. Viikonpäivät voinee tunke omaan pikku koodiinsa. Siitä kun selviää yhdellä rivillä.

Tietty vastaus on taas jokin yksinkertainen mutta niin on mun olonikin nyt =)

tn [13.12.2004 21:10:41]

#

No voihan ne päivien määrätkin kuukautta kohden taulukoida yhtälailla.

Antti Laaksonen [13.12.2004 21:34:24]

#

Päivien laskeminen on hankalaa juuri eripituisten kuukausien (ja karkausvuosien) takia. Minä ehkä sen vuoksi pitäisin kirjaa kaikista tiedoista (tunti, viikonpäivä, päivä, kuukausi, vuosi) ja lisäisin noita aina yhdellä tai pyöräyttäisin ympäri. Yhden tunnin lisäävä koodinpätkä voisi olla tämänkaltainen:

tunti% = (tunti% + 1) MOD 24
IF tunti% = 0 THEN
    vpaiva% = (vpaiva% + 1) MOD 7
    paiva% = (paiva% + 1) MOD kkp%(kuukausi%)
    IF paiva% = 0 THEN
        kuukausi% = (kuukausi% + 1) MOD 12
        IF kuukausi% = 0 THEN
            vuosi% = vuosi% + 1
        END IF
    END IF
END IF

Tunnit ovat 0 - 23, viikonpäivät 0 - 6, päivät 0 - 30 ja kuukaudet 0 - 11. Taulukko kkp% sisältää kunkin kuukauden päivien määrän. Jakojäännösten avulla laskurit menevät aina ympäri, kun korkein arvo on ohitettu. Karkauspäiviä tämä koodi ei ota huomioon.

setä [14.12.2004 00:06:07]

#

QB:ssä ei ilmeisesti ole Date-funktiota, jolla VB:ssä saa näppärästi viikonpäivät, kuukaudet jne. Liki 30 vuotta vanhaan ohjelmoitavaan HP:n laskimeeni löytyi kalenterifunktio, joka pätee välillä 1.3.1700 - 28.2.2100. Funktiolla voi laskea päivien lukumäärän kahden eri päivämäärän välillä ja viikonpäivän annetulle päivämäärälle. Funktio on aika mutkikas. Jos kiinnostaa voin muokata sen QB:lle sopivaksi.

E.K.Virtanen [14.12.2004 06:08:42]

#

Joo, koska kyseessä on peli joka ajallisesti (pelissä siis) kestää 2-3 vuotta niin tuo karkauspäivä ei niin väliä välttämättä ole. Ja vaikka menisikin pitempään niin karkauspäiviä en kyllä muistanut edes ajatella =)

Tunnit ja viikonpäivät siis saa suht helpolla koodilla. Tuo kuukaudet ja niiden pituudet onkin sitten eri juttu. Jos sulla setä on jokin hyvä systeemi tähän tiedossa niin mielelläni kuulisin. Muistan sua sitten "lopputeksteissä" =)

Toinen vaihtoehto on keksiä kokonaan oma ajanlaskunsa pelille mutta tähän en välttämättä haluaisi ryhtyä.

E.K.Virtanen [14.12.2004 06:19:54]

#

Jooh, sainkin varsin näppärän vinkin toisaalta. Jos joku sattuu tappelemaan saman ongelman kanssa niin tässä yksi ratkaisu -> http://forum.pure-text.com/viewtopic.php?t=31

Kiitoksia taas kaikille =)


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta