... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... car insurance : [http://www.insurance-top.com auto insurance] - [HTTP://www.insurance-top.com auto insurance] : [Insurance car|http://www.insurance-top.com] - [Insurance car|HTTP://www.insurance-top.com] : http://www.insurance-top.com/auto/ : [[http://www.insurance-top.com insurance quote]] : [[http://www.insurance-top.com | home insurance]] : "cars insurance" http://www.insurance-top.com : [http://www.insurance-top.com|insurance auto] if 0 {[Richard Suchenwirth] 2003-02-19 - More than a month after we discussed it in the [Tcl chatroom], here comes a little traffic light simulator, which might interest children: both to play with a bit, and see how it was done, especially the "states" section below (state machines are childĀ“s play!) - which models the behavior of German traffic lights. [http://mini.net/files/traffic.jpg] Change phase by clicking on the button, or . Turning on the timer makes lights automatically change every second. Feel free to modify it! (In Austria I think they have a yellow+green phase between green and yellow ...) [AM] A few remarks: * There are several Wiki pages that use traffic lights as an example. * If you combine this graphics with any of the other techniques, like the one in [Playing CLIPS] to add support for specific countries, this might be an amusing little subject for an educational project } ---- package require Tk proc light args { .c itemconfig light -fill black foreach i $args {.c itemconfig $i -fill $i} } proc next what { if $::timer { after 1000 $what } else {set ::next $what} } #------------------- the states: proc red {} { light red; next red+yellow } proc red+yellow {} { light red yellow; next green } proc green {} { light green; next yellow } proc yellow {} { light yellow; next red } #----------- Graphical User Interface: pack [canvas .c -width 120 -height 100] .c create rect 5 5 35 85 -fill gray20 .c create oval 10 10 30 30 -tags {red light} .c create oval 10 35 30 55 -tags {yellow light} .c create oval 10 60 30 80 -tags {green light} checkbutton .c.t -text Timer -variable timer set timer 0 .c create window 50 50 -window .c.t -anchor w button .c.b -text Next -command {eval $next} .c create window 50 70 -window .c.b -anchor w bind . {eval $next} red ;# initial state ---- See also: [Street-crossing with Traffic-Lights] ---- [Arts and crafts of Tcl-Tk programming] - [Category Toys]