pouët.net

Go to bottom

EAZ by EatMe

' 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

' 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

' END OF CODE
' BY EatMe - www.eatme.pro
Go to top