Code:
LINE (160, 160) - (160 + 20, 160 - 50), jaune&
Code:
LINE (160, 160) - STEP(20, -50), jaune&
Code:
TYPE vec x AS INTEGER y AS INTEGEREND TYPEDIM v AS vecv.x = 20v.y = -50LINE(160, 160) - STEP(v.x, v.y), jaune&
Code:
DIM x0 AS INTEGER, x1 AS INTEGER, x2 AS INTEGER, x3 AS INTEGERx0 = -155x1 = 1x2 = 99x3 = INT(RND * 100)PRINT x0PRINT x1PRINT x2PRINT x3
Code:
DIM x(0 TO 3) AS INTEGERx(0) = -155x(1) = 1x(2) = 99x(3) = INT(RND * 100)FOR i% = 0 TO 3 PRINT x(i%)NEXT i%
Code:
CONST PI = 3.14159' our custom typeTYPE vec x AS INTEGER y AS INTEGEREND TYPE' our seconds hand stops arrayDIM sHand(0 to 59) AS vec' fill the arrayFOR i% = 0 to 59 ‘ adding 270 degrees here is equivalent to removing 15 seconds later ' 360 is divided by 60 because the hand makes 60 stops per cycle rad! = (270 + (i% * (360 \ 60))) * (PI / 180) ' 50 is the length of the hand sHand(i%).x = COS(rad!) * 50 sHand(i%).y = SIN(rad!) * 50NEXT i%
Code:
DO ' Seconds% contains a value between 0 and 59 Seconds% = VAL(RIGHT$(TIME$, 2)) ' Get deltas from our array LINE(160,160) - STEP(sHand(Seconds%).x, sHand(Seconds%).y), jaune&LOOP UNTIL LEN(INKEY$)
Statistics: Posted by MikeHawk — Sat Feb 26, 2022 3:17 pm
Code:
'Horloge analogique_TITLE "Horloge analogique vintage"SCREEN _NEWIMAGE(320, 320, 32)CONST Jaune& = _RGB32(255, 255, 0)CONST Cyan& = _RGB32(64, 224, 208)CONST Vert& = _RGB32(0, 255, 0)CONST Rouge& = _RGB32(255, 0, 0)CONST Noir& = _RGB32(0, 0, 0)Pi2! = 8 * ATN(1)sec! = Pi2! / 60min! = Pi2! / 60heure! = Pi2! / 60arc! = Pi2! / 12arc2! = Pi2! / 120FOR t! = 0 TO Pi2! STEP arc! cx% = CINT(COS(t!) * 70) cy% = CINT(SIN(t!) * 70) CIRCLE (cx% + 160, cy% + 160), .5, Vert& CIRCLE (cx% + 160, cy% + 160), 1, Vert& CIRCLE (cx% + 160, cy% + 160), 2, Vert&NEXT t!DO _LIMIT 1000 Year% = VAL(RIGHT$(DATE$, 4)) Jour% = VAL(RIGHT$(DATE$, 7)) Mois% = VAL(RIGHT$(DATE$, 11)) mois$ = LEFT$(DATE$, 2) M = VAL(mois$) SELECT CASE M CASE 1: Lune$ = "janvier" CASE 2: Lune$ = "f" + CHR$(130) + "vrier" CASE 3: Lune$ = "mars" CASE 4: Lune$ = "avril" CASE 5: Lune$ = "mai" CASE 6: Lune$ = "juin" CASE 7: Lune$ = "juillet" CASE 8: Lune$ = "ao" + CHR$(150) + "t" CASE 9: Lune$ = "septembre" CASE 10: Lune$ = "octobre" CASE 11: Lune$ = "novembre" CASE 12: Lune$ = "d" + CHR$(130) + "cembre" END SELECT LOCATE 2, 1 COLOR Cyan& PRINT " Horloge analogique vintage * "; COLOR Jaune& PRINT "(c) Wilou" Longueur = LEN(Lune$) + 17 Stars = ((40 - Longueur - 3) - 1) FOR I = 2 TO Stars LOCATE 3, I COLOR Cyan& PRINT "*"; NEXT I LOCATE 3, (40 - Longueur - 3) PRINT Jour%; Lune$; Year%; "| "; TIME$ Seconds% = VAL(RIGHT$(TIME$, 2)) - 15 s! = sec! * Seconds% Minutes% = VAL(RIGHT$(TIME$, 5)) - 15 M! = min! * Minutes% Heure% = VAL(RIGHT$(TIME$, 8)) - 15 H! = (heure! * 5) * Heure% IF Heure% >= 13 OR Heure% <= 24 THEN Heure% = Heure% - 12 IF VAL(RIGHT$(TIME$, 5)) = 0 AND VAL(RIGHT$(TIME$, 2)) = 0 THEN _LIMIT 1000 BEEP END IF Sx% = CINT(COS(s!) * 50) Sy% = CINT(SIN(s!) * 50) Mx% = CINT(COS(M!) * 60) My% = CINT(SIN(M!) * 60) Hx% = CINT(COS(H!) * 45) Hy% = CINT(SIN(H!) * 45) FOR I = 6 TO 59 STEP 6 IF VAL(RIGHT$(TIME$, 5)) >= I THEN _LIMIT 1000 H! = H! + arc2! Hx% = CINT(COS(H!) * 45) Hy% = CINT(SIN(H!) * 45) END IF NEXT I LINE (160, 160)-(Mx% + 160, My% + 160), Jaune& LINE (160, 160)-(Hx% + 160, Hy% + 160), Jaune& CIRCLE (160, 160), 1, Rouge& CIRCLE (160, 160), 2, Rouge& CIRCLE (160, 160), 3, Rouge& LINE (160, 160)-(Sx% + 160, Sy% + 160), Rouge& DO _LIMIT 1000 Verif% = VAL(RIGHT$(TIME$, 2)) - 15 Verif1% = VAL(RIGHT$(TIME$, 5)) - 15 Verif2% = VAL(RIGHT$(TIME$, 8)) - 15 LOOP UNTIL Verif% <> Seconds% OR Verif1% <> Minutes% OR Verif2% <> Heure% _DISPLAY LINE (160, 160)-(Sx% + 160, Sy% + 160), Noir& LINE (160, 160)-(Mx% + 160, My% + 160), Noir& LINE (160, 160)-(Hx% + 160, Hy% + 160), Noir& LOCATE 18, 4 COLOR Jaune& PRINT "Clic gauche | <"; CHR$(144); "chap> pour quitter" Mouse = _MOUSEINPUT K$ = INKEY$ IF K$ = CHR$(27) OR _MOUSEBUTTON(1) THEN SYSTEMLOOP UNTIL INKEY$ = CHR$(27)
Statistics: Posted by wilou — Fri Feb 25, 2022 9:56 am
I'm so stupid sometimes. At the beginning, I used arc2!, then two times arc2! then 3 times... But when I use arc2! for the first time (or heure!), the new H! is H! + heure! so I just have to add heure! again, not two, three or four times heure! (I had only considered the initial H! and not the H! that was increasing each 12 minutes)!For a reason I ignore, I must do the same routine in the four "if... end if", as if the minutes influenced the hours (M! influences H!)?
Statistics: Posted by wilou — Wed Feb 23, 2022 2:02 pm
Code:
DIM t AS LONGDIM s AS INTEGER, m AS INTEGER, h AS INTEGERDIM sA AS INTEGER, mA AS INTEGER, hA as INTEGERt = CLNG(TIMER) ' get the integer part of the number of seconds since midnights = t MOD 60 ' seconds - MOD (modulo) returns the remainder of an integral divisionm = (t \ 60) MOD 60 ' minutes - backslash for integral division (no fractional part)h = t \ 3600 ' hours (3600 is the number of seconds in an hour)
Code:
sA = 360 / 60 * s ' angle for the second hand, in degreesmA = 360 / 60 * m ' angle for the minute hand, in degrees
Code:
hA = (360 / 12) * (h MOD 12) ' angle for the "hard" hour hand, in degrees
Code:
DIM h2 AS INTEGERDIM h2A AS INTEGERh2 = h MOD 12 ' hour, in range 0-11h2 = h2 * 60 ' hour in minutes, in range 0-660 (661 values, max is 11 * 60)h2 = h2 + m ' hour with minutes included, in range 0-719 (720 values, max is 11 * 60 + 59)
Code:
h2A = (360 / 720) * h2 ' angle for the "soft" hour hand, in degrees
Statistics: Posted by MikeHawk — Tue Feb 22, 2022 10:24 pm
Code:
'Horloge analogique_TITLE "Horloge analogique vintage"SCREEN _NEWIMAGE(640, 320, 32)Blanc& = _RGB32(255, 255, 255)Jaune& = _RGB32(255, 255, 0)Cyan& = _RGB32(64, 224, 208)Vert& = _RGB32(0, 255, 0)Rouge& = _RGB32(255, 0, 0)Noir& = _RGB32(0, 0, 0)Gris& = _RGB32(63, 63, 63)Pi2! = 8 * ATN(1)sec! = Pi2! / 60min! = Pi2! / 60heure! = Pi2! / 60arc! = Pi2! / 12arc2! = Pi2! / 60FOR t! = 0 TO Pi2! STEP arc! cx% = CINT(COS(t!) * 70) cy% = CINT(SIN(t!) * 70) CIRCLE (cx% + 320, cy% + 160), 1, Vert& CIRCLE (cx% + 320, cy% + 160), 2, Vert&NEXT t!DO _LIMIT 1000 CIRCLE (320, 160), 1, Blanc& CIRCLE (320, 160), 2, Blanc& CIRCLE (320, 160), 3, Blanc& Year% = VAL(RIGHT$(DATE$, 4)) Jour% = VAL(RIGHT$(DATE$, 7)) Mois% = VAL(RIGHT$(DATE$, 11)) LOCATE 2, 28 COLOR Cyan& mois$ = LEFT$(DATE$, 2) M = VAL(mois$) SELECT CASE M CASE 1: Lune$ = "janvier" CASE 2: Lune$ = "février" CASE 3: Lune$ = "mars" CASE 4: Lune$ = "avril" CASE 5: Lune$ = "mai" CASE 6: Lune$ = "juin" CASE 7: Lune$ = "juillet" CASE 8: Lune$ = "août" CASE 9: Lune$ = "septembre" CASE 10: Lune$ = "octobre" CASE 11: Lune$ = "novembre" CASE 12: Lune$ = "décembre" END SELECT Longueur = LEN(Lune$) + 17 LOCATE 2, (80 - Longueur - 3) PRINT Jour%; Lune$; Year%; "| "; TIME$ Seconds% = VAL(RIGHT$(TIME$, 2)) - 15 S! = sec! * Seconds% Minutes% = VAL(RIGHT$(TIME$, 5)) - 15 M! = min! * Minutes% Heure% = VAL(RIGHT$(TIME$, 8)) - 15 H! = (heure! * 5) * Heure% IF Heure% >= 13 OR Heure% <= 24 THEN Heure% = Heure% - 12 IF VAL(RIGHT$(TIME$, 5)) = 0 AND VAL(RIGHT$(TIME$, 2)) = 0 THEN _LIMIT 1000 BEEP END IF Sx% = CINT(COS(S!) * 50) Sy% = CINT(SIN(S!) * 50) Mx% = CINT(COS(M!) * 60) My% = CINT(SIN(M!) * 60) Hx% = CINT(COS(H!) * 45) Hy% = CINT(SIN(H!) * 45) IF VAL(RIGHT$(TIME$, 5)) >= 12 THEN _LIMIT 1000 H! = H! + heure! Hx% = CINT(COS(H!) * 45) Hy% = CINT(SIN(H!) * 45) END IF IF VAL(RIGHT$(TIME$, 5)) >= 24 THEN _LIMIT 1000 H! = H! + heure! Hx% = CINT(COS(H!) * 45) Hy% = CINT(SIN(H!) * 45) END IF IF VAL(RIGHT$(TIME$, 5)) >= 36 THEN _LIMIT 1000 H! = H! + heure! Hx% = CINT(COS(H!) * 45) Hy% = CINT(SIN(H!) * 45) END IF IF VAL(RIGHT$(TIME$, 5)) >= 48 THEN _LIMIT 1000 H! = H! + heure! Hx% = CINT(COS(H!) * 45) Hy% = CINT(SIN(H!) * 45) END IF LINE (320, 160)-(Sx% + 320, Sy% + 160), Rouge& LINE (320, 160)-(Mx% + 320, My% + 160), Jaune& LINE (320, 160)-(Hx% + 320, Hy% + 160), Jaune& DO _LIMIT 1000 Verif% = VAL(RIGHT$(TIME$, 2)) - 15 Verif1% = VAL(RIGHT$(TIME$, 5)) - 15 Verif2% = VAL(RIGHT$(TIME$, 8)) - 15 LOOP UNTIL Verif% <> Seconds% OR Verif1% <> Minutes% OR Verif2% <> Heure% _DISPLAY LINE (320, 160)-(Sx% + 320, Sy% + 160), Noir& LINE (320, 160)-(Mx% + 320, My% + 160), Noir& LINE (320, 160)-(Hx% + 320, Hy% + 160), Noir& LOCATE 18, 45 COLOR Jaune& PRINT "Clic gauche ou <"; CHR$(144); "chap> pour quitter" Mouse = _MOUSEINPUT K$ = INKEY$ IF K$ = CHR$(27) OR _MOUSEBUTTON(1) THEN SYSTEMLOOP UNTIL INKEY$ = CHR$(27)
Statistics: Posted by wilou — Tue Feb 22, 2022 9:33 pm
Code:
'Horloge analogique_TITLE "Horloge analogique vintage"SCREEN _NEWIMAGE(640, 320, 32)Blanc& = _RGB32(255, 255, 255)Jaune& = _RGB32(255, 255, 0)Cyan& = _RGB32(64, 224, 208)Vert& = _RGB32(0, 255, 0)Rouge& = _RGB32(255, 0, 0)Noir& = _RGB32(0, 0, 0)Gris& = _RGB32(63, 63, 63)Pi2! = 8 * ATN(1)sec! = Pi2! / 60min! = Pi2! / 60heure! = Pi2! / 60arc! = Pi2! / 12arc2! = Pi2! / 60FOR t! = 0 TO Pi2! STEP arc! cx% = CINT(COS(t!) * 70) cy% = CINT(SIN(t!) * 70) CIRCLE (cx% + 320, cy% + 160), 1, Vert& CIRCLE (cx% + 320, cy% + 160), 2, Vert&NEXT t!DO _LIMIT 1000 CIRCLE (320, 160), 1, Blanc& CIRCLE (320, 160), 2, Blanc& CIRCLE (320, 160), 3, Blanc& Year% = VAL(RIGHT$(DATE$, 4)) Jour% = VAL(RIGHT$(DATE$, 7)) Mois% = VAL(RIGHT$(DATE$, 11)) LOCATE 2, 28 COLOR Cyan& mois$ = LEFT$(DATE$, 2) M = VAL(mois$) SELECT CASE M CASE 1: Lune$ = "janvier" CASE 2: Lune$ = "février" CASE 3: Lune$ = "mars" CASE 4: Lune$ = "avril" CASE 5: Lune$ = "mai" CASE 6: Lune$ = "juin" CASE 7: Lune$ = "juillet" CASE 8: Lune$ = "août" CASE 9: Lune$ = "septembre" CASE 10: Lune$ = "octobre" CASE 11: Lune$ = "novembre" CASE 12: Lune$ = "décembre" END SELECT Longueur = LEN(Lune$) + 17 LOCATE 2, (80 - Longueur - 3) PRINT Jour%; Lune$; Year%; "| "; TIME$ Seconds% = VAL(RIGHT$(TIME$, 2)) - 15 S! = sec! * Seconds% Minutes% = VAL(RIGHT$(TIME$, 5)) - 15 M! = min! * Minutes% Heure% = VAL(RIGHT$(TIME$, 8)) - 15 H! = (heure! * 5) * Heure% IF Heure% >= 13 OR Heure% <= 24 THEN Heure% = Heure% - 12 IF VAL(RIGHT$(TIME$, 5)) >= 12 THEN _LIMIT 1000 H! = H! + 0.016 END IF IF VAL(RIGHT$(TIME$, 5)) >= 24 THEN _LIMIT 1000 H! = H! + 0.033 END IF IF VAL(RIGHT$(TIME$, 5)) >= 36 THEN _LIMIT 1000 H! = H! + 0.05 END IF IF VAL(RIGHT$(TIME$, 5)) >= 48 THEN _LIMIT 1000 H! = H! + 0.067 END IF IF VAL(RIGHT$(TIME$, 5)) = 0 AND VAL(RIGHT$(TIME$, 2)) = 0 THEN _LIMIT 1000 BEEP END IF Sx% = CINT(COS(S!) * 50) Sy% = CINT(SIN(S!) * 50) Mx% = CINT(COS(M!) * 60) My% = CINT(SIN(M!) * 60) Hx% = CINT(COS(H!) * 45) Hy% = CINT(SIN(H!) * 45) LINE (320, 160)-(Sx% + 320, Sy% + 160), Rouge& LINE (320, 160)-(Mx% + 320, My% + 160), Jaune& LINE (320, 160)-(Hx% + 320, Hy% + 160), Jaune& DO _LIMIT 1000 Verif% = VAL(RIGHT$(TIME$, 2)) - 15 Verif1% = VAL(RIGHT$(TIME$, 5)) - 15 Verif2% = VAL(RIGHT$(TIME$, 8)) - 15 LOOP UNTIL Verif% <> Seconds% OR Verif1% <> Minutes% OR Verif2% <> Heure% _DISPLAY LINE (320, 160)-(Sx% + 320, Sy% + 160), Noir& LINE (320, 160)-(Mx% + 320, My% + 160), Noir& LINE (320, 160)-(Hx% + 320, Hy% + 160), Noir& LOCATE 18, 45 COLOR Jaune& PRINT "Clic gauche ou <"; CHR$(144); "chap> pour quitter" Mouse = _MOUSEINPUT K$ = INKEY$ IF K$ = CHR$(27) OR _MOUSEBUTTON(1) THEN SYSTEMLOOP UNTIL INKEY$ = CHR$(27)
Code:
IF VAL(RIGHT$(TIME$, 5)) >= 12 THEN _LIMIT 1000 H! = H! + 0.016 END IF IF VAL(RIGHT$(TIME$, 5)) >= 24 THEN _LIMIT 1000 H! = H! + 0.033 END IF IF VAL(RIGHT$(TIME$, 5)) >= 36 THEN _LIMIT 1000 H! = H! + 0.05 END IF IF VAL(RIGHT$(TIME$, 5)) >= 48 THEN _LIMIT 1000 H! = H! + 0.067 END IF
Statistics: Posted by wilou — Tue Feb 22, 2022 7:13 am