@IanAtJMP , ecco un post per testare la codifica e i caratteri dei colori JSL.
spinners = {};
spinnerGraphs = {};
showSpinnerLabels = 1;
attendees=45;
nDisplayCols = 5;
initialsize=nDisplayCols * 60;
newSpinner = Function( {},
{spinner = [=> ]},
spinner["point"] = {Sin( 0 ), Cos( 0 )};
spinner["tail"] = {-Sin( 0 ), -Cos( 0 )};
spinner["currentValue"] = 0;
spinner["textbox"] = Text Box( Char( 0 ) );
spinner["random"] = 0;
spinner;
);
newSpinnerGraph = Function( {theSpinnerNumber},
{spinnerGraph},
spinnerGraph = Eval(
Substitute(
Expr(
V List Box(
H List Box( Text Box( "Spinner Value: " ), spinners[theSpinnerNumber]["textbox"] ),
Graph Box(
framesize(
initialsize / Ceiling( N Items( spinners ) / nDisplayCols ),
initialsize / Ceiling( N Items( spinners ) / nDisplayCols )
),
X Scale( -3, 3 ),
Y Scale( -3, 3 ),
suppressAxes,
/*
Fill Color( "red" );
Transparency( .8 );
Pie( -2, 2, 2, -2, 0, 72 );
*/
Local( {i, x, y},
For( i = 1, i <= attendees, i++,
x = Sin( (i/attendees) * 2 * Pi() );
y = Cos( (i/attendees) * 2 * Pi() );
If( showSpinnerLabels,
Text( Center Justified, {x * 2.25, (y * 2.25) - .1}, Char( i ) )
);
Line( {x * 1.75, y * 1.75}, {x * 2, y * 2} );
)
);
Oval( -2, 2, 2, -2, 0 );
Fill Color( "black" );
Transparency( 1 );
Oval( -.1, .1, .1, -.1, 1 );
Arrow( spinners[nn]["tail"], spinners[nn]["point"] );
)
)
),
Expr( nn ), Eval( theSpinnerNumber )
)
);
spinnerGraph;
);
spinThem = Expr(
For( i = 1, i <= N Items( spinners ), i++,
spinners[i]["textbox"] << set text( "??" );
spinners[i]["random"] = Random Integer( attendees ) / attendees;
);
For( j = 1, j <= 1096, j = j + N Items( spinners ) * 4,
// show(nitems(spinners));
For( i = 1, i <= N Items( spinners ), i++,
spinners[i]["currentvalue"] = spinners[i]["random"] - (1 - (Log( j ) - Floor( Log( j ) )));
spinners[i]["point"] = Eval List(
{Sin( spinners[i]["currentvalue"] * 2 * Pi() ), Cos( spinners[i]["currentvalue"] * 2 * Pi() )}
);
spinners[i]["tail"] = Eval List(
{-Sin( spinners[i]["currentvalue"] * 2 * Pi() ), -Cos( spinners[i]["currentvalue"] * 2 * Pi() )}
);
);
spinnerListBox << reshow;
Wait( 0.01 );
);
For( i = 1, i <= N Items( spinners ), i++,
spinners[i]["point"] = Eval List(
{Sin( spinners[i]["random"] * 2 * Pi() ), Cos( spinners[i]["random"] * 2 * Pi() )}
);
spinners[i]["tail"] = Eval List(
{-Sin( spinners[i]["random"] * 2 * Pi() ), -Cos( spinners[i]["random"] * 2 * Pi() )}
);
spinners[i]["textbox"] << set text( Char( spinners[i]["random"] * attendees ) );
);
);
resetEm = Expr(
For( i = 1, i <= N Items( spinners ), i++,
spinners[i]["point"] = {Sin( 0 ), Cos( 0 )};
spinners[i]["tail"] = {-Sin( 0 ), -Cos( 0 )};
spinners[i]["currentValue"] = 0;
spinners[i]["textbox"] << set Text( Char( 0 ) );
spinners[i]["random"] = 0;
);
);
addAnother = Expr(
//if(Nitems(spinnerGraphs)+1/n)
If( initialsize / Ceiling( (N Items( spinners ) + 1) / nDisplayCols ) < 200,
showSpinnerLabels = 0
);
For( i = 1, i <= N Items( spinnerGraphs ), i++,
spinnerGraphs[i][FrameBox( 1 )] << framesize(
initialsize / Ceiling( (N Items( spinners ) + 1) / nDisplayCols ),
initialsize / Ceiling( (N Items( spinners ) + 1) / nDisplayCols )
)
);
Insert Into( spinners, newSpinner() );
Insert Into( spinnerGraphs, newSpinnerGraph( N Items( spinners ) ) );
spinnerListBox << append( spinnerGraphs[N Items( spinnerGraphs )] );
resetEm;
);
deleteOne = Expr(
If( N Items( spinners ) == 1,
Dialog( "Must have at least one spinner.", Button( "OK" ) ),
If( initialsize / Ceiling( (N Items( spinners ) - 1) / nDisplayCols ) > 200,
showSpinnerLabels = 1
);
spinnerGraphs[N Items( spinnerGraphs )] << delete;
Remove From( spinnerGraphs, N Items( spinnerGraphs ), 1 );
Remove From( spinners, N Items( spinners ), 1 );
For( i = 1, i <= N Items( spinnerGraphs ), i++,
spinnerGraphs[i][FrameBox( 1 )] << framesize(
initialsize / Ceiling( (N Items( spinners ) ) / nDisplayCols ),
initialsize / Ceiling( (N Items( spinners ) ) / nDisplayCols )
)
);
resetEm;
)
);
Insert Into( spinners, newSpinner() );
Insert Into( spinnerGraphs, newSpinnerGraph( N Items( spinners ) ) );
spinWin = Expr(
New Window( "Spinners",
Outline Box( "Spinners",
spinnerListBox = Lineup Box( N Col( nDisplayCols ), spacing( 10 ) ),
For( i = 1, i <= N Items( spinnerGraphs ), i++,
spinnerListBox << append( spinnerGraphs[i] )
)
),
v = V List Box(
h = H List Box( Button Box( "Spin", spinThem ) ),
H List Box( Button Box( "Add another spinner", addAnother ), Button Box( "Remove one spinner", deleteOne ) )
)
)
);
If(
ex = Dialog(
Title( " How many people?" ),
vlist( hlist( "How many people? ", variable = EditNumber( attendees ) ), hlist( Button( "OK" ), Button( "Cancel" ) ) )
);
ex["button"] == 1;
,
attendees = ex["variable"]; spinWin
);