Olen tekemässä QBasicillä manageripeliä, jossa on mahdollisuus hankkia itselleen sponsoreita. Pelissä pelataan päivä kerrallaan, ja jokaisena päivänä sponsoriehdokkaat esittävät tarjouksia. Tarjoajat arvotaan loopilla ja satunnaislukuoperaattorilla. Nyt olen kohdannut kuitenkin ongelman. Otetaan ensiksi hiukan sitä ohjelmakoodia. (Alkää naurako noiden sponsoreiden nimiä. ;))
Eli ensin määrittelin satunnaislukumuuttujan ja merkkijonotaulukon, joka sisältää sponsoritarjoajien nimet, siis:
DIM SHARED sat AS DOUBLE DIM SHARED tarjous(1 TO 3) AS STRING
Ja eräässä aliohjelmassa on sitten tällainen silmukka:
FOR t = 1 TO 3 RANDOMIZE TIMER ' ensin arvotaan tarjoajien nimet :) sat = INT(RND * 9) + 1 SELECT CASE sat CASE sat = 1: tarjous(t) = "Pertin joululeipomo" CASE sat = 2: tarjous(t) = "Kinnusen kinkut Oy" CASE sat = 3: tarjous(t) = "Samin serviettisoppi" CASE sat = 4: tarjous(t) = "Stokman" CASE sat = 5: tarjous(t) = "Meerin piparit Oy" CASE sat = 6: tarjous(t) = "Saurioinen Oy" CASE sat = 7: tarjous(t) = "BullaBuoti" CASE sat = 8: tarjous(t) = "Joulun Tähti Oy" CASE sat = 9: tarjous(t) = "Artian Liha" CASE sat = 10: tarjous(t) = "Kotivihannekset Oy" END SELECT NEXT
Tuo siis arpoo ne kolme sponsoriehdokasta. Ongelma piilee siinä, että kun yritän tulostaa noiden sponsoriehdokkaiden nimiä taulukosta, niin mitään ei tule näyttöön. Siis näin:
PRINT "Päivän tarjoukset:" PRINT PRINT tarjous(1) PRINT tarjous(2) PRINT tarjous(3)
Ohjelmaa ajettaessa QB ei herjaa mitään, sponsoriehdokkaiden nimet eivät vain tulostettaesa näy. Mikä neuvoksi? Nyt tietysti olen unohtanut vain jonkun pisteen jostain tai jotain vastaavaa ja kaikki tämän foorumin QB-gurut nauravat minulle, mutta ei se mitään... :D
Luulisin, että aliohjelmasta et voi käsitellä pääohjelmassa määriteltyjä muuttujia.
Vika näyttää olevan siinä, että SELECT CASE -rakenne on hieman väärin toteutettu: 'sat ='-osan kanssa vertailu ei toimi oikein. Muuta siis rivit tyyliin
CASE 1: tarjous(t) = "Pertin joululeipomo"
niin sitten pitäisi toimia.
lainaus:
Vika näyttää olevan siinä, että SELECT CASE -rakenne on hieman väärin toteutettu: 'sat ='-osan kanssa vertailu ei toimi oikein. Muuta siis rivit tyyliin
CASE 1: tarjous(t) = "Pertin joululeipomo"niin sitten pitäisi toimia.
Joo, nyt toimii taas! Kiitos Antti!
Aihe on jo aika vanha, joten et voi enää vastata siihen.