Kirjautuminen

Haku

Tehtävät

Koodit: QB: Analoginen kello

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$ = ""

Kommentit

GeoHound [18.04.2003 19:10:16]

#

lol

snakari [18.04.2003 21:20:43]

#

ihan toimiva ainakin on

Gwaur [19.04.2003 02:22:58]

#

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

anomizer [20.04.2003 12:12:43]

#

pienta hienosäätöö ja voila!

Dj Wolf [22.04.2003 10:14:10]

#

Luettavaahan tuo koodi on, mutta vähän turhan pitkiä muuttujanimiä, eh? :)

Teme [23.04.2003 14:52:13]

#

Nyt tämäkin on tuolla valmiiden EXE-päätteisten joukossa + mukana vielä lähdekoodit.

http://www.teemuikonen.net/op

miiro [30.05.2004 19:12:34]

#

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!

Sami [04.06.2004 19:25:47]

#

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

k00d3r [13.07.2004 13:06:35]

#

miten sen tiedoston voi avaa jos se ei oo bas-tiedosto?

ReEvolution [27.03.2005 19:35:06]

#

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...

Codeprofile [11.11.2006 15:32:21]

#

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".

moptim [28.01.2007 08:08:24]

#

> 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

Kirjoita kommentti

Muista lukea kirjoitusohjeet.
Tietoa sivustosta