proc spel {{size 10}} { global spel catch {destroy .frame} catch { toplevel $w wm title $w {Bert Bos Puzzle} wm iconname $w {Bert Bos Puzzle} } frame .frame pack .frame -fill both -expand 1 -fill both set col $size while {$col > 0} { frame .frame.t$col pack .frame.t$col -expand 1 -fill both set row 1 while {$row <= $size} { set vrij($col,$row) blue button .frame.t$col.$row -width 1 -height 1 -relief raised \ -borderwidth 1 -padx 0 -pady 0 -bg $vrij($col,$row) \ -command "press $row $col $size" pack .frame.t$col.$row -side left -fill both -expand 1 set row [expr $row + 1] } set col [expr $col - 1] } frame .frame.tok set new 3 while {$new < 14} { button .frame.tok.$new -command "spel $new" -text $new pack .frame.tok.$new -side left -fill both -expand 1 set new [expr $new + 1] } frame .frame.stok while {$new < 24} { button .frame.stok.$new -command "spel $new" -text $new pack .frame.stok.$new -side left -fill both -expand 1 set new [expr $new + 1] } button .frame.quit -command "destroy ." -text Quit pack .frame.tok .frame.stok .frame.quit -fill both -expand 1 } proc press {col row size} { swap $col $row $size swap [expr $col+1] [expr $row] $size swap [expr $col-1] [expr $row] $size swap [expr $col] [expr $row+1] $size swap [expr $col] [expr $row-1] $size } proc swap {col row size} { if { $col > 0 && $row > 0 && $col <= $size && $row <= $size } { set color [lindex [.frame.t$row.$col configure -bg] 4] if {$color == "blue"} { .frame.t$row.$col configure -bg red } { .frame.t$row.$col configure -bg blue } } } spel 6