MathGroup Archive 2009

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Buttons to interactively restart/finish a program

  • To: mathgroup at smc.vnet.net
  • Subject: [mg99230] Re: Buttons to interactively restart/finish a program
  • From: "Sjoerd C. de Vries" <sjoerd.c.devries at gmail.com>
  • Date: Thu, 30 Apr 2009 06:24:05 -0400 (EDT)
  • References: <gt3tml$nps$1@smc.vnet.net>

Hi Alexei,

A very quick change in your code makes the restart button work: add
the inititialization code to your restart button and add Dynamic to
the quiz part of the panel and it works (see below).

Note that you assume that RandomInteger yields a zero when the upper
boundary of the range is lower than the lower boundary. This is not
true. Try, for instance, this: RandomInteger[{1, 0}, 100]. It is
possible that you get a 4+1 question for which there is no answer
button, so you should add one.

Cheers -- Sjoerd

Panel[
 DynamicModule[{a, b},

  a = RandomInteger[{1, 4}];
  b = RandomInteger[{1, 4 - a}];
  f = "?";
  g1 := (Clear[f]; f = a + b);
  g2 := (Clear[f]; f = "?");

  Column[{Row[{Dynamic@Button[Style[1, 30], If[a + b == 1, g1, g2]],
      Dynamic@Button[Style[2, 30], If[a + b == 2, g1, g2]],
      Dynamic@Button[Style[3, 30], If[a + b == 3, g1, g2]],
      Dynamic@Button[Style[4, 30], If[a + b == 4, g1, g2]]}],
    Dynamic@Panel[
      Row[{Text[Style[a, 50]], Text[Style["+", 50]],
        Text[Style[b, 50]], Text[Style["=", 50]],
        Text[Style[Dynamic[f], 50]]}]],
    Button["Restart", a = RandomInteger[{1, 4}];
     b = RandomInteger[{1, 4 - a}];
     f = "?";
     g1 := (Clear[f]; f = a + b);
     g2 := (Clear[f]; f = "?");]}]]]


On Apr 27, 11:25 am, Alexei Boulbitch <Alexei.Boulbi... at iee.lu> wrote:
> Dear community,
> I am writing a simple interactive teaching program to teach my child
> arithmetics.  Here is a simplified example on addition from 1 to 4:
>
> Panel[DynamicModule[{a, b},
>               Clear[a, b, f];
>                   a = RandomInteger[{1, 4}];
>                                 b = Ran=
domInteger[{1, 4 - a}];
>                                     =
 f = "?";
>   g1 := (Clear[f]; f = a + b);
>   g2 := (Clear[f]; f = "?");
>
>   Column[{
>             Row[{
>
>               Dynamic@Button[Style[1, 30], If[a + b == =
1, g1, g2]],
>                   Dynamic@Button[Style[2, 30], If[a + b=
 == 2, g1, g2]],
>                       Dynamic@Button[Style[3, 30], =
If[a + b == 3, g1, g2]],
>                           Dynamic@Button[Style[=
4, 30], If[a + b == 4,
> g1, g2]]
>
>                             }],
>
>                 Panel[Row[{Text[Style[a, 50]],
>                       Text[Style["+", 50]],
>                             Text[Style[b, 50]=
],
>                                  Text[S=
tyle["=", 50]],
>                                     =
        Text[Style[Dynamic[f], 50]]}]]
>
>                   }]
>
>   ]
>                          ]
>
> In this program however, one needs to manually re-execute the program
> (e.g. via Shift+Enter) each time one wants to have a new execise. In
> order to avoid the manual restarting in addition to the above code I
> would like to include two buttons. First should restart the program, so
> that the task is renewed. The second button should close the panel when
> the game is finished. Thus, the program may be executed only once before
> the game starts. My idea to add a restart button the way shown below did
> not work:
>
> Label["aa"];
> Panel[DynamicModule[{a, b},
>               Clear[a, b, f];
>                   a = RandomInteger[{1, 4}];
>                                 b = Ran=
domInteger[{1, 4 - a}];
>                           f = "?";
>   g1 := (Clear[f]; f = a + b);
>   g2 := (Clear[f]; f = "?");
>
>   Column[{
>             Row[{
>
>               Dynamic@Button[Style[1, 30], If[a + b == =
1, g1, g2]],
>                   Dynamic@Button[Style[2, 30], If[a + b=
 == 2, g1, g2]],
>                       Dynamic@Button[Style[3, 30], =
If[a + b == 3, g1, g2]],
>                           Dynamic@Button[Style[=
4, 30], If[a + b == 4,
> g1, g2]]
>
>                             }],
>
>                 Panel[Row[{Text[Style[a, 50]],
>                        Text[Style["+", 50]],
>                           Text[Style[b, 50]],
>                                Text[Style=
["=", 50]],
>                                     T=
ext[Style[Dynamic[f], 50]]}]],
>     Button["Restart", Goto["aa"]]
>
>                   }]
>
>   ]
>                          ]
>
> Could anybody give me an idea?
>
> Best, Alexei
>
> --
> Alexei Boulbitch, Dr., habil.
> Senior Scientist
>
> IEE S.A.
> ZAE Weiergewan
> 11, rue Edmond Reuter
> L-5326 Contern
> Luxembourg
>
> Phone: +352 2454 2566
> Fax:   +352 2454 3566
>
> Website:www.iee.lu
>
> This e-mail may contain trade secrets or privileged, undisclosed or other=
wise confidential information. If you are not the intended recipient and ha=
ve received this e-mail in error, you are hereby notified that any review, =
copying or distribution of it is strictly prohibited. Please inform us imme=
diately and destroy the original transmittal from your system. Thank you fo=
r your co-operation.



  • Prev by Date: Re: Re: Select and Cases Give Different Answers
  • Next by Date: Re: issues with GraphPlot
  • Previous by thread: Re: Buttons to interactively restart/finish a program
  • Next by thread: Nested numerical integration