RosettaCodeData/Task/Draw-a-clock/Atari-BASIC/draw-a-clock.basic

46 lines
1.2 KiB
Plaintext

10 GRAPHICS 7:DEG
20 PRINT "Please enter current time (HH,MM):"
30 INPUT HH,MM:GRAPHICS 7+16
40 FPS=60:REM SYSTEM CAN BE EITHER NTSC OR PAL
50 IF PEEK(53268)=1 THEN FPS=50
60 MINUTE=60*FPS
70 XC=80:YC=40:R=35:RF=38
80 GOSUB 800
90 SETCOLOR 0,3,10:SETCOLOR 4,8,2:SETCOLOR 2,13,14
100 POKE 19,0:POKE 20,0:SS=0:REM RESET FOR NEXT MINUTE
200 COLOR 0:IF SS>0 THEN 230
210 PLOT XC,YC:DRAWTO HX,HY
220 PLOT XC,YC:DRAWTO MX,MY
230 PLOT XC,YC:DRAWTO SX,SY
240 GOSUB 500
250 COLOR 2
260 PLOT XC,YC:DRAWTO HX,HY
270 PLOT XC,YC:DRAWTO MX,MY
280 COLOR 1
290 PLOT XC,YC:DRAWTO SX,SY
300 JIFFIES=256*PEEK(19)+PEEK(20)
310 NSEC=INT(JIFFIES/FPS):IF NSEC=60 THEN GOSUB 400:GOTO 100
320 IF NSEC>SS THEN SS=NSEC:GOTO 2OO
330 GOTO 300
400 REM INCREASE MINUTE AND HOUR
410 MM=MM+1
420 IF MM=60 THEN MM=0:HH=HH+1
430 IF HH=24 THEN HH=0
440 REM DISABLE SCREEN SAVER/ATTRACT MODE
450 POKE 77,0
460 RETURN
500 IF SS>0 THEN 550:REM CALCULATE X AND Y POSITIONS OF HANDS
510 HX=XC+R*SIN(30*HH+MM/2)*0.5
520 HY=YC-R*COS(30*HH+MM/2)*0.5
530 MX=XC+R*SIN(6*MM)
540 MY=YC-R*COS(6*MM)
550 SX=XC+R*SIN(6*SS)
560 SY=YC-R*COS(6*SS)
570 RETURN
800 REM DRAW CLOCK FACE
810 COLOR 3
820 FOR I=30 TO 360 STEP 30
830 PLOT XC+RF*SIN(I),YC-RF*COS(I)
840 NEXT I
850 RETURN