'********************************* '* Affichage de l'Heure 23/24 * C:\......\MONTRE.BAS '********************************* CLS : OPTION BASE 1: SCREEN 12: WINDOW SCREEN (1, 1)-(640, 480) DEFSTR A-Z Acces = "C:\ALPHABET\CH_25X24\" ON ERROR GOTO E99.ERREUR ' ** DIM des Chiffres, ET DIVERS DIM G&(73) ' *** Pour affichage sur ‚cran DIM Ch0&(110), Ch1&(110), Ch2&(110), Ch3&(110), Ch4&(110) DIM Ch5&(110), Ch6&(110), Ch7&(110), Ch8&(110), Ch9&(110) DIM Poin&(110), Virgule&(110), Apostrophe&(110), Guillemet&(110) DIM Plus&(110), Moins&(110), Degre&(110), Heure.et.Point&(110) ' ** Lecture des Fichiers/Datas et chargement des Tables 'Chiffres' & Annexes OPEN Acces + "C!0.LET" FOR INPUT AS #1 FOR I% = 1 TO 110: INPUT #1, Ch0&(I%): NEXT I%: CLOSE OPEN Acces + "C!1.LET" FOR INPUT AS #1 FOR I% = 1 TO 110: INPUT #1, Ch1&(I%): NEXT I%: CLOSE OPEN Acces + "C!2.LET" FOR INPUT AS #1 FOR I% = 1 TO 110: INPUT #1, Ch2&(I%): NEXT I%: CLOSE OPEN Acces + "C!3.LET" FOR INPUT AS #1 FOR I% = 1 TO 110: INPUT #1, Ch3&(I%): NEXT I%: CLOSE OPEN Acces + "C!4.LET" FOR INPUT AS #1 FOR I% = 1 TO 110: INPUT #1, Ch4&(I%): NEXT I%: CLOSE OPEN Acces + "C!5.LET" FOR INPUT AS #1 FOR I% = 1 TO 110: INPUT #1, Ch5&(I%): NEXT I%: CLOSE OPEN Acces + "C!6.LET" FOR INPUT AS #1 FOR I% = 1 TO 110: INPUT #1, Ch6&(I%): NEXT I%: CLOSE OPEN Acces + "C!7.LET" FOR INPUT AS #1 FOR I% = 1 TO 110: INPUT #1, Ch7&(I%): NEXT I%: CLOSE OPEN Acces + "C!8.LET" FOR INPUT AS #1 FOR I% = 1 TO 110: INPUT #1, Ch8&(I%): NEXT I%: CLOSE OPEN Acces + "C!9.LET" FOR INPUT AS #1 FOR I% = 1 TO 110: INPUT #1, Ch9&(I%): NEXT I%: CLOSE OPEN Acces + "C!POINT.LET" FOR INPUT AS #1 FOR I% = 1 TO 110: INPUT #1, Poin&(I%): NEXT I%: CLOSE OPEN Acces + "C!VIRG.LET" FOR INPUT AS #1 FOR I% = 1 TO 110: INPUT #1, Virgule&(I%): NEXT I%: CLOSE OPEN Acces + "C!APOST.LET" FOR INPUT AS #1 FOR I% = 1 TO 110: INPUT #1, Apostrophe&(I%): NEXT I%: CLOSE OPEN Acces + "C!GUIL.LET" FOR INPUT AS #1 FOR I% = 1 TO 110: INPUT #1, Guillemet&(I%): NEXT I%: CLOSE OPEN Acces + "C!PLUS.LET" FOR INPUT AS #1 FOR I% = 1 TO 110: INPUT #1, Plus&(I%): NEXT I%: CLOSE OPEN Acces + "C!MOINS.LET" FOR INPUT AS #1 FOR I% = 1 TO 110: INPUT #1, Moins&(I%): NEXT I%: CLOSE OPEN Acces + "C!DEGRE.LET" FOR INPUT AS #1 FOR I% = 1 TO 110: INPUT #1, Degre&(I%): NEXT I%: CLOSE OPEN Acces + "C!H_et_P.LET" FOR INPUT AS #1 FOR I% = 1 TO 110: INPUT #1, Heure.et.Point&(I%): NEXT I%: CLOSE ' *** TOUT est 'charg‚', mˆme si NON utilis‚ dans ce programme ' *** Couleurs utilis‚es Cct% = 1 ' *** Couleur Cadre Titre Cte% = 15 ' *** Couleur Titre Ecriture Ccv% = 1 ' *** Couleur Cadre Vide ' Lchg% = Ligne Coin Haut Gauche ' Cchg% = Colonne Coin Haut Gauche ' Lcbd% = Ligne Coin Bas Droit ' Ccbd% = Colonne Coin Bas Doit CR% = 1 ' *** Couleur Remplissage ' *** Formatage Ecran Titre = " * * * E X E M P L E * * * " L% = 3: GOSUB F06G: CR% = 1: 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: Cte% = 11: GOSUB F06C: CR% = 0: GOSUB F06.REMPLI Titre = " Presser 'ESC' pour sortir du Programme " L% = 25: Cte% = 15: GOSUB F06C: CR% = 4: GOSUB F06.REMPLI Lchg% = 12: Cchg% = 18: Lcbd% = 19: Ccbd% = 60 Ccv% = 1: GOSUB F08.CVIDE: Ccv% = 14 Dalle = CHR$(1) + CHR$(2) + CHR$(64) PAINT (64, 100), Dalle, 1 K% = 11: GOSUB F00.CADRE Lchg% = 13: Cchg% = 21: Lcbd% = 18: Ccbd% = 57 Ccv% = 12: GOSUB F08.CVIDE Lchg% = 14: Cchg% = 24: Lcbd% = 17: Ccbd% = 54 Ccv% = 12: GOSUB F08.CVIDE Dalle = CHR$(1) + CHR$(2) + CHR$(4) + CHR$(8) + CHR$(16) Dalle = Dalle + CHR$(32) + CHR$(64) + CHR$(128) LINE (192, 210)-(194, 212), 11, BF PAINT (192, 208), Dalle, 12 LOCATE 30, 1: PRINT SPACE$(80); Ysa% = 228 ' Ligne sup‚rieure affichage de l'heure Xga% = 192 ' 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% + 22 IF MID$(HMS, P%, 1) = MID$(HMS.Pr, P%, 1) GOTO INCHANGE SELECT CASE MID$(HMS, P%, 1) CASE "0", " ": PUT (XX%, Ysa%), Ch0&, PSET CASE "1": PUT (XX%, Ysa%), Ch1&, PSET CASE "2": PUT (XX%, Ysa%), Ch2&, PSET CASE "3": PUT (XX%, Ysa%), Ch3&, PSET CASE "4": PUT (XX%, Ysa%), Ch4&, PSET CASE "5": PUT (XX%, Ysa%), Ch5&, PSET CASE "6": PUT (XX%, Ysa%), Ch6&, PSET CASE "7": PUT (XX%, Ysa%), Ch7&, PSET CASE "8": PUT (XX%, Ysa%), Ch8&, PSET CASE "9": PUT (XX%, Ysa%), Ch9&, PSET CASE ",": PUT (XX%, Ysa%), Poin&, PSET CASE ".": PUT (XX%, Ysa%), Virgule&, PSET CASE "'": PUT (XX%, Ysa%), Apostrophe&, PSET CASE CHR$(34): PUT (XX%, Ysa%), Guillemet&, PSET CASE "+": PUT (XX%, Ysa%), Plus&, PSET CASE "-": PUT (XX%, Ysa%), Moins&, PSET CASE "ø": PUT (XX%, Ysa%), Degre&, PSET CASE "H": PUT (XX%, Ysa%), Heure.et.Point&, 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% = 13 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: 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 "É"; STRING$((Lg%), "Í"); "»" LOCATE L% + 1, C%: PRINT "º"; : LOCATE L% + 1, C% + Lg% + 1: PRINT "º" LOCATE L% + 2, C%: PRINT "È"; STRING$((Lg%), "Í"); "¼" 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 "É"; STRING$(Ccbd% - Cchg% - 1, "Í"); "»" LOCATE Lcbd%, Cchg%: PRINT "È"; STRING$(Ccbd% - Cchg% - 1, "Í"); "¼" FOR L% = Lchg% + 1 TO Lcbd% - 1 LOCATE L%, Cchg%: PRINT "º"; : LOCATE L%, Ccbd%: PRINT "º": NEXT L% RETURN