Publié par SFLPMEA le 31/01/2006
Programme HEURE.BAS en Qbasic. Affichage de l'heure en gros chiffres et quelques "fantaisies". 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
'********************************* '* 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