' -- Heart Attack! -- ' ' By Chris Berry (blackvoid13@hotmail.com) ' thanks for trying my prog. hope you like it! :) ' - old page: http://www.geocities.com/Area51/Labyrinth/7661/basic.html ' - new page: http://www.geocities.com/SiliconValley/Garage/6339/ ' DEFINT A-Z DECLARE SUB fadescreen (rd%, gn%, be%) DECLARE SUB pixelRelocate () DECLARE SUB pixelInitializeIn () DECLARE SUB pixelInitializeOut () CONST MAX = 116 CONST SPEED = 2000 TYPE pixelType x1 AS SINGLE y1 AS SINGLE x2 AS SINGLE y2 AS SINGLE ys AS SINGLE c AS INTEGER END TYPE DIM SHARED pixel(1 TO 116) AS pixelType RANDOMIZE TIMER SCREEN 13 DO pixelInitializeIn pixelRelocate pixelInitializeOut pixelRelocate fadescreen 0, 0, 0 LOOP ' 1 2 3 4 5 6 7 8 9 10 11 12 13 14 DATA 0, 0, 0, 4, 4, 0, 0, 0, 0, 4, 4, 0, 0, 0 DATA 0, 0, 4,12,12, 4, 0, 0, 4,12,12, 4, 0, 0 DATA 0, 4,12,41,40,40, 4, 4,41,12,12,12, 4, 0 DATA 4,12,12,41,40,40,40,40,40,41,12,12,12, 4 DATA 4,12,12,41,40,40,40,40,40,40,41,12,12, 4 DATA 4,12,12,41,40,40,40,40,40,40,41,12,12, 4 DATA 0, 4,12,41,40,40,40,40,40,40,41,12, 4, 0 DATA 0, 4,12,12,41,40,40,40,40,40,41,12, 4, 0 DATA 0, 0, 4,12,12,41,40,40,40,40,12, 4, 0, 0 DATA 0, 0, 0, 4,12,12,41,40,40,12, 4, 0, 0, 0 DATA 0, 0, 0, 0, 4, 4,41,40, 4, 4, 0, 0, 0, 0 DATA 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0 SUB fadescreen (rd, gn, be) FOR ib = 0 TO 80 FOR ia = 0 TO 255 OUT &H3C7, ia 'read from palette value i red = INP(&H3C9) 'read current red value green = INP(&H3C9) 'read current green value blue = INP(&H3C9) 'read current blue value IF red < rd% THEN red = red + 1 'fade red IF red > rd% THEN red = red - 1 IF green < gn% THEN green = green + 1 'fade green IF green > gn% THEN green = green - 1 IF blue < be% THEN blue = blue + 1 'fade blue IF blue > be% THEN blue = blue - 1 OUT &H3C8, ia 'c-color to change OUT &H3C9, red 'r-red OUT &H3C9, green 'g-green OUT &H3C9, blue 'b-blue FOR zz = 1 TO 100: NEXT zz NEXT ia NEXT ib CLS END SUB SUB pixelInitializeIn DIM zz AS DOUBLE xx = INT(RND * 50) + 125 yy = INT(RND * 50) + 75 FOR y = (1 + yy) TO (12 + yy) FOR x = (1 + xx) TO (14 + xx) READ clr: PSET (x, y), clr IF POINT(x, y) <> 0 THEN i = i + 1 pixel(i).c = clr pixel(i).x1 = x pixel(i).y1 = y pixel(i).x2 = INT(RND * 318) + 1 pixel(i).y2 = INT(RND * 198) + 1 pixel(i).ys = ((pixel(i).y2 - pixel(i).y1) + .0123) / ((pixel(i).x2 - pixel(i).x1) + .0123) END IF NEXT x NEXT y RESTORE: CLS : PALETTE FOR i = 1 TO MAX PSET (pixel(i).x2, pixel(i).y2), pixel(i).c FOR zz = 1 TO 1000: NEXT zz NEXT i END SUB SUB pixelInitializeOut FOR i = 1 TO MAX pixel(i).x1 = INT(RND * 320) pixel(i).y1 = INT(RND * 200) NEXT i END SUB SUB pixelRelocate DIM zz AS DOUBLE DO change = 0 FOR i = 1 TO MAX PSET (pixel(i).x2, pixel(i).y2), 0 IF (pixel(i).x2 - pixel(i).x1) < 0 THEN pixel(i).x2 = pixel(i).x2 + 1 pixel(i).y2 = pixel(i).y2 + pixel(i).ys change = 1 ELSEIF (pixel(i).x2 - pixel(i).x1) > 0 THEN pixel(i).x2 = pixel(i).x2 - 1 pixel(i).y2 = pixel(i).y2 - pixel(i).ys change = 1 ELSE IF pixel(i).y2 > pixel(i).y1 THEN pixel(i).y2 = pixel(i).y2 - .5 ELSEIF pixel(i).y2 < pixel(i).y1 THEN pixel(i).y2 = pixel(i).y2 + .5 END IF END IF PSET (pixel(i).x2, pixel(i).y2), pixel(i).c NEXT i FOR zz = 1 TO SPEED: NEXT zz keypress$ = INKEY$ LOOP UNTIL change = 0 OR keypress$ <> "" IF keypress$ <> "" THEN END FOR zz = 1 TO 100000: NEXT zz END SUB