Subject: GSoft BASIC Program: Droplets From: fl332@cleveland.Freenet.Edu (John L. Graham) Date: Sat, Sep 12, 1998 7Ç31* p Message-id: <6tfaqu$t8m$1@pale-rider.INS.CWRU.Edu> This is fun little Gsoft BASIC program that randomly draws droplets that descend across your screen and splash on an imaginary surface. This example shows how easy it is to mix decimal and hexidecimal numbers as well as a combination of GSoft BASIC and Toolbox graphics commands. This has become my favorite screen saver at work :) ===================================================================== ! Dimension arrays & variables DIM RECT_OLD AS RECT DIM RECT_NEW AS RECT DIM PALETTE%(3, 15) !----------- ! Functions !----------- ! Returns the RGB value for a given color. DEF FN RGB(R%, G%, B%) = R% * $100 + G% * $10 + B% ! Define color palettes ! 0) Gray ! 1) Red ! 2) Green ! 3) Blue FOR ENTRY% = 1 TO 15 COLOR% = 16 - ENTRY% RGB% = FN RGB(COLOR%, COLOR%, COLOR%) PALETTE%(0, ENTRY%) = RGB% RGB% = FN RGB(COLOR%, 0, 0) PALETTE%(1, ENTRY%) = RGB% RGB% = FN RGB(0, COLOR%, 0) PALETTE%(2, ENTRY%) = RGB% RGB% = FN RGB(0, 0, COLOR%) PALETTE%(3, ENTRY%) = RGB% NEXT ! Start QuickDraw II HGR ! Draw rain drops until a key is pressed. KEY% = 0 DO UNTIL KEY% > 127 ! Select a color palette PALETTE_ID% = RND (1) * 4 IF PALETTE_ID% = 4 THEN PALETTE_ID% = 3 ! Load the color palette FOR ENTRY% = 1 TO 15 COLOR% = PALETTE%(PALETTE_ID%, ENTRY%) SETCOLORENTRY (0, ENTRY%, COLOR%) NEXT ! Set the splash location. X% = RND (1) * 320 Y% = RND (1) * 200 ! Draw the doplet. FOR DROP_Y% = 0 TO Y% HCOLOR= 15 HPLOT X%, DROP_Y% HCOLOR= 0 HPLOT X%, DROP_Y% - 3 NEXT ! Draw the splash. RECT_OLD.H1 = X% RECT_OLD.H2 = X% RECT_OLD.V1 = Y% RECT_OLD.V2 = Y% FOR RADIUS% = 1 TO 15 RADIUS_X% = RADIUS% * (1 + Y% / 100) RADIUS_Y% = RADIUS_X% / 4 RECT_NEW.H1 = X% - RADIUS_X% RECT_NEW.H2 = X% + RADIUS_X% RECT_NEW.V1 = Y% - RADIUS_Y% RECT_NEW.V2 = Y% + RADIUS_Y% COLOR% = RADIUS% SET640COLOR (COLOR%) FRAMEOVAL (RECT_NEW) SET640COLOR (0) FRAMEOVAL (RECT_OLD) RECT_OLD = RECT_NEW NEXT SET640COLOR (0) FRAMEOVAL (RECT_OLD) KEY% = PEEK ($00C000) LOOP END