この記事は?
ターミナル上で気軽にルーレットを楽しめるスクリプトを Ruby で実装します。
実装
roulette
#! /usr/bin/env ruby
def clear_line
print("\e[A\e[K")
end
def blink(item)
red, yellow = 31, 33
[red, yellow, red, yellow].each_with_index do |color, i|
if i > 0
sleep(0.2)
clear_line
end
puts("\e[#{color}m#{item}\e[0m")
end
end
# 実行中のスクリプトを Control+C で終了できるようにする。
Signal.trap(:INT) { exit }
items = ARGV
items.cycle.each_with_index do |item, i|
random_number = rand(items.length)
puts(item)
case i
when 0...20
sleep(0.1)
when 20...30
sleep(0.2)
when 30...(35 + random_number)
sleep(0.4)
else
sleep(0.4)
clear_line
blink(item)
break
end
clear_line
end
実行
$ chmod +x roulette
$ ./roulette むね もも ささみ せせり ぼんじり