04-09-2003, 12:51 AM
I'm trying to code some sort of mystify (the screensaver)
but when it comes to the hue rotation stuff there's an error somewhere
and I can't find it.
Can someone look through my code and help me out?
but when it comes to the hue rotation stuff there's an error somewhere
and I can't find it.
Can someone look through my code and help me out?
Code:
TYPE vertex
x AS SINGLE
y AS SINGLE
xm AS SINGLE
ym AS SINGLE
END TYPE
DIM p1 AS vertex
DIM p2 AS vertex
DIM clr AS SINGLE
DIM colorstep AS SINGLE
DIM colornumber AS LONG
xmax = 639
ymax = 479
colors = 16
colorstep = .3
screenmode = 12
movementstep = 5
movementrandrange = 4
'color number = (65536 * blue/n+1) + (256 * green/n+1) + (red/n+1)
RANDOMIZE TIMER
SCREEN screenmode
r = 63: b = 63
FOR n = 0 TO colors - 1
PALETTE n, (65536 * b / (n + 1)) + (256 * g / (n + 1)) + (r / (n + 1))
NEXT
p1.x = RND * xmax
p1.y = RND * ymax
p2.x = RND * xmax
p2.y = RND * ymax
p1.xm = (movementstep + (RND * movementrandrange) - (movementrandrange / 2))
p1.ym = (movementstep + (RND * movementrandrange) - (movementrandrange / 2))
p2.xm = (movementstep + (RND * movementrandrange) - (movementrandrange / 2))
p2.ym = (movementstep + (RND * movementrandrange) - (movementrandrange / 2))
IF INT(RND) THEN p1.xm = -p1.xm
IF INT(RND) THEN p1.xm = -p1.xm
IF INT(RND) THEN p1.xm = -p1.xm
IF INT(RND) THEN p1.xm = -p1.xm
clr = 0
DO
IF p1.x <= 0 AND p1.xm <= 0 THEN p1.xm = movementstep + (RND * movementrandrange) - (movementrandrange / 2)
IF p1.x >= xmax AND p1.xm >= 0 THEN p1.xm = -movementstep + (RND * movementrandrange) - (movementrandrange / 2)
IF p1.y <= 0 AND p1.ym <= 0 THEN p1.ym = movementstep + (RND * movementrandrange) - (movementrandrange / 2)
IF p1.y >= ymax AND p1.ym >= 0 THEN p1.ym = -movementstep + (RND * movementrandrange) - (movementrandrange / 2)
IF p2.x <= 0 AND p2.xm <= 0 THEN p2.xm = movementstep + (RND * movementrandrange) - (movementrandrange / 2)
IF p2.x >= xmax AND p2.xm >= 0 THEN p2.xm = -movementstep + (RND * movementrandrange) - (movementrandrange / 2)
IF p2.y <= 0 AND p2.ym <= 0 THEN p2.ym = movementstep + (RND * movementrandrange) - (movementrandrange / 2)
IF p2.y >= ymax AND p2.ym >= 0 THEN p2.ym = -movementstep + (RND * movementrandrange) - (movementrandrange / 2)
IF clr >= 0 THEN colorstep = -colorstep
IF clr <= colors - 1 THEN colorstep = -colorstep
clr = clr + colorstep
LINE (p1.x, p1.y)-(p2.x, p2.y), clr
p1.x = p1.x + p1.xm
p1.y = p1.y + p1.ym
p2.x = p2.x + p2.xm
p2.y = p2.y + p2.ym
SELECT CASE phase
CASE IS = 0: b = b - 1
IF b = 0 THEN phase = 1
CASE IS = 1: g = g + 1
IF g = 63 THEN phase = 2
CASE IS = 2: r = r - 1
IF r = 0 THEN phase = 3
CASE IS = 3: b = b + 1
IF b = 63 THEN phase = 4
CASE IS = 4: g = g - 1
IF g = 0 THEN phase = 5
CASE IS = 5: r = r + 1
IF r = 63 THEN phase = 0
END SELECT
FOR n = 0 TO colors - 1
PALETTE n, (65536 * b / (n + 1)) + (256 * g / (n + 1)) + (r / (n + 1))
NEXT
LOOP WHILE INKEY$ = ""
/post]