Kirjoittaja: Sami
Kirjoitettu: 18.04.2003 – 18.04.2003
Tagit: grafiikka, koodi näytille, vinkki
Melkein vuosi sitten joku oli sanonut QB kellon yhteydessä (vinkki numero 167) ""Vähän"???? Kunnon analoginen SIN- ja COS-kello on ainoo josnka voi laittaa tänne mun mielestä "
Niin tässä on sitten kunnon analoginen kello QB:lle ja paljon säätöjäkin löytyy. Itse koodi on melko hirveää (etenkin viisarien piirto), mutta jos joku vaikka saisi siitäkin selvää.
CONST pii = 3.141593 ' Tarvitaan melkein jokaisessa laskussa
' Tässä perässä on sitten kaikki, mitä voit muuttaa
CONST keskix = 320 ' Kellon keskipisteen x-koordinaatti
CONST keskiy = 240 ' Kellon keskipisteen x-koordinaatti
CONST tuntipit = 75 ' Tuntiviisarin pituus
CONST minpit = 100 ' Minuuttiviisarin pituus
CONST sekpit = 100 ' Sekuntiviisarin pituus
CONST tuntivari = 15 ' Tuntiviisarin väri
CONST minvari = 15 ' Minuuttiviisarin väri
CONST sekvari = 4 ' Sekuntiviisarin väri
CONST taustavari = 0 ' Kellotaulun taustan väri
CONST vakasenvari = 15 ' Kellotaulun reunoilla olevien väkästen väri
CONST vakasenetaisyys = 110 ' Kellotaulun reunoilla olevien väkästen etäisyys keskipisteestä
SCREEN 12
CIRCLE (keskix, keskiy), minpit + 10, taustavari
DRAW "BM" + STR$(keskix) + "," + STR$(keskiy) + "P" + STR$(taustavari) + "," + STR$(taustavari)
DIM aika AS STRING
FOR i = 0 TO 59 ' Piirretään kellotaulun reunojen väkäset
kulma = 360 / 60 * i + 180
IF i MOD 5 = 0 THEN ' Joka viides väkänen piirretään muita pidempänä
LINE (-SIN(kulma * pii / 180) * (vakasenetaisyys) + keskix, COS(kulma * pii / 180) * (vakasenetaisyys) + keskiy)-(-SIN(kulma * pii / 180) * (vakasenetaisyys + 5) + keskix, COS(kulma * pii / 180) * (vakasenetaisyys + 5) + keskiy), vakasenvari
ELSE
LINE (-SIN(kulma * pii / 180) * (vakasenetaisyys + 2) + keskix, COS(kulma * pii / 180) * (vakasenetaisyys + 2) + keskiy)-(-SIN(kulma * pii / 180) * (vakasenetaisyys + 2) + keskix, COS(kulma * pii / 180) * (vakasenetaisyys + 2) + keskiy), _
vakasenvari
END IF
NEXT i
DO
IF aika <> TIME$ THEN ' Muutetaan kelloa vain, jos aika on muuttunut
' Pyyhitään vanhat viivat pois
LINE (keskix, keskiy)-(-SIN(tuntikulma * pii / 180) * tuntipit + keskix, COS(tuntikulma * pii / 180) * tuntipit + keskiy), taustavari
LINE (keskix, keskiy)-(-SIN(minkulma * pii / 180) * minpit + keskix, COS(minkulma * pii / 180) * minpit + keskiy), taustavari
LINE (keskix, keskiy)-(-SIN(sekkulma * pii / 180) * sekpit + keskix, COS(sekkulma * pii / 180) * sekpit + keskiy), taustavari
aika = TIME$
LOCATE 25, 37
PRINT TIME$ ' Kirjoitetaan aika myös numeroin
tunnit = VAL(MID$(aika, 1, 2)) MOD 12 ' Otetaan tunnit, minuutit ja sekunnit
minuutit = VAL(MID$(aika, 4, 2))
sekunnit = VAL(MID$(aika, 7, 2))
' Lasketaan, missä kulmassa viisarit tulevat keskipisteeseen nähden
tuntikulma = 360 / 12 * (tunnit + minuutit / 60) + 180
minkulma = 360 / 60 * (minuutit + sekunnit / 60) + 180
sekkulma = 360 / 60 * sekunnit + 180
' Piirretään uudet viisarit
LINE (keskix, keskiy)-(-SIN(tuntikulma * pii / 180) * tuntipit + keskix, COS(tuntikulma * pii / 180) * tuntipit + keskiy), tuntivari
LINE (keskix, keskiy)-(-SIN(minkulma * pii / 180) * minpit + keskix, COS(minkulma * pii / 180) * minpit + keskiy), minvari
LINE (keskix, keskiy)-(-SIN(sekkulma * pii / 180) * sekpit + keskix, COS(sekkulma * pii / 180) * sekpit + keskiy), sekvari
END IF
LOOP WHILE INKEY$ = ""lol
ihan toimiva ainakin on
taitaapa toimia, mutta ei sentään ainoa minkälaisen tänne voi laittaa. Kai ny Antti Laaksonen saa ite päättää mitä tänne laittaa ja mitä ei :D
pienta hienosäätöö ja voila!
Luettavaahan tuo koodi on, mutta vähän turhan pitkiä muuttujanimiä, eh? :)
Nyt tämäkin on tuolla valmiiden EXE-päätteisten joukossa + mukana vielä lähdekoodit.
mitä ihm...olen n00b qbasicissa, mul on qbasic 7.1 mut copipeistaus ei onnaa?! edes valikost ei pysty pastea valikoimaan en muuten kirjota tota käsin!
Muutamakohtainen algoritmi sen kopioimiseen qb:hen...
1) Copy
2) avaa notepad
3) Paste (notepadiin)
4) Save (valitse kansio ja nimi tiedostolle)
5) sulje notepad (tai jätä auki jos haluat)
6) avaa QB
7) QBasicissa: Open (äsken tallentamasi tiedosto)
8) testaa
miten sen tiedoston voi avaa jos se ei oo bas-tiedosto?
Miten ton saa kopsatuu QB:hen jos maalaan sen ja valitten hiirellä kopio ja yritän liittää sitä QB:hen niin se ei vaan onnistu...
Tein tosta exen, siirsin system32:een. Pistin myös brun45.exen samaan hakemistoon (system32:een), ja asetin ton clock.exen ajoitetuks tehtäväks (autom. kun kone on ollut käyttämättömänä 3min). Nyt toi siis toimii mun koneella näytönsäästäjänä....
Mielestäni paremmin sopisi vaikkapa anadigi-kello, koska ana-kellon alapuolella näkyy myös pieni "digi-kello".
> Codeprofile
QuickBasicilla voi tehdä myös standalonen.
Ja se oikea asia: Tämmösen tein VB:lle joskus ajat sitten: http://www.pulju.net/shop/product_details.php?p=743