1. Hi.
I just looked through the Euphoria demos. Very nice. It appears to be
a very good rapid-prototyping language. Debugging anything over 400
lines must be a b-tch though...
I'm not used to it yet, but I've had familiarity with other languages
such as C, so it's easy to modify the source code. I made some tweaks
to one of the samples; it tends to work smoother now. Here it is, if
anyone's interested. Changes are marked in "--CHANGE: "
- - -
file c:\euphoria\demos\dos32\mouse.ex
- - -
----------------
-- mouse test --
----------------
-- This is a very simple program to demonstrate the get_mouse() built-in
-- function. No call is made to mouse_events(), so by default all events are
-- reported by get_mouse().
include mouse.e
include graphics.e
sequence vc
vc = video_config()
if graphics_mode(17 + vc[VC_COLOR]) then -- 640x480 (16 colors)
puts(1, "Can't get good graphics mode\n")
abort(1)
end if
vc = video_config()
constant origin = {vc[VC_XPIXELS]/2, vc[VC_YPIXELS]/2}
constant MAX_LINE = 5
procedure beep(integer pitch) --CHANGE: This was irritating, so I
commented out the entire thing...
-- atom t --CHANGE
-- sound(pitch) --CHANGE
-- t = time() --CHANGE
-- while time() < t+0.07 do --CHANGE
-- end while --CHANGE
-- sound(0) --CHANGE
end procedure
procedure try_mouse()
integer color, line, eventNo, oldx, oldy, newx, newy --CHANGE
object event
sequence movement, str
color = 14
eventNo = 0
line = 1
oldx = 0 --CHANGE
oldy = 0 --CHANGE
newx = 0 --CHANGE
newy = 0 --CHANGE
while 1 do
event = get_mouse()
if sequence(event) then
eventNo += 1
movement = "- -- -- --"
oldx=newx --CHANGE: previous line is
blacked out...
oldy=newy --CHANGE
newx=event[2] --CHANGE
newy=event[3] --CHANGE
if and_bits(event[1], MOVE) then
movement[1] = 'M'
mouse_pointer(0)
draw_line(BLACK, {origin, {oldx, oldy}}) --CHANGE: the blacking
out...
draw_line(color, {origin, {newx, newy}}) --CHANGE
mouse_pointer(1)
end if
if and_bits(event[1], LEFT_DOWN) then
movement[3] = 'D'
beep(500)
color += 1
if color > 15 then
color = 0
end if
end if
if and_bits(event[1], LEFT_UP) then
movement[4] = 'U'
beep(500)
end if
if and_bits(event[1], MIDDLE_DOWN) then
movement[6] = 'D'
beep(1000)
end if
if and_bits(event[1], MIDDLE_UP) then
movement[7] = 'U'
beep(1000)
end if
if and_bits(event[1], RIGHT_DOWN) then
movement[9] = 'D'
beep(1000)
color -= 1 --CHANGE: right-click now cycles colors backwards.
if color < 0 then --CHANGE
color = 15 --CHANGE
end if --CHANGE
end if
if and_bits(event[1], RIGHT_UP) then
movement[10] = 'U'
beep(1000)
end if
if eventNo > 1 then
puts(1, str)
line += 1
if line > MAX_LINE then
line = 1
end if
position(line, 1)
end if
str = sprintf("event# %4d: %s, x:%d, y:%d \r",
{eventNo, movement, event[2], event[3]})
text_color(WHITE)
puts(1, str)
text_color(WHITE)
puts(1, '\n' & repeat(' ', length(str)))
position(line, 1)
end if
if get_key() != -1 then
exit
end if
end while
end procedure
try_mouse()
if graphics_mode(-1) then
end if
2. Re: Hi.
Hi Jesse,
Welcom!
You wrote:
----------
> From: Jesse Duke <dark at cyax.com>
> To: EUforum at topica.com
> Subgect: Hi.
> Sent: 2 aug 2004 y. 11:39
>
> I just looked through the Euphoria demos.
> Very nice. It appears to be a very good
> rapid-prototyping language. Debugging
> anything over 400 lines must be a b-tch
> though...
Debugging is the easiest thing in EU
> I'm not used to it yet, but I've had
> familiarity with other languages
> such as C, so it's easy to modify the source
> code. I made some tweaks
> to one of the samples; it tends to work
> smoother now. Here it is, if
> anyone's interested.
> Changes are marked in "--CHANGE: "
>
> - - -
>
> file c:\euphoria\demos\dos32\mouse.ex
[snipped]
> procedure beep(integer pitch) --CHANGE: This was irritating, so I
> commented out the entire thing...
> -- atom t --CHANGE
> -- sound(pitch) --CHANGE
> -- t = time() --CHANGE
> -- while time() < t+0.07 do --CHANGE
> -- end while --CHANGE
> -- sound(0) --CHANGE
> end procedure
[snipped]
Too many extra job...
You can do, for example:
procedure beep(integer pitch)
atom t
return -- CHANGE
sound(pitch)
t = time()
while time() < t+0.07 do
end while
sound(0)
end procedure
And Euphoria will remind you about your
change, when program is finished.
Then you can
-- return -- CHANGE
to restore old good procedure.
See, 'return' stands after 'atom t', this is
an important thing about procedures
and functions.
Regards,
Igor Kachan
kinz at peterlink.ru