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