Publié par SFLPMEA le 06/03/2006
Programme MONTRE.BAS en Qbasic. Affichage de l'heure en gros chiffres (datas créés par CH_25!24.BAS). Par SFLPMEA.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209
'********************************* '* 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