터미널에 Matrix가 내려오는 Hack
1. 터미널에 눈을 내리는 스크립트라는 것이 있다고 합니다.
쉘
ruby -e 'C=`stty size`.scan(/\d+/)[1].to_i;S=["2743".to_i(16)].pack("U*");a={};puts "\033[2J";loop{a[rand(C)]=0;a.each{|x,o|;a[x]+=1;print "\033[#{o};#{x}H \033[#{a[x]};#{x}H#{S} \033[0;0H"};$stdout.flush;sleep 0.1}'
2. 실행하면 이렇게 된다
※ 재료 원은 여기에 코멘트란인 것 같습니다
3. 루비 부분을 꺼내 읽기 쉽고 리팩터 해 보았습니다.
루비
width = `stty size`.split(' ').last.to_i
positions = {}
puts "\033[2J" # clear screen
loop do
positions[rand(width)] = 0
positions.each { |column, row|
print "\033[#{row};#{column}H " # erase snow
positions[column] += 1
print "\033[#{positions[column]};#{column}H❃" # draw snow
}
sleep 0.1
end
4. 에서, 개조하고 싶어졌습니다
루비
width = `stty size`.split(' ').last.to_i
positions = {}
print "\033[40m\033[32m" # black and green
puts "\033[2J" # clear screen
loop do
positions[rand(width)] = 0
positions.each { |column, row|
positions[column] += 1
print "\033[#{positions[column]};#{column}H#{[*' '..'z', *'ヲ'..'ン'].sample}"
}
sleep 0.1
end
5. 원라인으로 되돌리자
쉘
ruby -e 'w=`stty size`.split(" ").last.to_i;p={};print"\033[40m\033[32m\033[2J";loop{;p[rand(w)]=0;p.each{|c,r|;p[c]+=1;s=[*" ".."z",*"ヲ".."ン"].sample;print"\033[#{p[c]};#{c}H#{s}";};sleep 0.1}'
6. 실행하면 이렇게 됩니다.
7. 정리
타이틀은 일부러 어색해 보았습니다. 낚시입니다 😐
8. 덤
눈을 다중 스크롤화해 보았습니다. 터미널을 전체 화면으로 만든 다음 실행해보십시오
쉘
ruby -e 'puts "\033[2J";Y,X=`stty size`.split(" ").map(&:to_i);z={"."=>1,"*"=>2,"❃"=>3};a=[];loop{a<<[rand(X),0,z.keys.sample];a.map{|b|;print "\033[#{b[1]};#{b[0]}H ";b[0]+=rand(3)-1;b[1]+=z[b[2]];print "\033[#{b[1]};#{b[0]}H#{b[2]}";b};a.reject!{|b|b[1]>Y};$stdout.flush;sleep 0.1}'
실행하면 이렇게
코드는 이렇게
루비
height, width = `stty size`.split(' ').map(&:to_i)
z = { '.' => 1, '*' => 2, '❃' => 3 }
positions = []
puts "\033[2J" # clear screen
loop do
positions << { x: rand(width), y: 0, z: z.keys.sample, i: 0 }
positions.map { |position|
print "\033[#{position[:y]};#{position[:x]}H " # erase snow
position[:x] += rand(3) - 1
position[:y] += z[position[:z]]
print "\033[#{position[:y]};#{position[:x]}H#{position[:z]}" # draw snow
position
}
positions.reject! { |snow| snow[:y] > height }
sleep 0.1
end
Reference
이 문제에 관하여(터미널에 Matrix가 내려오는 Hack), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/m-kubo/items/0f45b1040b2cc09d3ba8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)