463 lines
10 KiB
QBasic
463 lines
10 KiB
QBasic
'Generador de un reloj digital en pantalla'
|
||
DEFINT A-Z
|
||
|
||
DECLARE SUB PonNum (Digito$, Posicion)
|
||
DIM SHARED P(6), A
|
||
DIM OldX1(30), OldY1(30), OldX2(30), OldY2(30), OldX3(30), OldY3(30), OldX4(30), OldY4(30), OldX5(30), OldY5(30), OldTipo(100), OldX6(100), OldY6(100)
|
||
RANDOMIZE TIMER
|
||
|
||
X(1) = 400: Y(1) = 175
|
||
X(2) = 400: Y(2) = 175
|
||
X(3) = 400: Y(3) = 175
|
||
|
||
X(4) = 400: Y(4) = 175
|
||
X(5) = 400: Y(5) = 175
|
||
|
||
mir$ = "Reloj ( Jos‚ David Guill‚n 15/02/93 )"
|
||
IF MID$(mir$, 13, 1) <> "‚" THEN PRINT " Programa modificado 1": SYSTEM
|
||
IF MID$(mir$, 26, 1) <> "‚" THEN PRINT " Programa modificado 2": SYSTEM
|
||
|
||
P(1) = 0
|
||
P(2) = 80
|
||
P(3) = 200
|
||
P(4) = 280
|
||
|
||
P(5) = 400
|
||
P(6) = 440
|
||
|
||
'P(1) = 0
|
||
'P(2) = 75
|
||
'P(3) = 195
|
||
'P(4) = 275
|
||
'
|
||
'P(5) = 395
|
||
'P(6) = 435
|
||
|
||
SCREEN 9
|
||
Hora$ = LEFT$(TIME$, 2)
|
||
Min$ = MID$(TIME$, 4, 2)
|
||
|
||
Hora1$ = LEFT$(Hora$, 1)
|
||
A = 1
|
||
PonNum Hora1$, 1
|
||
Hora2$ = MID$(Hora$, 2, 1)
|
||
A = 2
|
||
PonNum Hora2$, 2
|
||
|
||
LINE (170, 20)-(180, 30), 12, BF
|
||
LINE (170, 60)-(180, 70), 12, BF
|
||
|
||
Min1$ = LEFT$(Min$, 1)
|
||
A = 3
|
||
PonNum Min1$, 3
|
||
|
||
Min2$ = MID$(Min$, 2, 1)
|
||
A = 4
|
||
PonNum Min2$, 4
|
||
|
||
|
||
LINE (370, 50)-(380, 60), 12, BF
|
||
LINE (370, 80)-(380, 90), 12, BF
|
||
|
||
|
||
DO
|
||
Hora$ = LEFT$(TIME$, 2)
|
||
Min$ = MID$(TIME$, 4, 2)
|
||
|
||
IF INKEY$ <> "" THEN SCREEN 0: PRINT mir$: SYSTEM
|
||
|
||
IF OldHor2$ <> LEFT$(Hora$, 1) THEN
|
||
Hora1$ = LEFT$(Hora$, 1)
|
||
A = 1
|
||
PonNum Hora1$, 1
|
||
END IF
|
||
OldHor2$ = LEFT$(Hora$, 1)
|
||
|
||
IF OldHor1$ <> MID$(Hora$, 2, 1) THEN
|
||
Hora2$ = MID$(Hora$, 2, 1)
|
||
A = 2
|
||
PonNum Hora2$, 2
|
||
END IF
|
||
OldHor1$ = MID$(Hora$, 2, 1)
|
||
|
||
IF OldMin2$ <> LEFT$(Min$, 1) THEN
|
||
Min1$ = LEFT$(Min$, 1)
|
||
A = 3
|
||
PonNum Min1$, 3
|
||
END IF
|
||
OldMin2$ = LEFT$(Min$, 1)
|
||
|
||
IF OldMin1$ <> MID$(Min$, 2, 1) THEN
|
||
Min2$ = MID$(Min$, 2, 1)
|
||
A = 4
|
||
PonNum Min2$, 4
|
||
|
||
END IF
|
||
OldMin1$ = MID$(Min$, 2, 1)
|
||
|
||
IF INKEY$ <> "" THEN SCREEN 0: PRINT mir$: SYSTEM
|
||
|
||
seg$ = MID$(TIME$, 7, 1)
|
||
A = 5
|
||
PonNum seg$, 5
|
||
seg$ = MID$(TIME$, 8, 1)
|
||
A = 6
|
||
PonNum seg$, 6
|
||
|
||
|
||
'***************************************************
|
||
'* GRAFICO LINEAL **********************************
|
||
'***************************************************
|
||
|
||
M(4) = INT(RND * 8) + 1
|
||
M(3) = INT(RND * 8) + 1
|
||
M(2) = INT(RND * 8) + 1
|
||
M(5) = INT(RND * 8) + 1
|
||
M(1) = INT(RND * 8) + 1
|
||
M(6) = INT(RND * 8) + 1
|
||
|
||
DO
|
||
|
||
Vez = Vez + 1
|
||
Vz = Vz + 1
|
||
|
||
IF Vz >= 30 THEN Vz = 1
|
||
|
||
IF Vez >= 30 THEN Vez = 1
|
||
|
||
FOR Coor = 1 TO 6
|
||
|
||
SELECT CASE M(Coor)
|
||
CASE 1: IF Coor <> 6 THEN X(Coor) = X(Coor) - 3: Y(Coor) = Y(Coor) - 3 ELSE X(Coor) = X(Coor) - 2: Y(Coor) = Y(Coor) - 2
|
||
CASE 2: IF Coor <> 6 THEN Y(Coor) = Y(Coor) - 3 ELSE Y(Coor) = Y(Coor) - 2
|
||
CASE 3: IF Coor <> 6 THEN X(Coor) = X(Coor) + 3: Y(Coor) = Y(Coor) - 3 ELSE X(Coor) = X(Coor) + 2: Y(Coor) = Y(Coor) - 2
|
||
CASE 4: IF Coor <> 6 THEN X(Coor) = X(Coor) - 3 ELSE X(Coor) = X(Coor) - 2
|
||
CASE 5: 'Pause
|
||
CASE 6: IF Coor <> 6 THEN Y(Coor) = Y(Coor) + 3 ELSE Y(Coor) = Y(Coor) + 2
|
||
CASE 7: IF Coor <> 6 THEN X(Coor) = X(Coor) - 3: Y(Coor) = Y(Coor) + 3 ELSE X(Coor) = X(Coor) - 2: Y(Coor) = Y(Coor) + 2
|
||
CASE 8: IF Coor <> 6 THEN X(Coor) = X(Coor) + 3 ELSE X(Coor) = X(Coor) + 2
|
||
CASE 9: IF Coor <> 6 THEN X(Coor) = X(Coor) + 3: Y(Coor) = Y(Coor) + 3 ELSE X(Coor) = X(Coor) + 2: Y(Coor) = Y(Coor) + 2
|
||
END SELECT
|
||
|
||
IF Coor = 6 THEN
|
||
IF X(6) >= 640 THEN X(6) = 640: Salida = 1
|
||
IF X(6) <= 0 THEN X(6) = 0: Salida = 1
|
||
IF Y(6) <= 150 THEN Y(6) = 150: Salida = 1
|
||
IF Y(6) >= 350 THEN Y(6) = 350: Salida = 1
|
||
ELSE
|
||
IF X(Coor) >= 640 THEN X(Coor) = 640: Salida = 1
|
||
|
||
IF X(Coor) <= 480 AND Y(Coor) < 250 THEN
|
||
X(Coor) = 650: Salida = 1
|
||
ELSE
|
||
IF X(Coor) <= 0 THEN X(Coor) = 480: Salida = 1
|
||
END IF
|
||
|
||
|
||
IF Y(Coor) >= 350 AND X(Corr) <= 400 THEN Y(Coor) = 350: Salida = 1
|
||
IF Y(Coor) >= 350 THEN Y(Coor) = 0: Salida = 1
|
||
IF Y(Coor) <= 0 THEN Y(Coor) = 350: Salida = 1
|
||
END IF
|
||
|
||
OldX6(1) = X(6)
|
||
OldY6(1) = Y(6)
|
||
OldTipo(1) = Tipo
|
||
|
||
OldX1(1) = X(1)
|
||
OldX2(1) = X(2)
|
||
OldX3(1) = X(3)
|
||
|
||
OldX4(1) = X(4)
|
||
OldX5(1) = X(5)
|
||
|
||
OldY1(1) = Y(1)
|
||
OldY2(1) = Y(2)
|
||
OldY3(1) = Y(3)
|
||
|
||
OldY4(1) = Y(4)
|
||
OldY5(1) = Y(5)
|
||
|
||
NEXT
|
||
|
||
IF RIGHT$(RTRIM$(LTRIM$(STR$(Vez / 5))), 1) = "0" OR RIGHT$(RTRIM$(LTRIM$(STR$(Vez / 5))), 1) = "5" THEN Vez1 = Vez1 + 1
|
||
IF Vez1 >= 16 THEN Vez1 = 1
|
||
|
||
|
||
IF RIGHT$(RTRIM$(LTRIM$(STR$(Vz / 2))), 1) = "0" OR RIGHT$(RTRIM$(LTRIM$(STR$(Vz / 5))), 1) = "5" THEN Vz1 = Vz1 + 1
|
||
IF Vz1 >= 16 THEN Vz1 = 1
|
||
|
||
|
||
LINE (X(1), Y(1))-(X(2), Y(2)), Vez1
|
||
LINE (X(2), Y(2))-(X(3), Y(3)), Vez1
|
||
LINE (X(3), Y(3))-(X(4), Y(4)), Vez1
|
||
|
||
LINE (X(4), Y(4))-(X(5), Y(5)), Vez1
|
||
LINE (X(5), Y(5))-(X(1), Y(1)), Vez1
|
||
|
||
CIRCLE (X(6), Y(6)), 20, Vz1: ', , , Tipo
|
||
|
||
A = 31
|
||
|
||
WHILE A >= 2
|
||
|
||
A = A - 1
|
||
|
||
OldX1(A) = OldX1(A - 1)
|
||
OldY1(A) = OldY1(A - 1)
|
||
|
||
OldX2(A) = OldX2(A - 1)
|
||
OldY2(A) = OldY2(A - 1)
|
||
|
||
OldX3(A) = OldX3(A - 1)
|
||
OldY3(A) = OldY3(A - 1)
|
||
|
||
OldX4(A) = OldX4(A - 1)
|
||
OldY4(A) = OldY4(A - 1)
|
||
|
||
OldX5(A) = OldX5(A - 1)
|
||
OldY5(A) = OldY5(A - 1)
|
||
|
||
WEND
|
||
|
||
A = 71
|
||
|
||
WHILE A >= 2
|
||
A = A - 1
|
||
OldX6(A) = OldX6(A - 1)
|
||
OldY6(A) = OldY6(A - 1)
|
||
OldTipo(A) = OldTipo(A - 1)
|
||
WEND
|
||
CIRCLE (OldX6(70), OldY6(70)), 20, 0
|
||
|
||
LINE (OldX1(30), OldY1(30))-(OldX2(30), OldY2(30)), 0
|
||
LINE (OldX2(30), OldY2(30))-(OldX3(30), OldY3(30)), 0
|
||
LINE (OldX3(30), OldY3(30))-(OldX4(30), OldY4(30)), 0
|
||
|
||
LINE (OldX4(30), OldY4(30))-(OldX5(30), OldY5(30)), 0
|
||
LINE (OldX5(30), OldY5(30))-(OldX1(30), OldY1(30)), 0
|
||
|
||
LOOP WHILE Salida <> 1
|
||
|
||
Salida = 0
|
||
|
||
LOOP
|
||
|
||
|
||
|
||
'***************************************************
|
||
'* GRAFICOS DE PRUEBA ******************************
|
||
'***************************************************
|
||
grap:
|
||
|
||
SUB PonNum (Digito$, Posicion)
|
||
|
||
SELECT CASE VAL(RTRIM$(LTRIM$(Digito$)))
|
||
CASE 0
|
||
D1 = 1: D2 = 1: D3 = 1: D4 = 1: D5 = 0: D6 = 1: D7 = 1
|
||
|
||
CASE 1
|
||
D1 = 0: D2 = 0: D3 = 1: D4 = 0: D5 = 0: D6 = 1: D7 = 0
|
||
|
||
CASE 2
|
||
D1 = 0: D2 = 1: D3 = 1: D4 = 1: D5 = 1: D6 = 0: D7 = 1
|
||
|
||
|
||
CASE 3
|
||
D1 = 0: D2 = 1: D3 = 1: D4 = 0: D5 = 1: D6 = 1: D7 = 1
|
||
|
||
|
||
CASE 4
|
||
D1 = 1: D2 = 0: D3 = 1: D4 = 0: D5 = 1: D6 = 1: D7 = 0
|
||
|
||
|
||
CASE 5
|
||
D1 = 1: D2 = 1: D3 = 0: D4 = 0: D5 = 1: D6 = 1: D7 = 1
|
||
|
||
|
||
CASE 6
|
||
D1 = 1: D2 = 1: D3 = 0: D4 = 1: D5 = 1: D6 = 1: D7 = 1
|
||
|
||
|
||
CASE 7
|
||
D1 = 0: D2 = 1: D3 = 1: D4 = 0: D5 = 0: D6 = 1: D7 = 0
|
||
|
||
|
||
CASE 8
|
||
D1 = 1: D2 = 1: D3 = 1: D4 = 1: D5 = 1: D6 = 1: D7 = 1
|
||
|
||
|
||
CASE 9
|
||
D1 = 1: D2 = 1: D3 = 1: D4 = 0: D5 = 1: D6 = 1: D7 = 1
|
||
|
||
|
||
END SELECT
|
||
|
||
IF Posicion < 5 THEN
|
||
|
||
IF D1 = 1 THEN
|
||
PSET (0 + P(A), 0), 4
|
||
DRAW "D40 R15 U26 H15"
|
||
DRAW "F13 BL5 P4,4"
|
||
ELSE
|
||
PSET (0 + P(A), 0), 0
|
||
DRAW "D40 R15 U26 H15"
|
||
DRAW "F13 BL5 P0,0"
|
||
|
||
END IF
|
||
|
||
IF D2 = 1 THEN
|
||
PSET (3 + P(A), 0), 4
|
||
DRAW "R63 G15 L33 H15"
|
||
DRAW "BR5 BD5 BR23 P4,4"
|
||
ELSE
|
||
PSET (3 + P(A), 0), 0
|
||
DRAW "R63 G15 L33 H15"
|
||
DRAW "BR5 BD5 BR23 P0,0"
|
||
|
||
END IF
|
||
|
||
IF D3 = 1 THEN
|
||
PSET (69 + P(A), 0), 4
|
||
DRAW " D40 L15 U25 E15"
|
||
DRAW "G13 BR5 P4,4"
|
||
ELSE
|
||
PSET (69 + P(A), 0), 0
|
||
DRAW " D40 L15 U25 E15"
|
||
DRAW "G13 BR5 P0,0"
|
||
|
||
END IF
|
||
|
||
IF D4 = 1 THEN
|
||
PSET (0 + P(A), 42), 4
|
||
DRAW " D50 E15 U20 H15"
|
||
DRAW "F13 BL5 P4,4"
|
||
ELSE
|
||
PSET (0 + P(A), 42), 0
|
||
DRAW " D50 E15 U20 H15"
|
||
DRAW "F13 BL5 P0,0"
|
||
|
||
END IF
|
||
|
||
IF D5 = 1 THEN
|
||
PSET (3 + P(A), 42), 4
|
||
DRAW " R63 G15 L33 H15"
|
||
DRAW "BR5 BD5 BR23 P4,4"
|
||
ELSE
|
||
PSET (3 + P(A), 42), 0
|
||
DRAW " R63 G15 L33 H15"
|
||
DRAW "BR5 BD5 BR23 P0,0"
|
||
|
||
END IF
|
||
|
||
IF D6 = 1 THEN
|
||
PSET (69 + P(A), 42), 4
|
||
DRAW " D50 H15 U20 E15"
|
||
DRAW "G13 BR5 P4,4"
|
||
ELSE
|
||
PSET (69 + P(A), 42), 0
|
||
DRAW " D50 H15 U20 E15"
|
||
DRAW "G13 BR5 P0,0"
|
||
|
||
END IF
|
||
|
||
IF D7 = 1 THEN
|
||
PSET (3 + P(A), 93), 4
|
||
DRAW " E15 R33 F15 L62"
|
||
DRAW "BR23 BU5 P4,4"
|
||
ELSE
|
||
PSET (3 + P(A), 93), 0
|
||
DRAW " E15 R33 F15 L62"
|
||
DRAW "BR23 BU5 P0,0"
|
||
|
||
END IF
|
||
|
||
'********************************************************
|
||
'**************** EL GRAN " ELSE " *********************
|
||
'********************************************************
|
||
|
||
ELSE
|
||
|
||
IF D1 = 1 THEN
|
||
PSET (0 + P(A), 45), 4
|
||
DRAW "D20 R8 U13 H8"
|
||
DRAW "F7 BL3 P4,4"
|
||
ELSE
|
||
PSET (0 + P(A), 45), 0
|
||
DRAW "D20 R8 U13 H8"
|
||
DRAW "F7 BL3 P0,0"
|
||
|
||
END IF
|
||
|
||
IF D2 = 1 THEN
|
||
PSET (3 + P(A), 45), 4
|
||
DRAW "R32 G8 L17 H8"
|
||
DRAW "BR3 BD3 BR12 P4,4"
|
||
ELSE
|
||
PSET (3 + P(A), 45), 0
|
||
DRAW "R32 G8 L17 H8"
|
||
DRAW "BR3 BD3 BR12 P0,0"
|
||
|
||
END IF
|
||
|
||
IF D3 = 1 THEN
|
||
PSET (37 + P(A), 45), 4
|
||
DRAW "D20 L8 U13 E8"
|
||
DRAW "G8 BR3 P4,4"
|
||
ELSE
|
||
PSET (37 + P(A), 45), 0
|
||
DRAW "D20 L8 U13 E8"
|
||
DRAW "G8 BR3 P0,0"
|
||
|
||
END IF
|
||
|
||
IF D4 = 1 THEN
|
||
PSET (0 + P(A), 67), 4
|
||
DRAW "D25 E8 U10 H8"
|
||
DRAW "F8 BL3 P4,4"
|
||
ELSE
|
||
PSET (0 + P(A), 67), 0
|
||
DRAW "D25 E8 U10 H8"
|
||
DRAW "F8 BL3 P0,0"
|
||
|
||
END IF
|
||
|
||
IF D5 = 1 THEN
|
||
PSET (3 + P(A), 67), 4
|
||
DRAW "R32 G8 L17 H8"
|
||
DRAW "BR3 BD3 BR12 P4,4"
|
||
ELSE
|
||
PSET (3 + P(A), 67), 0
|
||
DRAW "R32 G8 L17 H8"
|
||
DRAW "BR3 BD3 BR12 P0,0"
|
||
|
||
END IF
|
||
|
||
IF D6 = 1 THEN
|
||
PSET (37 + P(A), 67), 4
|
||
DRAW "D25 H8 U10 E8"
|
||
DRAW "G8 BR3 P4,4"
|
||
ELSE
|
||
PSET (37 + P(A), 67), 0
|
||
DRAW "D25 H8 U10 E8"
|
||
DRAW "G8 BR3 P0,0"
|
||
|
||
END IF
|
||
|
||
IF D7 = 1 THEN
|
||
PSET (3 + P(A), 93), 4
|
||
DRAW "E8 R17 F8 L34"
|
||
DRAW "BR12 BU3 P4,4"
|
||
ELSE
|
||
PSET (3 + P(A), 93), 0
|
||
DRAW "E8 R17 F8 L34"
|
||
DRAW "BR12 BU3 P0,0"
|
||
|
||
END IF
|
||
|
||
END IF
|
||
|
||
|
||
|
||
END SUB
|
||
|