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
 =

new topic     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu