diff options
Diffstat (limited to 'ruby_1_8_5/ext/tk/sample/demos-jp/puzzle.rb')
-rw-r--r-- | ruby_1_8_5/ext/tk/sample/demos-jp/puzzle.rb | 116 |
1 files changed, 0 insertions, 116 deletions
diff --git a/ruby_1_8_5/ext/tk/sample/demos-jp/puzzle.rb b/ruby_1_8_5/ext/tk/sample/demos-jp/puzzle.rb deleted file mode 100644 index ad69775aab..0000000000 --- a/ruby_1_8_5/ext/tk/sample/demos-jp/puzzle.rb +++ /dev/null @@ -1,116 +0,0 @@ -# -# widet demo 'puzzle' (called by 'widget') -# - -# toplevel widget が存在すれば削除する -if defined?($puzzle_demo) && $puzzle_demo - $puzzle_demo.destroy - $puzzle_demo = nil -end - -# demo 用の toplevel widget を生成 -$puzzle_demo = TkToplevel.new {|w| - title("15-Puzzle Demonstration") - iconname("15-Puzzle") - positionWindow(w) -} - -# label 生成 -msg = TkLabel.new($puzzle_demo) { - font $font - wraplength '4i' - justify 'left' - text "下の15-パズルはボタンを集めてできています。空いている所の隣のピースをクリックすると、そのピースがその空いている場所にスライドします。この操作を続け、ピースがその数の順に上から下、左から右に並ぶようにしてください。" -} -msg.pack('side'=>'top') - -# frame 生成 -TkFrame.new($puzzle_demo) {|frame| - TkButton.new(frame) { - #text '了解' - text '閉じる' - command proc{ - tmppath = $puzzle_demo - $puzzle_demo = nil - tmppath.destroy - } - }.pack('side'=>'left', 'expand'=>'yes') - - TkButton.new(frame) { - text 'コード参照' - command proc{showCode 'puzzle'} - }.pack('side'=>'left', 'expand'=>'yes') - -}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m') - -# frame 生成 -# -# Special trick: scrollbar widget を生成してその trough color を用いることで -# 空白部分のための暗色を選択し,設定する -# -begin - if Tk.windowingsystem() == 'aqua' - frameSize = 160 - else - frameSize = 120 - end -rescue - frameSize = 120 -end - -s = TkScrollbar.new($puzzle_demo) -base = TkFrame.new($puzzle_demo) { - width frameSize - height frameSize - borderwidth 2 - relief 'sunken' - bg s['troughcolor'] -} -s.destroy -base.pack('side'=>'top', 'padx'=>'1c', 'pady'=>'1c') - -# proc のスコープを閉じるため,proc 生成メソッドを用意 -# こうしておかねば,ループ中で値が変化する num の影響を受けて -# puzzleSwitch の第 2 引数が変化してしまい,期待通りにはならない. -def def_puzzleswitch_proc(w, num) - proc{puzzleSwitch w, num} -end - -$xpos = {} -$ypos = {} -order = [3,1,6,2,5,7,15,13,4,11,8,9,14,10,12] -(0..14).each{|i| - num = order[i] - $xpos[num] = (i % 4) * 0.25 - $ypos[num] = (i / 4) * 0.25 - TkButton.new(base) {|w| - relief 'raised' - text num - highlightthickness 0 - command def_puzzleswitch_proc(w, num) - }.place('relx'=>$xpos[num], 'rely'=>$ypos[num], - 'relwidth'=>0.25, 'relheight'=>0.25) -} -$xpos['space'] = 0.75 -$ypos['space'] = 0.75 - -############ -def puzzleSwitch(w, num) - if ( ($ypos[num] >= ($ypos['space'] - 0.01)) \ - && ($ypos[num] <= ($ypos['space'] + 0.01)) \ - && ($xpos[num] >= ($xpos['space'] - 0.26)) \ - && ($xpos[num] <= ($xpos['space'] + 0.26))) \ - || (($xpos[num] >= ($xpos['space'] - 0.01)) \ - && ($xpos[num] <= ($xpos['space'] + 0.01)) \ - && ($ypos[num] >= ($ypos['space'] - 0.26)) \ - && ($ypos[num] <= ($ypos['space'] + 0.26))) - tmp = $xpos['space'] - $xpos['space'] = $xpos[num] - $xpos[num] = tmp - tmp = $ypos['space'] - $ypos['space'] = $ypos[num] - $ypos[num] = tmp - w.place('relx'=>$xpos[num], 'rely'=>$ypos[num]) - end -end - |