require 'tk' $root = TkRoot.new(:title => "Гра Баше (основний варіант)",:width=>400,:height=>300) Tk.root.bind( TkVirtualEvent.new('Control-c', 'Control-q'), proc{Tk.exit}) l1 = TkLabel.new { text "Правила гри. У початковий момент в купці є n предметів.\n Два гравці по черзі забирають з цієї купки предмети — \n від 1 до p включно, де 1 < p. Переможцем вважають того,\n хто зробить останній хід" grid('row'=>0, 'column'=>0, 'columnspan'=> 3) } l2 = TkLabel.new{ text "" grid('row'=>1, 'column'=>0, 'columnspan'=> 3)} l3 = TkLabel.new { text "Забрати предметів" grid('row'=>2, 'column'=>0) } e = TkEntry.new { width 3 background "#ffffff" grid('row'=>2, 'column'=>1) } b = TkButton.new { text "Почати гру" grid('row'=>2, 'column'=>2) } # 2 Опис вікон повідомлень def inf(s) m = Tk.messageBox ({ 'icon' =>'info', 'message'=> s, 'title' =>'Гра Баше', 'type' =>'ok' }) end def err(s) m = Tk.messageBox ({ 'icon' =>'error', 'message'=> s, 'title' =>'Гра Баше', 'type' =>'ok' }) end # 2 Кінець # 3 Обробник події натискання кнопки b.bind("ButtonPress") { # 4 Опрацювання події натискання кнопки з написом; "Почати гру" if (b.text=="Почати гру") $n = rand(10..20) $p = rand(2..9) b.text = "Хід першого гравця" l2.text = "Поточна кількість предметів: "+$n.to_s+", p = "+$p.to_s end # 4 Кінець # 5 Опрацювання події натискання кнопки з написом: "Хід першого гравця" if ((b.text=="Хід першого гравця") && (e.get != "")) if ((e.get.count "0123456789") == e.get.size) # якщо поле введення містить лише цифри k = e.get.to_i if ($n