1. Spectra Screen Saver v1.0pd
-----begin spectra.ex-----
-----Spectra Modular Screen Saver v1.0pd-----
-----Public Domain-----
-----by Alan Tu <atu5713 at compuserve.com>-----
include graphics.e -- to ensure graphics modes
include machine.e -- for tick_rate
procedure the_end()
integer g_mode
g_mode =3D graphics_mode(-1)
abort(0)
end procedure
tick_rate(100) -- a better resolution for delay procedure
procedure delay(atom n)
atom t
integer g
t =3D time()
while time() < t + n do
g =3D get_key()
if g !=3D -1 then the_end()
end if
end while
end procedure
include file.e -- for position procedure later
constant screen_msg =3D -- begin screen saver message
-- can be any string, up to 24 lines, 80 characters per line
-- more text, less perceived movement
{
"This screen saver is written in Euphoria.",
"Check out Euphoria's Official Web Site at:",
"http://members.aol.com/FilesEu/"
}
constant exit_msg =3D "Press any key to exit..."
-- The code below determines the rightmost
-- starting column position for your text
include sort.e
sequence lengths,sorted_lengths
lengths =3D repeat(0,length(screen_msg))
for counter_0 =3D 1 to length(screen_msg) do
lengths[counter_0] =3D length(screen_msg[counter_0])
end for
sorted_lengths =3D sort(lengths)
integer max_length
max_length =3D sorted_lengths[length(sorted_lengths)]
integer row,column,g_mode
g_mode =3D graphics_mode(3)
while 1 do
clear_screen()
row =3D rand(25-length(screen_msg))
column =3D rand(81-max_length)
for counter_1 =3D 1 to length(screen_msg) do
position(row+counter_1-1,column)
for counter_2 =3D 1 to length(screen_msg[counter_1]) do
text_color(rand(15))
puts(1,screen_msg[counter_1][counter_2])
end for
end for
position(25,1)
text_color(15)
puts(1,exit_msg)
delay(4)
end while
=