1. Hi.
- Posted by Jesse Duke <dark at cyax.com> Aug 02, 2004
- 418 views
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.
- Posted by "Igor Kachan" <kinz at peterlink.ru> Aug 02, 2004
- 407 views
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