Informations sur: MONTRE.BAS

Publié par SFLPMEA le 06/03/2006

Description

Programme MONTRE.BAS en Qbasic. Affichage de l'heure en gros chiffres (datas créés par CH_25!24.BAS). Par SFLPMEA.

Code source (langage qbasic)

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
 
 
v6 © Computaid SPRL 2005-2008 - Tous droits réservés - Hébergé par eTigris - Page générée en 0,071 s - Crédits - Stats
1 connecté