'********************************* '* Affichage de l'Heure 18/25 * C:\......\HEURE.BAS '********************************* CLS : OPTION BASE 1: SCREEN 12: WINDOW SCREEN (1, 1)-(640, 480) DEFSTR A-Z ON ERROR GOTO E99.ERREUR ' *** CaractŠres pour traits doubles H = "Í": V = "º": Chg = "É": Chd = "»": Cbg = "È": Cbd = "¼": Vd = "Ì" Vg = "¹": Hb = "Ë": Hh = "Ê": Crx = "Î" ' ** Chiffres, signes MOINS & POINT DIM C0&(76), C1&(76), C2&(76), C3&(76), C4&(76), C5&(76) DIM C6&(76), C7&(76), C8&(76), C9&(76), CM&(76), CP&(76) DIM G&(73) OPEN "C:\ALPHABET\ALPH1825\C_0.LET" FOR INPUT AS #1 FOR I% = 1 TO 76: INPUT #1, C0&(I%): NEXT I%: CLOSE OPEN "C:\ALPHABET\ALPH1825\C_1.LET" FOR INPUT AS #1 FOR I% = 1 TO 76: INPUT #1, C1&(I%): NEXT I%: CLOSE OPEN "C:\ALPHABET\ALPH1825\C_2.LET" FOR INPUT AS #1 FOR I% = 1 TO 76: INPUT #1, C2&(I%): NEXT I%: CLOSE OPEN "C:\ALPHABET\ALPH1825\C_3.LET" FOR INPUT AS #1 FOR I% = 1 TO 76: INPUT #1, C3&(I%): NEXT I%: CLOSE OPEN "C:\ALPHABET\ALPH1825\C_4.LET" FOR INPUT AS #1 FOR I% = 1 TO 76: INPUT #1, C4&(I%): NEXT I%: CLOSE OPEN "C:\ALPHABET\ALPH1825\C_5.LET" FOR INPUT AS #1 FOR I% = 1 TO 76: INPUT #1, C5&(I%): NEXT I%: CLOSE OPEN "C:\ALPHABET\ALPH1825\C_6.LET" FOR INPUT AS #1 FOR I% = 1 TO 76: INPUT #1, C6&(I%): NEXT I%: CLOSE OPEN "C:\ALPHABET\ALPH1825\C_7.LET" FOR INPUT AS #1 FOR I% = 1 TO 76: INPUT #1, C7&(I%): NEXT I%: CLOSE OPEN "C:\ALPHABET\ALPH1825\C_8.LET" FOR INPUT AS #1 FOR I% = 1 TO 76: INPUT #1, C8&(I%): NEXT I%: CLOSE OPEN "C:\ALPHABET\ALPH1825\C_9.LET" FOR INPUT AS #1 FOR I% = 1 TO 76: INPUT #1, C9&(I%): NEXT I%: CLOSE OPEN "C:\ALPHABET\ALPH1825\C_M.LET" FOR INPUT AS #1 FOR I% = 1 TO 76: INPUT #1, CM&(I%): NEXT I%: CLOSE OPEN "C:\ALPHABET\ALPH1825\C_P.LET" FOR INPUT AS #1 FOR I% = 1 TO 76: INPUT #1, CP&(I%): NEXT I%: CLOSE ' *** Couleurs utilis‚es Cct% = 11: Cte% = 15: Ccv% = 11: K% = 11 ' *** Titre = " * * * E X E M P L E * * * " L% = 3: GOSUB F06G: Cr% = 4: GOSUB F06.REMPLI Titre = " * * * Q B A S I C * * * " L% = 3: GOSUB F06D: GOSUB F06.REMPLI Titre = " * * * ? QUELLE HEURE EST-IL chez les PROGBOARDS ? * * * " L% = 8: GOSUB F06C: Cr% = 1: GOSUB F06.REMPLI Titre = " Presser 'ESC' pour sortir du Programme " L% = 25: GOSUB F06G Lchg% = 11: Cchg% = 22: Lcbd% = 20: Ccbd% = 56 Ccv% = 11: GOSUB F08.CVIDE: Ccv% = 14 Dalle = CHR$(1) + CHR$(2) + CHR$(64) PAINT (64, 100), Dalle, 11 GOSUB F00.CADRE Lchg% = 12: Cchg% = 24: Lcbd% = 19: Ccbd% = 54 Ccv% = 12: GOSUB F08.CVIDE: 'Ccv% = 14 Lchg% = 14: Cchg% = 28: Lcbd% = 17: Ccbd% = 50 Ccv% = 12: GOSUB F08.CVIDE Dalle = CHR$(1) + CHR$(2) + CHR$(4) + CHR$(8) + CHR$(16) Dalle = Dalle + CHR$(32) + CHR$(64) + CHR$(128) PAINT (240, 200), Dalle, 12 LOCATE 30, 1: PRINT SPACE$(80); Ysa% = 228 ' Ligne sup‚rieure affichage de l'heure Xga% = 228 ' Colonne gauche affichage de l'heure ' * * * D‚but de Boucle d'affichage DO ' * * * Calcul de l'heure HH/MM/SS.S Secondes! = TIMER H! = INT(Secondes! / 3600): Heure = LTRIM$(STR$(H!)) IF H! = 0 THEN Heure = "00" IF LEN(Heure) = 1 THEN Heure = "0" + Heure M! = INT(Secondes! / 60) - H! * 60: Minute = LTRIM$(STR$(M!)) IF M! = 0 THEN Minute = "00" IF LEN(Minute) = 1 THEN Minute = "0" + Minute S! = Secondes! - H! * 3600 - M! * 60 S! = INT(S! * 10) / 10: Seconde = RTRIM$(LTRIM$(STR$(S!))) IF S! = 0 THEN Seconde = "00.0" IF S! = INT(S!) THEN Seconde = Seconde + ".00" IF S! < 10 AND S! > 0 THEN Seconde = "0" + Seconde IF LEN(Seconde) < 4 THEN Seconde = STRING$(4 - LEN(Seconde), "0") + Seconde IF LEN(Seconde) > 4 THEN Seconde = LEFT$(Seconde, 4) HMS = Heure + "/" + Minute + "/" + Seconde ' *** Affichage de l'heure XX% = Xga% - 15 FOR P% = 1 TO 10 XX% = XX% + 16 IF MID$(HMS, P%, 1) = MID$(HMS.Pr, P%, 1) GOTO INCHANGE SELECT CASE MID$(HMS, P%, 1) CASE "0", " ": PUT (XX%, Ysa%), C0&, PSET CASE "1": PUT (XX%, Ysa%), C1&, PSET CASE "2": PUT (XX%, Ysa%), C2&, PSET CASE "3": PUT (XX%, Ysa%), C3&, PSET CASE "4": PUT (XX%, Ysa%), C4&, PSET CASE "5": PUT (XX%, Ysa%), C5&, PSET CASE "6": PUT (XX%, Ysa%), C6&, PSET CASE "7": PUT (XX%, Ysa%), C7&, PSET CASE "8": PUT (XX%, Ysa%), C8&, PSET CASE "9": PUT (XX%, Ysa%), C9&, PSET CASE ".": PUT (XX%, Ysa%), CP&, PSET CASE "-", "/": PUT (XX%, Ysa%), CM&, PSET END SELECT INCHANGE: NEXT P% HMS.Pr = HMS LOOP UNTIL INKEY$ = CHR$(27) ' * * * Fin de Boucle d'affichage E98.CEFINI: COLOR 15: END E99.ERREUR: LOCATE 30, 10: COLOR 12 PRINT USING "ERREUR : ### Voir Programmeur ?????"; ERR; GOSUB F01.SIRENE: SLEEP: GOTO E98.CEFINI F00.CADRE: FOR I% = 1 TO 16: LINE (I%, I%)-(I%, 232), K%, , 32752: NEXT I% Y% = 234 FOR X% = 1 TO 16: Y% = Y% - 1: LINE (X%, Y%)-(X%, 464), K%, , 4095: NEXT X% FOR I% = 1 TO 16: LINE (I%, I%)-(320, I%), K%, , 32752: NEXT I% X% = 322 FOR Y% = 1 TO 16: X% = X% - 1: LINE (X%, Y%)-(640, Y%), K%, , 4095: NEXT Y% Y% = 465 FOR X% = 1 TO 16: Y% = Y% - 1: LINE (X%, Y%)-(320, Y%), K%, , 32752: NEXT X% X% = 322: Y% = 465 FOR I% = 1 TO 16: X% = X% - 1: Y% = Y% - 1 LINE (X%, Y%)-(640, Y%), K%, , 4095 NEXT I% X% = 641 FOR Y% = 1 TO 16: X% = X% - 1: LINE (X%, Y%)-(X%, 232), K%, , 32752: NEXT Y% X% = 641: Y% = 234 FOR I% = 1 TO 16: X% = X% - 1: Y% = Y% - 1 LINE (X%, Y%)-(X%, 464), K%, , 4095 NEXT I% K% = 12 LINE (1, 1)-(24, 24), K%, B: LINE (1, 1)-(24, 24), K% LINE (1, 24)-(24, 1), K%: PAINT (6, 12), K%, K% PAINT (12, 6), K%, K%: PAINT (18, 12), K% - 8, K% PAINT (12, 18), K% - 8, K%: LINE (1, 1)-(12, 12), 15 GET (1, 1)-(24, 24), G&: PUT (1, 220), G&, PSET PUT (1, 441), G&, PSET: PUT (308, 1), G&, PSET PUT (308, 441), G&, PSET: PUT (616, 1), G&, PSET PUT (617, 220), G&, PSET: PUT (617, 441), G&, PSET RETURN ' ***** SIRENE ET AFFICHAGE MESSAGE en Ligne 30 ***** F01.SIRENE: FOR Z% = 500 TO 100 STEP -5: SOUND Z%, Z% / 5000: NEXT Z%: RETURN F01.ERR: BEEP: LOCATE 30, 10: COLOR 14: PRINT Faux; : GOSUB F02.ATTENTE IF K = CHR$(27) THEN CLS : COLOR 15: END LOCATE 30, 1: COLOR Cfd%: PRINT SPACE$(80); : RETURN F02.ATTENTE: K = INKEY$: IF K = "" GOTO F02.ATTENTE RETURN ' ***** TITRE ENTOURE d'un CADRE ***** F06G: L% = L% - 1: C% = 4: GOTO F06.TITRE F06C: L% = L% - 1: C% = 39 - LEN(Titre) / 2: GOTO F06.TITRE F06D: L% = L% - 1: C% = 76 - LEN(Titre) F06.TITRE: Lg% = LEN(Titre): COLOR Cct% LOCATE L%, C%: PRINT Chg; STRING$((Lg%), H); Chd; LOCATE L% + 1, C%: PRINT V; : LOCATE L% + 1, C% + Lg% + 1: PRINT V; LOCATE L% + 2, C%: PRINT Cbg; STRING$((Lg%), H); Cbd; LOCATE L% + 1, C% + 1: COLOR Cte%: PRINT Titre; RETURN F06.REMPLI: Xg% = C% * 8 + 1: Xd% = (C% + Lg%) * 8 + 1 Yh% = (L%) * 16 - 6: Yb% = Yh% + 26 FOR X% = Xg% TO Xd%: FOR Y% = Yh% TO Yb% IF POINT(X%, Y%) = 0 THEN PSET (X%, Y%), Cr% NEXT Y%, X% RETURN ' ***** AFFICHAGE sur ECRAN d'un CADRE VIDE ***** F08.CVIDE: COLOR Ccv% LOCATE Lchg%, Cchg%: PRINT Chg; STRING$(Ccbd% - Cchg% - 1, H); Chd; LOCATE Lcbd%, Cchg%: PRINT Cbg; STRING$(Ccbd% - Cchg% - 1, H); Cbd; FOR L% = Lchg% + 1 TO Lcbd% - 1 LOCATE L%, Cchg%: PRINT V; : LOCATE L%, Ccbd%: PRINT V; : NEXT L% RETURN