EAZ by EatMe
download all EAZ versions in a .zip with help
required to run is DosBox (Ctrl+F11/F12 to adjust speed)
- test: eaz4d.exe (multiple flowers) / 41 K
- new: eaz4c.exe (keyboard control) / 41 K
- v2: eaz2.exe (faster visuals) / 43 K
- v1: eaz.exe (slow visuals) / 52 K
download all EAZ versions in a .zip with help
required to run is DosBox (Ctrl+F11/F12 to adjust speed)
- in-browser emulation on https://archive.org/details/eazflower and
here: EAZ4D in browser orEAZ4C in browser
Set focus and control with keys:
ESC (quit)
q/as (divisions)
d/fgh (directions)
z + xcvbnmwertyuiop (color)
EAZ4D: numeric keys (dimensions)
openEAZ4D in browser orEAZ4C in browser
screenshot of EAZ2:
' THIS IS THE QUICKBASIC 4.5 SOURCE CODE OF FREEWARE UNLIMITED FLOWER FRACTAL PIXEL PAINTING
' EAZ.EXE / EAZ2.EXE (EAZ) BY EatMe - www.eatme.pro - SOURCE RELEASED 2013 DECEMBER 19 - REPUBLISHED 2019 JULY 11
' THIS CODE IS FREE TO RE-USE. DISPLAY OF A LINK:
' "(parts of) source code of EAZ by EatMe - www.eatme.pro"
' IN YOUR SOFTWARE/PRODUCTS CREDITS SECTION WOULD BE APPRECIATED
' EAZ.EXE / EAZ2.EXE (EAZ) BY EatMe - www.eatme.pro - SOURCE RELEASED 2013 DECEMBER 19 - REPUBLISHED 2019 JULY 11
' THIS CODE IS FREE TO RE-USE. DISPLAY OF A LINK:
' "(parts of) source code of EAZ by EatMe - www.eatme.pro"
' IN YOUR SOFTWARE/PRODUCTS CREDITS SECTION WOULD BE APPRECIATED
DIM iSlide
IF INSTR(COMMAND$, "?") > 0 THEN
SCREEN 0, 0, 0, 0
COLOR 7, 0
CLS
COLOR 15, 9
LOCATE 1, 1
PRINT " SuperScreenSaver! by EatMe 2001-2003 "
COLOR 15, 0
LOCATE 3, 1
PRINT " Command line parameters:"
PRINT
PRINT " -i skip the intro"
PRINT " -s no color sliding"
PRINT
PRINT " This screen saver is FREEWARE and may be distributed."
PRINT " You may use this screen saver for public performances."
PRINT
PRINT "Smash the keyboard..."
DO WHILE INKEY$ <> "": LOOP: SLEEP: DO WHILE INKEY$ <> "": LOOP
COLOR 7, 0
END
END IF
IF INSTR(LCASE$(COMMAND$), "-s") = 0 THEN iSlide = 1 ELSE iSlide = 0
IF iSlide = 1 THEN
SCREEN 12
ELSE
SCREEN 9, , 1, 0
END IF
WINDOW SCREEN (-410, -410)-(410, 410)
IF INSTR(LCASE$(COMMAND$), "-i") = 0 THEN GOSUB DrawEaz
TYPE udtPixel
NrOfPoints AS INTEGER
Radius AS INTEGER
TurnFactor AS DOUBLE
END TYPE
DIM PaletteIndex(2, 15) AS INTEGER
DIM PaletteDirection(2, 15) AS INTEGER
DIM Pixels(380) AS udtPixel
DIM iCCChance AS INTEGER 'ColorChangeChance
DIM ColorChance AS INTEGER
DIM i AS DOUBLE
DIM j AS INTEGER
DIM k AS INTEGER
DIM l&
DIM PixelDirection AS INTEGER
DIM RadiusDirection AS INTEGER
DIM MaxPixels AS LONG
DIM TurnStep AS SINGLE
DIM TwoPI AS DOUBLE
DIM timewait!
DIM Quit$
DIM CurrentColor AS INTEGER
DIM DrawColor AS INTEGER
DIM DrawTurn AS DOUBLE
DIM DrawRadius AS INTEGER
TwoPI = 3.141592653589793# * 2
MaxPixels = UBOUND(Pixels)
TurnStep = .1
CurrentColor = 7
FOR j = 0 TO MaxPixels - 1
Pixels(j).NrOfPoints = 4
NEXT
IF iSlide = 1 THEN GOSUB SetPalette
DO
timewait! = TIMER
' Move array of points
FOR j = 1 TO MaxPixels
Pixels(MaxPixels + 1 - j) = Pixels(MaxPixels - j)
NEXT
' Calculate next point
RANDOMIZE TIMER
IF RadiusDirection = 0 THEN
Pixels(0).Radius = Pixels(1).Radius + 1
ELSE
Pixels(0).Radius = Pixels(1).Radius - 1
END IF
IF INT(RND * 80) = 0 THEN
Pixels(0).NrOfPoints = 2 * (INT(RND * 7) + 2)
ELSE
Pixels(0).NrOfPoints = Pixels(1).NrOfPoints
END IF
' Bounds checks
IF Pixels(0).Radius > 300 THEN RadiusDirection = 1
IF Pixels(0).Radius < 1 THEN RadiusDirection = 0: Pixels(0).Radius = 1
' Random changes
IF INT(RND * 100) = 1 THEN
IF PixelDirection = 0 THEN PixelDirection = 1 ELSE PixelDirection = 0
END IF
iCCChance = 50
IF INT(RND * 133) = 0 THEN
TurnStep = .1 * (10 / ((INT(RND * 10) + 1)) - 1)
iCCChance = 5 ' Color Change Chance becomes quite big
END IF
IF INT(RND * iCCChance) = 0 THEN
j = INT(RND * 4)
IF j = 0 THEN ColorChance = 0
IF j = 1 THEN ColorChance = 133
IF j = 2 THEN ColorChance = 166
IF j = 3 THEN ColorChance = 199
IF INT(RND * ColorChance) = 0 THEN CurrentColor = INT(RND * 15) + 1
END IF
IF iSlide = 1 THEN GOSUB SlidePalette
' next turn factor
IF PixelDirection = 0 THEN
Pixels(0).TurnFactor = Pixels(1).TurnFactor + TurnStep
ELSE
Pixels(0).TurnFactor = Pixels(1).TurnFactor - TurnStep
END IF
IF Pixels(0).TurnFactor > TwoPI THEN Pixels(0).TurnFactor = Pixels(0).TurnFactor - TwoPI
IF Pixels(0).TurnFactor < 0 THEN Pixels(0).TurnFactor = Pixels(0).TurnFactor + TwoPI
' Paint points
NrOfPoints = Pixels(0).NrOfPoints
DrawTurn = Pixels(0).TurnFactor
DrawRadius = Pixels(0).Radius
DrawColor = CurrentColor
GOSUB PaintPixels
NrOfPoints = Pixels(MaxPixels).NrOfPoints
DrawTurn = Pixels(MaxPixels).TurnFactor
DrawRadius = Pixels(MaxPixels).Radius
DrawColor = 0
GOSUB PaintPixels
DO WHILE TIMER - .05 < timewait! AND TIMER > 1
IF INKEY$ <> "" THEN Quit$ = "x": EXIT DO
LOOP
LOOP UNTIL Quit$ <> ""
' Exit
SCREEN 0, 0, 0, 0
COLOR 7, 0
CLS
COLOR 15, 9
'PRINT SPACE$(80)
LOCATE 1, 1
PRINT " SuperScreenSaver! by EatMe 2001-2003 "
COLOR 15, 0
LOCATE 3, 1
END
PaintPixels:
FOR i = 0 TO TwoPI STEP (TwoPI / NrOfPoints)
DrawTurn = DrawTurn + i
IF DrawTurn > TwoPI THEN DrawTurn = DrawTurn - TwoPI
WINDOW SCREEN (-410, -410)-(410, 410)
CIRCLE (0, 0), DrawRadius, DrawColor, DrawTurn, DrawTurn
NEXT
IF iSlide = 0 THEN PCOPY 1, 0
RETURN
SetPalette:
FOR k = 1 TO 15
FOR j = 0 TO 2
PaletteDirection(j, k) = 0
NEXT
NEXT
'PaletteIndex%(0, 0) = 0 ' Black (Default background color)
'PaletteIndex%(1, 0) = 0
'PaletteIndex%(2, 0) = 0
PaletteIndex%(0, 1) = 46 ' Dark Blue
PaletteIndex%(1, 1) = 4
PaletteIndex%(2, 1) = 4
PaletteIndex%(0, 2) = 2 ' Dark green
PaletteIndex%(1, 2) = 40
PaletteIndex%(2, 2) = 2
PaletteIndex%(0, 3) = 30 ' Dark DarkBlue (EatMe)
PaletteIndex%(1, 3) = 20
PaletteIndex%(2, 3) = 1
PaletteIndex%(0, 4) = 2 ' Dark Red
PaletteIndex%(1, 4) = 2
PaletteIndex%(2, 4) = 39
PaletteIndex%(0, 5) = 42 ' Sorta Purple
PaletteIndex%(1, 5) = 2
PaletteIndex%(2, 5) = 37
PaletteIndex%(0, 6) = 2 ' Orange
PaletteIndex%(1, 6) = 23
PaletteIndex%(2, 6) = 63
PaletteIndex%(0, 7) = 39 ' Light Gray
PaletteIndex%(1, 7) = 39
PaletteIndex%(2, 7) = 39
PaletteIndex%(0, 8) = 20 ' Dark grey
PaletteIndex%(1, 8) = 20
PaletteIndex%(2, 8) = 20
PaletteIndex%(0, 9) = 63 ' Light Blue
PaletteIndex%(1, 9) = 22
PaletteIndex%(2, 9) = 22
PaletteIndex%(0, 10) = 5 ' Light green
PaletteIndex%(1, 10) = 60
PaletteIndex%(2, 10) = 5
PaletteIndex%(0, 11) = 57 ' Light DarkBlue / Turqoise
PaletteIndex%(1, 11) = 57
PaletteIndex%(2, 11) = 2
PaletteIndex%(0, 12) = 2 ' Light Red
PaletteIndex%(1, 12) = 2
PaletteIndex%(2, 12) = 63
PaletteIndex%(0, 13) = 58 ' Light purple/pink
PaletteIndex%(1, 13) = 5
PaletteIndex%(2, 13) = 58
PaletteIndex%(0, 14) = 9 ' Yellow
PaletteIndex%(1, 14) = 61
PaletteIndex%(2, 14) = 62
PaletteIndex%(0, 15) = 63 ' Brigth white
PaletteIndex%(1, 15) = 63
PaletteIndex%(2, 15) = 63
RETURN
SlidePalette:
' Slide color palette
FOR k = 1 TO 15
FOR j = 0 TO 2
IF PaletteIndex(j, k) > 58 THEN PaletteDirection(j, k) = 1
IF PaletteIndex(j, k) < 5 THEN PaletteDirection(j, k) = 0
IF PaletteDirection(j, k) = 0 THEN
PaletteIndex(j, k) = PaletteIndex(j, k) + (RND * 2)
ELSEIF PaletteDirection(j, k) = 1 THEN
PaletteIndex(j, k) = PaletteIndex(j, k) - (RND * 2)
END IF
IF INKEY$ <> "" THEN Quit$ = "x": RETURN
NEXT
l& = PaletteIndex(0, k)
l& = l& + (256 * PaletteIndex(1, k))
l& = l& + (65536 * PaletteIndex(2, k))
PALETTE k, l&
NEXT
RETURN
DrawEaz:
COLOR 9
IF iSlide = 1 THEN LOCATE 8, 9 ELSE LOCATE 9, 9
PRINT "2001 - 2003"
LOCATE 12, 9
COLOR 15
PRINT "This screen saver is FREEWARE and may be distributed."
LOCATE 13, 9
PRINT "You may use this screen saver for public performances."
DRAW "bm84,95 c9 u3 r1 u2 r1 u1 e2 r1 u1 r2 u1 r3 u1"
DRAW "r3 d1 r2 d1 r1 f2 d1 r1 d2 r1 d3 r1"
DRAW "l20"
DRAW "d4 r1 d2 r1 d1 f1 d1 r1 d1 r3 d1 r1 d1 r1"
DRAW "r3 u1 r2 u1 r1 e5 "
DRAW "f7 bh2 l4 bu18 r20 g14 bd6 r14 bl8 h8 l4 bd8 bl3r6"
IF iSlide = 0 THEN PCOPY 1, 0
timewait! = TIMER
DO WHILE TIMER - 4 < timewait! AND TIMER > 1
IF INKEY$ <> "" THEN EXIT DO
LOOP
CLS
DO UNTIL INKEY$ = ""
LOOP
RETURN
IF INSTR(COMMAND$, "?") > 0 THEN
SCREEN 0, 0, 0, 0
COLOR 7, 0
CLS
COLOR 15, 9
LOCATE 1, 1
PRINT " SuperScreenSaver! by EatMe 2001-2003 "
COLOR 15, 0
LOCATE 3, 1
PRINT " Command line parameters:"
PRINT " -i skip the intro"
PRINT " -s no color sliding"
PRINT " This screen saver is FREEWARE and may be distributed."
PRINT " You may use this screen saver for public performances."
PRINT "Smash the keyboard..."
DO WHILE INKEY$ <> "": LOOP: SLEEP: DO WHILE INKEY$ <> "": LOOP
COLOR 7, 0
END
END IF
IF INSTR(LCASE$(COMMAND$), "-s") = 0 THEN iSlide = 1 ELSE iSlide = 0
IF iSlide = 1 THEN
SCREEN 12
ELSE
SCREEN 9, , 1, 0
END IF
WINDOW SCREEN (-410, -410)-(410, 410)
IF INSTR(LCASE$(COMMAND$), "-i") = 0 THEN GOSUB DrawEaz
TYPE udtPixel
NrOfPoints AS INTEGER
Radius AS INTEGER
TurnFactor AS DOUBLE
END TYPE
DIM PaletteIndex(2, 15) AS INTEGER
DIM PaletteDirection(2, 15) AS INTEGER
DIM Pixels(380) AS udtPixel
DIM iCCChance AS INTEGER 'ColorChangeChance
DIM ColorChance AS INTEGER
DIM i AS DOUBLE
DIM j AS INTEGER
DIM k AS INTEGER
DIM l&
DIM PixelDirection AS INTEGER
DIM RadiusDirection AS INTEGER
DIM MaxPixels AS LONG
DIM TurnStep AS SINGLE
DIM TwoPI AS DOUBLE
DIM timewait!
DIM Quit$
DIM CurrentColor AS INTEGER
DIM DrawColor AS INTEGER
DIM DrawTurn AS DOUBLE
DIM DrawRadius AS INTEGER
TwoPI = 3.141592653589793# * 2
MaxPixels = UBOUND(Pixels)
TurnStep = .1
CurrentColor = 7
FOR j = 0 TO MaxPixels - 1
Pixels(j).NrOfPoints = 4
NEXT
IF iSlide = 1 THEN GOSUB SetPalette
DO
timewait! = TIMER
' Move array of points
FOR j = 1 TO MaxPixels
Pixels(MaxPixels + 1 - j) = Pixels(MaxPixels - j)
NEXT
' Calculate next point
RANDOMIZE TIMER
IF RadiusDirection = 0 THEN
Pixels(0).Radius = Pixels(1).Radius + 1
ELSE
Pixels(0).Radius = Pixels(1).Radius - 1
END IF
IF INT(RND * 80) = 0 THEN
Pixels(0).NrOfPoints = 2 * (INT(RND * 7) + 2)
ELSE
Pixels(0).NrOfPoints = Pixels(1).NrOfPoints
END IF
' Bounds checks
IF Pixels(0).Radius > 300 THEN RadiusDirection = 1
IF Pixels(0).Radius < 1 THEN RadiusDirection = 0: Pixels(0).Radius = 1
' Random changes
IF INT(RND * 100) = 1 THEN
IF PixelDirection = 0 THEN PixelDirection = 1 ELSE PixelDirection = 0
END IF
iCCChance = 50
IF INT(RND * 133) = 0 THEN
TurnStep = .1 * (10 / ((INT(RND * 10) + 1)) - 1)
iCCChance = 5 ' Color Change Chance becomes quite big
END IF
IF INT(RND * iCCChance) = 0 THEN
j = INT(RND * 4)
IF j = 0 THEN ColorChance = 0
IF j = 1 THEN ColorChance = 133
IF j = 2 THEN ColorChance = 166
IF j = 3 THEN ColorChance = 199
IF INT(RND * ColorChance) = 0 THEN CurrentColor = INT(RND * 15) + 1
END IF
IF iSlide = 1 THEN GOSUB SlidePalette
' next turn factor
IF PixelDirection = 0 THEN
Pixels(0).TurnFactor = Pixels(1).TurnFactor + TurnStep
ELSE
Pixels(0).TurnFactor = Pixels(1).TurnFactor - TurnStep
END IF
IF Pixels(0).TurnFactor > TwoPI THEN Pixels(0).TurnFactor = Pixels(0).TurnFactor - TwoPI
IF Pixels(0).TurnFactor < 0 THEN Pixels(0).TurnFactor = Pixels(0).TurnFactor + TwoPI
' Paint points
NrOfPoints = Pixels(0).NrOfPoints
DrawTurn = Pixels(0).TurnFactor
DrawRadius = Pixels(0).Radius
DrawColor = CurrentColor
GOSUB PaintPixels
NrOfPoints = Pixels(MaxPixels).NrOfPoints
DrawTurn = Pixels(MaxPixels).TurnFactor
DrawRadius = Pixels(MaxPixels).Radius
DrawColor = 0
GOSUB PaintPixels
DO WHILE TIMER - .05 < timewait! AND TIMER > 1
IF INKEY$ <> "" THEN Quit$ = "x": EXIT DO
LOOP
LOOP UNTIL Quit$ <> ""
' Exit
SCREEN 0, 0, 0, 0
COLOR 7, 0
CLS
COLOR 15, 9
'PRINT SPACE$(80)
LOCATE 1, 1
PRINT " SuperScreenSaver! by EatMe 2001-2003 "
COLOR 15, 0
LOCATE 3, 1
END
PaintPixels:
FOR i = 0 TO TwoPI STEP (TwoPI / NrOfPoints)
DrawTurn = DrawTurn + i
IF DrawTurn > TwoPI THEN DrawTurn = DrawTurn - TwoPI
WINDOW SCREEN (-410, -410)-(410, 410)
CIRCLE (0, 0), DrawRadius, DrawColor, DrawTurn, DrawTurn
NEXT
IF iSlide = 0 THEN PCOPY 1, 0
RETURN
SetPalette:
FOR k = 1 TO 15
FOR j = 0 TO 2
PaletteDirection(j, k) = 0
NEXT
NEXT
'PaletteIndex%(0, 0) = 0 ' Black (Default background color)
'PaletteIndex%(1, 0) = 0
'PaletteIndex%(2, 0) = 0
PaletteIndex%(0, 1) = 46 ' Dark Blue
PaletteIndex%(1, 1) = 4
PaletteIndex%(2, 1) = 4
PaletteIndex%(0, 2) = 2 ' Dark green
PaletteIndex%(1, 2) = 40
PaletteIndex%(2, 2) = 2
PaletteIndex%(0, 3) = 30 ' Dark DarkBlue (EatMe)
PaletteIndex%(1, 3) = 20
PaletteIndex%(2, 3) = 1
PaletteIndex%(0, 4) = 2 ' Dark Red
PaletteIndex%(1, 4) = 2
PaletteIndex%(2, 4) = 39
PaletteIndex%(0, 5) = 42 ' Sorta Purple
PaletteIndex%(1, 5) = 2
PaletteIndex%(2, 5) = 37
PaletteIndex%(0, 6) = 2 ' Orange
PaletteIndex%(1, 6) = 23
PaletteIndex%(2, 6) = 63
PaletteIndex%(0, 7) = 39 ' Light Gray
PaletteIndex%(1, 7) = 39
PaletteIndex%(2, 7) = 39
PaletteIndex%(0, 8) = 20 ' Dark grey
PaletteIndex%(1, 8) = 20
PaletteIndex%(2, 8) = 20
PaletteIndex%(0, 9) = 63 ' Light Blue
PaletteIndex%(1, 9) = 22
PaletteIndex%(2, 9) = 22
PaletteIndex%(0, 10) = 5 ' Light green
PaletteIndex%(1, 10) = 60
PaletteIndex%(2, 10) = 5
PaletteIndex%(0, 11) = 57 ' Light DarkBlue / Turqoise
PaletteIndex%(1, 11) = 57
PaletteIndex%(2, 11) = 2
PaletteIndex%(0, 12) = 2 ' Light Red
PaletteIndex%(1, 12) = 2
PaletteIndex%(2, 12) = 63
PaletteIndex%(0, 13) = 58 ' Light purple/pink
PaletteIndex%(1, 13) = 5
PaletteIndex%(2, 13) = 58
PaletteIndex%(0, 14) = 9 ' Yellow
PaletteIndex%(1, 14) = 61
PaletteIndex%(2, 14) = 62
PaletteIndex%(0, 15) = 63 ' Brigth white
PaletteIndex%(1, 15) = 63
PaletteIndex%(2, 15) = 63
RETURN
SlidePalette:
' Slide color palette
FOR k = 1 TO 15
FOR j = 0 TO 2
IF PaletteIndex(j, k) > 58 THEN PaletteDirection(j, k) = 1
IF PaletteIndex(j, k) < 5 THEN PaletteDirection(j, k) = 0
IF PaletteDirection(j, k) = 0 THEN
PaletteIndex(j, k) = PaletteIndex(j, k) + (RND * 2)
ELSEIF PaletteDirection(j, k) = 1 THEN
PaletteIndex(j, k) = PaletteIndex(j, k) - (RND * 2)
END IF
IF INKEY$ <> "" THEN Quit$ = "x": RETURN
NEXT
l& = PaletteIndex(0, k)
l& = l& + (256 * PaletteIndex(1, k))
l& = l& + (65536 * PaletteIndex(2, k))
PALETTE k, l&
NEXT
RETURN
DrawEaz:
COLOR 9
IF iSlide = 1 THEN LOCATE 8, 9 ELSE LOCATE 9, 9
PRINT "2001 - 2003"
LOCATE 12, 9
COLOR 15
PRINT "This screen saver is FREEWARE and may be distributed."
LOCATE 13, 9
PRINT "You may use this screen saver for public performances."
DRAW "bm84,95 c9 u3 r1 u2 r1 u1 e2 r1 u1 r2 u1 r3 u1"
DRAW "r3 d1 r2 d1 r1 f2 d1 r1 d2 r1 d3 r1"
DRAW "l20"
DRAW "d4 r1 d2 r1 d1 f1 d1 r1 d1 r3 d1 r1 d1 r1"
DRAW "r3 u1 r2 u1 r1 e5 "
DRAW "f7 bh2 l4 bu18 r20 g14 bd6 r14 bl8 h8 l4 bd8 bl3r6"
IF iSlide = 0 THEN PCOPY 1, 0
timewait! = TIMER
DO WHILE TIMER - 4 < timewait! AND TIMER > 1
IF INKEY$ <> "" THEN EXIT DO
LOOP
CLS
DO UNTIL INKEY$ = ""
LOOP
RETURN
' END OF CODE
' BY EatMe - www.eatme.pro
' BY EatMe - www.eatme.pro