REM 944BASIC 's n o w' REM SETPAGE 0: COLORBG 0,0,0: CLS FASTTICK 3 DN=1 DIM S(2)='4','3','2' MAX=30 XMIN=20: YMIN=100 XMAX=218: YMAX=188 SETPAGE 0 COLORFG 0,0,0: BOXFILL XMIN-2,YMIN-2,XMAX+2,YMAX+2 SETPAGE 2 COLORBG 255,255,255:CLS COLORFG 8,8,8 BOXFILL XMIN-2,YMIN-2,XMAX+2,YMAX+2 XX=2:YY=2 GOSUB *DRAWSNOW0 DIM X(MAX) DIM Y(MAX) FOR I=1 TO MAX X(I)=RNDRG(XMIN+1,XMAX) Y(I)=RNDRG(YMIN+1,YMAX-20) X=(I+2)%3 SPRITE I,I,1, X(I),Y(I), 1+X*3,1,3,3 NEXT I SPRITE 254,254,1, XMIN-2,YMIN, XMIN-2,YMIN, XMAX,YMAX REM REFRESH XMIN,YMIN,XMIN,YMIN,XMAX+2-XMIN,YMAX+2-YMIN RANDOMIZE SYSCNT SPECIAL=0 *LOOP SYNC FOR I=1 TO MAX A=RNDRG(-1,1) B=S((I+2)%3) IF (I+2)%3=2 THEN BB=RNDRG(0,1) ELSE BB=RNDRG(-1,1) Y(I)=Y(I)+DN*B+BB X(I)=X(I)+A IF X(I)>=XMAX THEN X(I)=X(I)-6 IF X(I)<=XMIN THEN X(I)=X(I)+3 SPRITE I,I,1, X(I),Y(I) YP=0 FOR J=3 TO 2+S((I+2)%3) P=POINT(X(I),Y(I)+J) IF P=50618 THEN YP=J:J=3+S((I+2)%3) NEXT J IFBLK YP<>0 Y(I)=Y(I)+YP-3 GOSUB *DRAWTEXTURE IF Y(I)=YMAX-2 Y(I)=YMAX-2 IF POINT(X(I),Y(I)+1)<>50618 THEN GOSUB *DRAWTEXTURE X(I)=RNDRG(XMIN+1,XMAX) Y(I)=RNDRG(YMIN+1,YMIN+20) ENDIF NEXT I DN=DN+PADY*0.2 IF SPECIAL=1 THEN GOSUB *SP_EVENT REFRESH XMIN,YMIN,XMIN,YMIN,XMAX+2-XMIN,YMAX+2-YMIN GOTO *LOOP *DRAWTEXTURE SETPAGE 2 XX=X(I):YY=Y(I)+1 C=(I+2)%3 SPRITE I,I,0 GOSUB *DRAWSNOW SPRITE 254,254,1, 0,4, 0,4, 240,316 SETPAGE 0 RETURN *DRAWSNOW REM ̕` REM C=C-1 R=192: G=180: B=211 COLORFG R,G,B YY=YY+1 PSET XX,YY LINE XX-1,YY+1,XX+1,YY+1 RETURN *DRAWSNOW0 REM ̕` R=192: G=176: B=208 FOR I=0 TO 2 X=XX+I*3:Y=YY COLORFG R-(96+I*16),G-(96+I*16),B-(96+I*16) BOX X-1,Y-1,X+1,Y+1 COLORFG R-I*48,G-I*48,B-I*48 BOXCIRCLE X-1,Y-1,X+1,Y+1 COLORFG R-I*32,G-I*32,B-I*32 PSET X,Y NEXT I SETPAGE 0 RETURN *SP_EVENT SETPAGE 0 FONT 144+1: COLORFG 255,32,32 GCURSOR XMIN+2,YMIN+2: PRINT 'O' FOR CL=0 TO 255 STEP 32 COLORFG CL,CL,CL PAINT XMIN+1,YMIN+1 NEXT CL COLORFG 255,255,255 PAINT XMIN+1,YMAX-3 PAINT XMAX-3,YMAX-3 CLS COLORFG 0,0,0 BOXFILL XMIN-2,YMIN-2,XMAX+2,YMAX+2 SETPAGE 2 COLORBG 0,0,0:CLS XX=2:YY=2 GOSUB *DRAWSNOW0 SETPAGE 2 COLORFG 8,8,8 BOXFILL XMIN-2,YMIN-2,XMAX+2,YMAX+2 COLORBG 255,255,255 SETPAGE 0 FOR TMP=1 TO MAX X(TMP)=RNDRG(XMIN+1,XMAX) Y(TMP)=RNDRG(YMIN+1,YMAX-20) NEXT TMP SPECIAL=0 RETURN