Joe and others,
[Please accept my apologies for the length of this post.]
My grandson visited over the weekend and I had an opportunity to exercise
the turtle graphics system with him and with my wife for an extended period
of time. It was a very informative and mostly excellent experience. However
a result of that experimentation is that I now realize I do not understand
a key feature of how JHS works in the several distinct sessions on my local
area network.
Whereas everyone (all the various users) does see how the turtles have
moved and all of the turtles' current state no matter which session/screen
they are observing, the other features of the graphics system only change
on their own screen. Even the status of the various turtles is only updated
on the local screen when the local user makes a change of the turtle by
moving or turning the turtle on his session. The individual user can
request a do-nothing action like moving the turtle forward 0 steps or
turning the turtle 0° just so he or she can see the current status of all
of the turtles.
Almost all of that in the previous paragraph is as I would expect the
system to behave and largely how I **want** the system to behave. However a
key feature that is missing in the system is that the turtles can draw a
line where they have moved, and but that line only shows on the screen of
the person who whose turtle created that line and not on any other screen. By
the way, those lines are referred to as "pens" in turtle circles.
Also other features which are not important and which I don't wish to
change, do not change. For example if the user at one screen changes the
viewing position perspective or changes the background color, then it is
desirable in most circumstances that other people not necessarily see
changes.
So my major question is, how can I make the pens appear on other screens? I
am going to show below (a) the code that creates the changing colors of the
background screens and (b) the code that changes the pens and the positions
of the turtles in the hopes that that is enough but I am fully aware it may
not be. Notice that in both cases the main work is done my the function
`draw()` which is not really shown, but may be important.
In the "command_enter" functions below, the pen colors and pen positions
are stored in the nouns `linecolors` and `moves`, which are distinct from
the other values passed around in the graphics system because they are
accumulated using the js ".concat" feature. The other features in the
"command_enter" functions below paint the various turtles, not the pens,
and are updated on all screens.
*******(a)*******
function ev_bgcolor_click(){jdoajax([],"");}
function ev_bgcolor_click_ajax(tx){bgcolor=eval(tx[0]);draw();}
*******(b)*******
function ev_command_enter(){jdoajax(["command"],"");}
function ev_command_enter_ajax(elements)
{
var number = elements[0];
viewXYZ = elements[1];
viewUP = elements[2];
var r = 0;
var drawFrame = function() {
var ts = [];
for(var i = 0; i < 13; i++) {
element = r*13+i+3;
ts.push(elements[element]);
}
linecolor=eval(ts[0]);
linecolors = linecolors.concat(linecolor);
move=eval(ts[1]);
moves = moves.concat(move);
leftColors=eval(ts[2]);
rightColors=eval(ts[3]);
backColors=eval(ts[4]);
bottoms=eval(ts[5]);
lefts=eval(ts[6]);
rights=eval(ts[7]);
backs=eval(ts[8]);
bottomNs=eval(ts[9]);
leftNs=eval(ts[10]);
rightNs=eval(ts[11]);
backNs=eval(ts[12]);
draw();
r++;
if (r < number) {
requestAnimationFrame(drawFrame);
}
}
requestAnimationFrame(drawFrame);
}
On Fri, Sep 26, 2014 at 7:39 AM, Joe Bogner <[email protected]> wrote:
> Hi Brian, I don't know of a way to do that without patching the JHS
> jijx code. However, since the session is shared by everyone, it should
> only need to be entered once.
>
> I'm imagining the scenario where an instructor has this loaded and
> students are connecting to it. The instructor would first enter that
> and all the students would already have it in their shared session
>
>
>
> --
(B=)
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm