1. What are you people doing with Euphoria?
- Posted by Michael Packard <lgp at EXO.COM>
Oct 11, 1996
-
Last edited Oct 12, 1996
Hey, we need more Euphoria web pages. Seems like there are only
6 or 7 pages in the whole world. I know there are a LOT of people out
there using euphoria. I saw at least 70 names on this list last time I
checked. SHOW US WHAT YOU'RE DOING WITH IT!
display your tests, sample code, stupid demos, game ideas ANYTHING. We
need more cool apps.
I've been way busy working at a job site lately, so the lesson is late.
I'm sorry for the delay. I expect it to be up late saturday night.
I'm hoping to get some serious updates made to OidZone this weekend. All
features should be in in one form or another by monday or tuesday. If
everyone who downloaded the alpha would send me some feedback, comments,
or wishlists it would be a real help. I want it to be killer.
by the way, would someone be so kind as to e-mail me a patched ed.ex with
a good file selector? I'd rather spend my very limited programming time
getting OidZone ready for beta testing, than patching and debugging ed.
I'd probably screw it up.
Michael Packard
Lord Generic Productions
lgp at exo.com http://exo.com/~lgp
A Crash Course in Game Design and Production
http://exo.com/~lgp/euphoria
2. Re: What are you people doing with Euphoria?
--=====================_845140692==_
>Hey, we need more Euphoria web pages. Seems like there are only
>6 or 7 pages in the whole world. I know there are a LOT of people out
>there using euphoria. I saw at least 70 names on this list last time I
>checked. SHOW US WHAT YOU'RE DOING WITH IT!
I have a euphoria page off my main page at
"htttp://www3.mistral.co.uk/billparsl/tom.htm"
theres not realy anything there though.
>display your tests, sample code, stupid demos, game ideas ANYTHING. We
>need more cool apps.
I have made a disk catalogue program but it needs touching up (Somthing
which I'm not very good at
).
>I've been way busy working at a job site lately, so the lesson is late.
>I'm sorry for the delay. I expect it to be up late saturday night.
Looking foreward to it.
>I'm hoping to get some serious updates made to OidZone this weekend. All
>features should be in in one form or another by monday or tuesday. If
>everyone who downloaded the alpha would send me some feedback, comments,
>or wishlists it would be a real help. I want it to be killer.
I have found that sometimes when rocks have been destroyed there graphics
hang around and when another rock or the ship move over then they disaper
>by the way, would someone be so kind as to e-mail me a patched ed.ex with
>a good file selector? I'd rather spend my very limited programming time
>getting OidZone ready for beta testing, than patching and debugging ed.
>I'd probably screw it up.
I'v atached it.
--=====================_845140692==_
(This file must be converted with BinHex 4.0)
0#Jd+$3U+53!!:
--=====================_845140692==_
Thomas Parslow (PatRat) and 1 sweat litle rat
--E-Mail: billparsl at mistral.co.uk
--Internet: http://www3.mistral.co.uk/billparsl/tom.htm (general page)
-- OR
-- http://www3.mistral.co.uk/billparsl/index.htm.htm (Ratty page)
-- () _ _ ()
-- (o o)
-- =\o/=
--=====================_845140692==_--
3. Re: What are you people doing with Euphoria?
--------------57C53C247AE3
Michael Packard wrote:
> Hey, we need more Euphoria web pages. Seems like there are only
> 6 or 7 pages in the whole world. I know there are a LOT of people out
> there using euphoria. I saw at least 70 names on this list last time I
> checked. SHOW US WHAT YOU'RE DOING WITH IT!
Hi everyone,
I'm quite new to euphoria, and not yet got my webpage... but here is some code o
f mine, it's just a generic
menu selector (kind of Clipper's "menu to" but with multiple columns and horizon
tal scrolling).
Hope you like it... and help improve it.
--------------57C53C247AE3
Content-Disposition: inline; filename="menu_eng.e"
----------------
--FUNCTION MENU--
----------------
--Sintax:
-- menu( sequence "items", sequence "options", sequence "colors" )
----------------
--Parameters:
-- "items" --> sequence containing the menu items
-- "options" --> sequence with the following menu specifications:
-- options[1] = upper row coordinate
-- options[2] = left column coordinate
-- options[3] = maximum column length
-- options[4] = columns width
-- options[5] = number of visible columns
-- options[6] = light-bar style (0=minimum, 1=complete)
-- "colors" --> sequence with menu colors:
-- colors[1] = normal foreground
-- colors[2] = normal background
-- colors[3] = highlighted foreground
-- colors[4] = highlighted backgorund
----------------
include graphics.e
include file.e
include get.e
global function menu(sequence items, sequence options, sequence colors)
-- Declare variables
integer number_of_columns, first_column, last_column
integer current_row, current_column, reimprimir
sequence video
object aux1, aux2
video = video_config()
-- Check no item is wider than options[4]
for loop = 1 to length(items) do
if options[4] < length(items[loop])then
options[4] = length(items[loop])
end if
end for
-- Check if number of visible columns is OK
if options[2] + (options[5] * options[4]) > video[VC_COLUMNS] then
options[5] = floor((video[VC_COLUMNS] - options[2]) / options[4])
end if
-- Check if column length if OK
if options[1] + options[3] > video[VC_LINES] then
options[3] = video[VC_LINES] - options[1]
end if
-- Define variables
if integer (length(items) / options[3]) then
number_of_columns = length(items) / options[3]
else
number_of_columns = floor(length(items) / options[3]) + 1
end if
first_column = 1
last_column = options[5]
if last_column > number_of_columns then
last_column = number_of_columns
options[5] = number_of_columns
end if
reimprimir = 1
current_column = first_column
current_row = 1
-- Main loop
while 1 do
if first_column < 1 then
first_column = 1
reimprimir = 0
end if
last_column = first_column + options[5] - 1
if last_column > number_of_columns then
last_column = number_of_columns
first_column = last_column - options[5] + 1
reimprimir = 0
end if
if current_column < first_column then
current_column = first_column
elsif current_column > last_column then
current_column = last_column
end if
if (options[3] * (current_column - 1) + current_row) >
length(items) then
current_row = length(items) -
(options[3] * (current_column - 1))
end if
-- Display visible columns
if reimprimir = 1 then
reimprimir = 0
aux1 = 0
aux2 = 0
text_color(colors[1])
bk_color(colors[2])
for loop = (options[3] * (first_column - 1) + 1) to
(options[3] * (last_column - 1) + options[3]) do
position((options[1] + aux1), (options[2] +
(aux2 * options[4])))
if loop > length(items) then
puts(1, repeat(32, options[4]))
else
puts(1, items[loop]
& repeat(32, options[4] - length(items[loop])))
end if
aux1 = aux1 + 1
if aux1 = options[3] then
aux1 = 0
aux2 = aux2 + 1
end if
end for
end if
-- Display light-bar
text_color(colors[3])
bk_color(colors[4])
position((options[1] + (current_row - 1)),
(options[2] + ((current_column - first_column)
* options[4])))
if options[6] then
puts(1, items[options[3] * (current_column - 1) + current_row] &
repeat(32, options[4] - length(items[options[3] *
(current_column - 1) + current_row])))
else
puts(1, items[options[3] * (current_column - 1) + current_row])
end if
-- Wait for a key
aux1 = wait_key()
-- Hide ligth-bar
text_color(colors[1])
bk_color(colors[2])
position((options[1] + (current_row - 1)),
(options[2] + ((current_column - first_column)
* options[4])))
puts(1, items[options[3] * (current_column - 1) + current_row] &
repeat(32, options[4] - length(items[options[3] *
(current_column - 1) + current_row])))
-- Check which key was pressed
if aux1 = 13 then
-- ENTER --> returns selected item's position
return (options[3] * (current_column - 1) + current_row)
elsif aux1 = 27 then
-- ESC --> returns -1, selection canceled
return -1
elsif aux1 = 328 then
-- Up arrow
if current_row - 1 >= 1 then
current_row = current_row - 1
elsif current_row - 1 < 1 then
if current_column - 1 < first_column then
first_column = first_column - 1
reimprimir = 1
end if
if current_column > 1 then
current_row = options[3]
current_column = current_column - 1
end if
end if
elsif aux1 = 336 then
-- Down arrow
if current_row + 1 <= options[3] then
current_row = current_row + 1
elsif current_row + 1 > options[3] then
if current_column + 1 > last_column then
first_column = first_column + 1
reimprimir = 1
end if
if current_column < number_of_columns then
current_row = 1
current_column = current_column + 1
end if
end if
elsif aux1 = 331 then
-- Left arrow
if current_column - 1 >= first_column then
current_column = current_column - 1
elsif current_column - 1 < first_column then
current_column = current_column - 1
first_column = first_column - 1
reimprimir = 1
end if
elsif aux1 = 333 then
-- Right arrow
if current_column + 1 <= last_column then
current_column = current_column + 1
elsif current_column + 1 > last_column then
current_column = current_column + 1
first_column = first_column + 1
reimprimir = 1
end if
end if
end while
end function
--------------57C53C247AE3--
4. Re: What are you people doing with Euphoria?
--------------4B5763E4E3A
Dear Michael:
I've done a little improvement to the "menu engine" i sent you
yesterday, also
is attached a small
program to test the engine.
Bye...
--------------4B5763E4E3A
Content-Disposition: inline; filename="menutest.ex"
----------------
-- Menutest.ex
----------------
-- by Daniel Berstein Z.
-- e-mail: dberst at cmet.net
----------------
-- This file is intended to test my menu engine MENU_ENG.E, and will
-- display a scrollable menu with the contents of your root directory.
-- Play with this file, and use it as you want.
-- The file MENU_ENG.E is required for this stuff to work.
-----------------
include menu_eng.e
clear_screen()
sequence test, parameters
integer selection
parameters = repeat(0, 7)
parameters[1] = 3 -- Starting row coord.
parameters[2] = 10 -- Starting column coord.
parameters[3] = 20 -- Maximum column length
parameters[4] = 15 -- Column width
parameters[5] = 3 -- Number of visible columns
parameters[6] = 1 -- Complete lightbar style
parameters[7] = 1 -- Activate scrollbar display
test = dir("c:\\")
for loop = 1 to length(test) do
test[loop] = test[loop][D_NAME]
end for
selection = menu(test, parameters,{WHITE,BLUE,BLUE,WHITE})
position(24,1)
if selection = -1 then
puts(1, "Selection has been aborted")
else
puts(1, test[selection] & " has been selected")
end if
--------------4B5763E4E3A
Content-Disposition: inline; filename="menu_eng.e"
------------------------------------------------------------------------------
-- MENU ENGINE --
------------------------------------------------------------------------------
--Author: Daniel Berstein Zimmermann
--Date: 13 of Octubre 1996, Santiago de Chile
--E-mail: dberst at cmet.net
----------------
--FUNCTION MENU--
----------------
--Sintax:
-- menu( sequence "items", sequence "options", sequence "colors" )
----------------
--Parameters:
-- "items" --> sequence containing the menu items
-- "options" --> sequence with the following menu specifications:
-- options[1] = upper row coordinate
-- options[2] = left column coordinate
-- options[3] = maximum column length
-- options[4] = columns width
-- options[5] = number of visible columns
-- options[6] = light-bar style (0=minimum, 1=complete)
-- options[7] = scroll-bar (0=no, 1=yes)
-- "colors" --> sequence with menu colors:
-- colors[1] = normal foreground
-- colors[2] = normal background
-- colors[3] = highlighted foreground
-- colors[4] = highlighted backgorund
----------------
----------------
--Returns:
-- Position within "items" of the selected option.
-- Returns -1 if the selection is canceled.
----------------
--Notes:
-- a) The scrollbar may not work fine if the column length (options[3]) is
-- less than 3.
----------------
--Future release:
-- Mouse support
----------------
include graphics.e
include file.e
include get.e
global function menu(sequence items, sequence options, sequence colors)
-- Declare variables
integer number_of_columns, first_column, last_column
integer current_row, current_column, reimprimir
sequence video
object aux1, aux2
video = video_config()
cursor(NO_CURSOR)
-- Check no item is wider than options[4]
for loop = 1 to length(items) do
if options[4] < length(items[loop])then
options[4] = length(items[loop])
end if
end for
-- Check if number of visible columns is OK
if options[2] + (options[5] * options[4]) > video[VC_COLUMNS] then
options[5] = floor((video[VC_COLUMNS] - options[2]) / options[4])
end if
-- Check if column length if OK
if options[1] + options[3] > video[VC_LINES] then
options[3] = video[VC_LINES] - options[1]
end if
-- Define variables
if integer (length(items) / options[3]) then
number_of_columns = length(items) / options[3]
else
number_of_columns = floor(length(items) / options[3]) + 1
end if
first_column = 1
last_column = options[5]
if last_column > number_of_columns then
last_column = number_of_columns
options[5] = number_of_columns
end if
-- Display scrollbar
if options[7] then
text_color(colors[1])
bk_color(colors[2])
position((options[1] + options[3]), options[2])
puts(1, 17 & repeat(176, (options[4] * options[5]) - 2) & 16)
end if
reimprimir = 1
current_column = first_column
current_row = 1
-- Main loop
while 1 do
if first_column < 1 then
first_column = 1
reimprimir = 0
end if
last_column = first_column + options[5] - 1
if last_column > number_of_columns then
last_column = number_of_columns
first_column = last_column - options[5] + 1
reimprimir = 0
end if
if current_column < first_column then
current_column = first_column
elsif current_column > last_column then
current_column = last_column
end if
if (options[3] * (current_column - 1) + current_row) >
length(items) then
current_row = length(items) -
(options[3] * (current_column - 1))
end if
-- Display visible columns
if reimprimir = 1 then
reimprimir = 0
aux1 = 0
aux2 = 0
text_color(colors[1])
bk_color(colors[2])
for loop = (options[3] * (first_column - 1) + 1) to
(options[3] * (last_column - 1) + options[3]) do
position((options[1] + aux1), (options[2] +
(aux2 * options[4])))
if loop > length(items) then
puts(1, repeat(32, options[4]))
else
puts(1, items[loop]
& repeat(32, options[4] - length(items[loop])))
end if
aux1 = aux1 + 1
if aux1 = options[3] then
aux1 = 0
aux2 = aux2 + 1
end if
end for
end if
-- Display light-bar
text_color(colors[3])
bk_color(colors[4])
position((options[1] + (current_row - 1)),
(options[2] + ((current_column - first_column)
* options[4])))
if options[6] then
puts(1, items[options[3] * (current_column - 1) + current_row] &
repeat(32, options[4] - length(items[options[3] *
(current_column - 1) + current_row])))
else
puts(1, items[options[3] * (current_column - 1) + current_row])
end if
-- Update scrollbar (display cursor)
if options[7] then
aux2= floor(( options[5] * options[4]) / ( number_of_columns - 1))
* ( current_column - 1) + 1
if aux2 > (options[5] * options[4]) - 2 then
aux2 = (options[5] * options[4]) - 2
end if
text_color(colors[1])
bk_color(colors[2])
position((options[1] + options[3]), (options[2] + aux2))
puts(1, 178)
end if
-- Wait for a key
aux1 = wait_key()
-- Hide ligth-bar
text_color(colors[1])
bk_color(colors[2])
position((options[1] + (current_row - 1)),
(options[2] + ((current_column - first_column)
* options[4])))
puts(1, items[options[3] * (current_column - 1) + current_row] &
repeat(32, options[4] - length(items[options[3] *
(current_column - 1) + current_row])))
-- Update scrollbar (hide cursor)
if options[7] then
aux2= floor(( options[5] * options[4]) / ( number_of_columns - 1))
* ( current_column - 1) + 1
if aux2 > (options[5] * options[4]) - 2 then
aux2 = (options[5] * options[4]) - 2
end if
position((options[1] + options[3]), (options[2] + aux2))
puts(1, 176)
end if
-- Check which key was pressed
if aux1 = 13 then
-- ENTER --> returns selected item's position
return (options[3] * (current_column - 1) + current_row)
elsif aux1 = 27 then
-- ESC --> returns -1, selection canceled
return -1
elsif aux1 = 328 then
-- Up arrow
if current_row - 1 >= 1 then
current_row = current_row - 1
elsif current_row - 1 < 1 then
if current_column - 1 < first_column then
first_column = first_column - 1
reimprimir = 1
end if
if current_column > 1 then
current_row = options[3]
current_column = current_column - 1
end if
end if
elsif aux1 = 336 then
-- Down arrow
if current_row + 1 <= options[3] then
current_row = current_row + 1
elsif current_row + 1 > options[3] then
if current_column + 1 > last_column then
first_column = first_column + 1
reimprimir = 1
end if
if current_column < number_of_columns then
current_row = 1
current_column = current_column + 1
end if
end if
elsif aux1 = 331 then
-- Left arrow
if current_column - 1 >= first_column then
current_column = current_column - 1
elsif current_column - 1 < first_column then
current_column = current_column - 1
first_column = first_column - 1
reimprimir = 1
end if
elsif aux1 = 333 then
-- Right arrow
if current_column + 1 <= last_column then
current_column = current_column + 1
elsif current_column + 1 > last_column then
current_column = current_column + 1
first_column = first_column + 1
reimprimir = 1
end if
end if
end while
end function
--------------4B5763E4E3A--
5. Re: What are you people doing with Euphoria?
Michael,
> Hey, we need more Euphoria web pages. Seems like there are only
Agree, but too much gives some scattering of information.
> 6 or 7 pages in the whole world. I know there are a LOT of people out
> there using euphoria. I saw at least 70 names on this list last time I
> checked. SHOW US WHAT YOU'RE DOING WITH IT!
I would like to but I,m not so fast and busy as you are. My code
takes some time. Sometimes I think that you have 5 times more time to
spend coding in Euporia and a 10 times faster thinking process than
I have. So I'm very selective where I spend my time at.
I can tell you that I'm interested in databases. So likely I spend
my time on making access modules for indexfiles and databases. Now
I'm waiting for some code David Gay is making for accessing
indexfiles and stuff like that. I hope it's allmost ready. Maybe he
has an anouncement in the mail I've still to read yet.
> display your tests, sample code, stupid demos, game ideas ANYTHING.
> We need more cool apps.
If something is ready I'll certainly put some code on the mailer.
> I've been way busy working at a job site lately, so the lesson is late.
> I'm sorry for the delay. I expect it to be up late saturday night.
He, get some sleep man......
> I'm hoping to get some serious updates made to OidZone this weekend. All
> features should be in in one form or another by monday or tuesday. If
> everyone who downloaded the alpha would send me some feedback,
> comments,
> or wishlists it would be a real help. I want it to be killer.
Again, the same.
> by the way, would someone be so kind as to e-mail me a patched ed.ex with
> a good file selector? I'd rather spend my very limited programming time
> getting OidZone ready for beta testing, than patching and debugging ed.
> I'd probably screw it up.
Marcel Kollenaar
M.Kollenaar at slo.nl
6. Re: What are you people doing with Euphoria?
>I can tell you that I'm interested in databases. So likely I spend
>my time on making access modules for indexfiles and databases. Now
>I'm waiting for some code David Gay is making for accessing
>indexfiles and stuff like that. I hope it's allmost ready. Maybe he
>has an anouncement in the mail I've still to read yet.
It's ready :)
With create_index() you can create an index file based on *ANY* defined sort
field in the associated main file. This means you can access the main file
(using the index file in association) in any sorting sequence.
With fetch_data() you can link the index file to the main file and
retrieve the information based on a partial or full search key. It's a little
rugged but it works. I had the person who I originally wrote it for
try it out. He likes it but wants to see more features when he thinks
of some for his application. I encourage you to go to the "A Beginner's Guide
To Euphoria" home page and download it. It's in a file called
INDEX_DB.ZIP. Please send any bug reports or enhancement ideas to my
mailbox. :)
I'm already thinking of ways to clean it up and enhance it, but I got my
nose in Michael's very fascinating games tutorial, getting tips to
better approach Stellar Diplomacy.
Thanks
David Gay
"A Beginner's Guide To Euphoria"
http://www.interlog.com/~moggie/euphoria.htm
7. Re: What are you people doing with Euphoria?
Hello Marcel and others,
You wrote:
>I can tell you that I'm interested in databases. So likely I spend
>my time on making access modules for indexfiles and databases
>If something is ready I'll certainly put some code on the mailer.
I'm also interested in databases, especially related databases. I'm trying
to write
a program for keeping the stock in a shop, retrieving, updating etc. I hope
you
understand what I mean. But I have a quite busy job in the daytime, so I
also am faced with the problem that I don't have as much time to spend on
it as I would like to. Although I haven't yet looked at it, I think I can
also benefit from David Gay's indexing example and the 'menuing', which
comes from Fred Cole, I believe.
But maybe we can exchange include files, ideas and help each other with our
programs, even if they are not really finished. OK? Hope to hear from you
soon.
Ad Rienks
Havikstraat 33
3362 EG Sliedrecht
Netherlands
tel. +31 (0)184-420503
Email 106075,266 at compuserve.com