Last active
February 18, 2020 16:51
-
-
Save tompng/0a7d258a605ef1191843f0053078cce8 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 制御文字 | |
"\e[#{x};#{y}H" # カーソル位置移動 | |
"\e[J" # カーソルより下をクリア(多分) | |
"\e[K" # カーソルより右をクリア(多分) | |
"\e[#{color}m" # 文字色・背景色etc | |
# 画面を消さずに上書きすればターミナルがどのタイミングでレンダリングしてもチラつかない(ただしカーソルはいろんなところに飛ぶ) | |
loop do | |
$> << "\e[1;1H" | |
40.times { puts 'a' * 80 + rand.to_s } | |
# 40.times { puts 'a' * 80 + rand.to_s + "\e[K" } # 行クリア使うのも良さそう | |
end | |
# 画面クリアすると、描画タイミング次第ですごくチラつく | |
loop do | |
$> << "\e[1;1H\e[J" | |
40.times { puts 'a' * 80 + rand.to_s } | |
end | |
# 1フレーム分を1回で出力するとチラつきが多少減る(ターミナルがreadpartial的なことをしてるなら、中途半端な状態を描画しにくくなる) | |
loop do | |
lines = 40.times.map { 'a' * 80 + rand.to_s } | |
$> << "\e[1;1H\e[J" + lines.join("\n") | |
end | |
# sleepも挟むとほとんどチラつかない(ターミナルがsleepのタイミングで描画してくれればチラつかないので) | |
loop do | |
lines = 40.times.map { 'a' * 80 + rand.to_s } | |
$> << "\e[1;1H\e[J" + lines.join("\n") | |
sleep 0.01 | |
end | |
# 色をつけるとチラつきやすくなる(ターミナル.app側の描画が重くなってフレームレートガタ落ち(他のターミナルソフトはどうか知らない) 僕が動くアスキーアートで色あんまり使ってない理由) | |
# 色を使うのが悪いんじゃなく、色の切り替えが多いのが悪いっぽい | |
loop do | |
lines = 40.times.map do | |
80.times.map { "\e[#{rand(30..39)}ma" }.join + rand.to_s | |
end | |
$> << "\e[1;1H\e[J" + lines.join("\n") | |
sleep 0.01 | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment