10 'Uhrzeit als Balkendiagramm 20 'Sprach:GW-BASIC/QBASIC/QuickBASIC 30 'Author: Raphael H. Becker 40 : 50 CLS : KEY OFF 60 X.MAX = 319: Y.MAX = 199 70 DIM PUFFER%(1000) 80 : 90 SCREEN 1 'Grafik, 320*200 Pkt 100 : 110 'Rahmen fr Anzeige 120 : 130 X.ST = 30'X-Position 140 Y.ST = 0 'Y-Position 150 BREITE = 50 160 FOR I = 1 TO 3 170 LINE (X.ST, Y.ST)-(X.ST + BREITE, Y.MAX), 1, B 180 X.ST = X.ST + BREITE 190 NEXT I 200 LOCATE 22, POS(0) 210 LOCATE , 26: PRINT "Der": PRINT 220 LOCATE , 26: PRINT "Zeit-Bargraph"; 230 LINE (190, 192)-(319, 166), 1, B 240 GET (190, 192)-(319, 166), PUFFER% 250 Z% = 100 260 FOR Y = 166 TO 20 STEP -1 270 LINE (190, Y + 27)-(319, Y), 0, BF 280 PUT (190, Y), PUFFER%, PSET 290 FOR V% = 1 TO Z%: NEXT V%: Z% = Z% - .5 300 NEXT Y 310 : 320 'Skala fr Anzeige Stunden 330 : 340 X.ST = 30'X-Position 350 Y.ST = 0 'Y-Position 360 STD.ABST = INT((Y.MAX - Y.ST) / 25) + .5'Skala Anzeige Stunden 370 FOR I = Y.MAX - STD.ABST TO Y.ST + 15 STEP -STD.ABST 380 LINE (X.ST, I)-(X.ST + 10, I), 1 390 NEXT I 400 : 410 'Skala fr Anzeige Minuten/Sekunden 420 : 430 X.ST = X.ST + BREITE 440 SM.ABST = INT((Y.MAX - Y.ST) / 60)'Skala Anzeige Minuten/Sekunden 450 FOR I = Y.MAX - SM.ABST TO Y.ST + 15 STEP -SM.ABST 460 LINE (X.ST, I)-(X.ST + 10, I), 1 470 LINE (X.ST + BREITE, I)-(X.ST + BREITE + 10, I), 1 480 NEXT I 490 : 500 'Uhrzeit anzeigen 510 : 520 STD = VAL(LEFT$(TIME$, 2)): PBMIN = VAL(MID$(TIME$, 4, 2)): SEK = VAL(RIGHT$(TIME$, 2)) 530 GOSUB 890: GOSUB 800: GOSUB 730'erste Anzeige nach Aufruf 540 STD = VAL(LEFT$(TIME$, 2)) 550 A.STD = STD 560 WHILE A.STD = STD 570 PBMIN = VAL(MID$(TIME$, 4, 2)) 580 A.MIN = PBMIN 590 WHILE A.MIN = PBMIN 600 SEK = VAL(RIGHT$(TIME$, 2)): PBMIN = VAL(MID$(TIME$, 4, 2)) 610 GOSUB 730 'Sekunden anzeigen 620 WEND 630 PBMIN = VAL(MID$(TIME$, 4, 2)): STD = VAL(LEFT$(TIME$, 2)) 640 BEEP: GOSUB 800'Minuten anzeigen 650 WEND 660 STD = VAL(LEFT$(TIME$, 2)) 670 GOSUB 890 'Stunden anzeigen 680 GOSUB 800 'Minuten anzeigen 690 GOTO 540 700 : 710 'Sekunden anzeigen 720 : 730 X.ST = (BREITE * 2) + 30: SEK.START = (SEK) * SM.ABST 740 LINE (X.ST + 12, Y.MAX - 1)-(X.ST + 42, Y.MAX - SEK.START - SM.ABST), 2, BF 750 LOCATE 2, 20: PRINT RIGHT$(TIME$, 2); 760 IF INKEY$ = "" THEN RETURN ELSE SCREEN 0: WIDTH 80: END 770 : 780 'Minuten anzeigen 790 : 800 X.ST = (BREITE * 2) + 30 810 LINE (X.ST + 12, Y.MAX - 1)-(X.ST + 42, Y.ST + 16), 0, BF'Sekundenanzeige l”schen 820 X.ST = BREITE + 30: MIN.START = (PBMIN) * SM.ABST 830 LINE (X.ST + 12, Y.MAX - 1)-(X.ST + 42, Y.MAX - MIN.START - SM.ABST), 2, BF 840 LOCATE 2, 14: PRINT MID$(TIME$, 4, 2); 850 IF INKEY$ = "" THEN RETURN ELSE SCREEN 0: WIDTH 80: END 860 : 870 ' Stunden anzeigen 880 : 890 X.ST = BREITE + 30 900 LINE (X.ST + 12, Y.MAX - 1)-(X.ST + 42, Y.ST + 16), 0, BF'Minutenanzeige l”schen 910 X.ST = 30: STD.START = (STD) * STD.ABST 920 LINE (X.ST + 12, Y.MAX - 1)-(X.ST + 42, Y.ST + 16), 0, BF'Stundenanzeige l”schen 930 LINE (X.ST + 12, Y.MAX - 1)-(X.ST + 42, Y.MAX - STD.START - STD.ABST), 2, BF 940 LOCATE 2, 7: PRINT LEFT$(TIME$, 2); 950 IF INKEY$ = "" THEN RETURN ELSE SCREEN 0: WIDTH 80: END