ターミナルでMacの絵文字の時計を回す
前書き
ほんとは絵文字をそのままソースに入力してました
QiitaにMacの絵文字を書き込めないことが判明したので文字コードから変換する方法にしました
(変数名にも絵文字を使う頭おかしいソースで、けっこう好きでしたが)
時計を回す
ワンライナー
ruby -e 'clock=[*128336..128359].map{|c|c.chr("UTF-8")};clock=(clock[0..11].zip(clock[12..23])).flatten;10.times{clock.each{|time|print "Time flies like an arrow. #{time}\r";sleep 0.05}};puts'
ターミナルで絵文字を使うと後ろの文字列と重なるので、避けるには後ろに半角スペースを入れる
文字列の書き換え
ターミナル上の文字列を書き換えるには\b
か\r
でカーソルを移動して上書きする
\b
は半角1文字分、\r
は行頭にカーソルを戻す
改行されたらもう上書きする手段は無い(かも)
時計の絵文字について
時計の絵文字は24個ある
文字コード順に、最初の12個が0分ちょうどで、残りが30分のもの
まとめて使うには並べ替える
clocks_oclock = [*128336..128347].map{|c|c.chr("UTF-8")}
clocks_thirty = [*128348..128359].map{|c|c.chr("UTF-8")}
clocks = (clocks_oclock.zip(clocks_thirty)).flatten
分針は2種類しかないのに回ってるように見える気がするから不思議
ちなみによく見ると30分の表示でも時針は動いてないので、現実とちょっと違う
時針も動いてれば、もう少し滑らかに回ってる感じになったんではないかと
おまけ
月のやつ
ruby -e 'moon=[*127761..127768].map{|c|c.chr("UTF-8")};10.times{moon.each{|m|print "Fly me to the moon. #{m}\r";sleep 0.05}};puts'
ruby -e 'moon=[*127761..127768].map{|c|c.chr("UTF-8")};10.times{moon.each{|m|print "Fly me to the moon. #{m}\r";sleep 0.05}};puts'
月の絵文字は8個で並べ替える必要も無いので楽
記号で回転っぽいやつ
\|/-
を順番に表示すると回転してるっぽくなる
(環境によってはバックスラッシュが円記号に見えるかも)
ruby -e '10.times{%q!\|/-!.each_char{|c|print "Please wait... #{c}\r";sleep 0.05}};puts'
->)|(<-
を往復させると微生物っぽくてキモい
ruby -e '10.times{"->)|(<-".tap{|s|s<<s[1..-2].reverse}.each_char{|c|print "Please wait... #{c}\r";sleep 0.05}};puts'
参考
Node.js - CLIでプログレスバーみたいのを出力する - Qiita
unicode - RubyでIntegerと文字を相互変換する - Qiita
Author And Source
この問題について(ターミナルでMacの絵文字の時計を回す), 我々は、より多くの情報をここで見つけました https://qiita.com/zakuroishikuro/items/228e7120cd43de66692e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .