# 16. Створити обробник події натискання лівої кнопки миші ігровому полі on :mouse_down do |e| k = e.x/w+1 j = e.y/w+1 # Tk.messageBox ({ # 'icon' =>'info', # 'message'=>'Клацнули по клітині у рядку '+j.to_s+' і стовпчику '+k.to_s, # 'title' =>'Гра «Сапер»', # 'type' =>'ok' # }) # 17. Описати список кольорів і символів для відкритих клітин, шлях до шрифту c = ["#eeeeee", # білий колір "#0000ee", # синій колір "#008800", # зелений колір "#daa520", # золотарний колір goldenrod "#800080", # фіолетовий колір "#ee0000", # червоний колір "#808000", # оливковий колір "#4b0082", # колір індиго "#8b4513", # сідельно коричневий колір saddle brown "#808080"] # сірий колір - для невиявленої міни s = [" ","1","2","3","4","5","6","7","8","*"] sf= "/usr/share/fonts/truetype/ubuntu/Ubuntu-B.ttf" # шлях до шрифту # 18. Якщо клітину досі невідкрито… if (d[j][k]) d[j][k]=false; if (b[j][k]) # якщо клітина містить міну Square.new(x: (k-1)*w, y: (j-1)*w, size: w-2, color:'white') Text.new(s[9], x:(k-1)*w+w/4, y: (j-1)*w, size:24, font: sf, color: 'red') for j in (1..ny) for k in (1..nx) if (d[j][k]) d[j][k]=false Square.new(x:(k-1)*w, y:(j-1)*w, size:w-2, color:'white') Text.new(s[a[j][k]], x: (k-1)*w+w/4, y: (j-1)*w, size:24, font: sf, color: c[a[j][k]]) end end end Tk.messageBox ({ 'icon' =>'info', 'message'=>'Ви програли!', 'title' =>'Гра «Сапер»', 'type' =>'ok' }) t = Time.now update do if Time.now - t > 2 then exit end end elsif (a[j][k]==0) # якщо немає мін у сусідніх клітинах l=1 # кількість клітин, які потрібно відкрити l0=0 # кількість клітин з розглянутими сусідами u[0]=j v[0]=k while (l0'info', 'message'=>'Ви виграли!', 'title' =>'Гра «Сапер»', 'type' =>'ok' }) t = Time.now update do if Time.now - t > 2 then exit end end end else Square.new(x: (k-1)*w, y: (j-1)*w, size: w-1, color: 'white') Text.new(s[a[j][k]], x: (k-1)*w+w/4, y: (j-1)*w, size:24, font: sf, color: c[a[j][k]]) n -= 1 end if (n==0) for j in (1..ny) for k in (1..nx) if (d[j][k]) d[j][k]=false Square.new(x: (k-1)*w, y: (j-1)*w, size: w-2, color: 'white') Text.new(s[a[j][k]], x: (k-1)*w+w/4, y: (j-1)*w, size:24, font: sf, color: c[a[j][k]]) end end end Tk.messageBox ({ 'icon' =>'info', 'message'=>'Ви виграли!', 'title' =>'Гра «Сапер»', 'type' =>'ok' }) t = Time.now update do if Time.now - t > 2 then exit end end end end end