10 ' SAVE"BALL2.BAS",A '99BASIC ボール反射プログラム改良
20 DEFSNG A-Z
30 SIZX=80:SIZY=24
40 WIDTH SIZX,SIZY:SCREEN 3,5:CLS 3
50 DIM PT%(((101+1)*(101+1))\4)
60 '
70 FOR J=0 TO 50
80 CIRCLE(50,50),50-J,J+100:PAINT(50,50),J+100,J+100
90 PALETTE J+100,(J*5.1,J*5.1,J*5.1)
100 NEXT J
110 GET @3,(0,0)-STEP(101,101),PT%
120 '
130 N=24
140 DIM X(N-1),Y(N-1),SX(N-1),SY(N-1)
150 FOR J=0 TO N-1
160 X(J)=RND(SIZX*8):Y(J)=RND(SIZY*16)
170 SX(J)=RND(3)+1:SY(J)=RND(3)+1
180 NEXT J
190 '
200 INTERVAL ON,(1000\60):ON INTERVAL GOSUB 360
210 '
220 IF TSYNC=0 THEN 220
230 TSYNC=0
240 LINE(0,0)-(SIZX*8-1,SIZY*16-1),0,BF 'CLS 3
250 FOR J=0 TO N-1
260 X(J)=X(J)+SX(J):Y(J)=Y(J)+SY(J)
270 IF X(J)< 0 THEN X(J)= 0:SX(J)= ABS(SX(J))
280 IF X(J)> (SIZX*8)-100 THEN X(J)= (SIZX*8)-100:SX(J)=-ABS(SX(J))
290 IF Y(J)< 0 THEN Y(J)= 0:SY(J)= ABS(SY(J))
300 IF Y(J)>(SIZY*16)-100 THEN Y(J)=(SIZY*16)-100:SY(J)=-ABS(SY(J))
310 PUT@(X(J),Y(J)),PT%
320 NEXT J
330 SCREEN
340 GOTO 220
350 '
360 INTERVAL OFF:TSYNC=1:INTERVAL ON:RETURN