Pythonでsl

30分プログラム、その705。前にcursesみたいにターミナルの任意の位置にテキストを出す関数 - みずぴー日記cursesを使わずに端末の好きな位置に文字を出せるようになったので、slを作ってみました。
Perlで使っていた\eがPythonでは使えなかったので、hi_saitoさんが使っていた\033を使っています。

で、作ってから気がついたんですが、本物のslと違って煙がでません。まあ、クリーンなSLということで。

使い方

$ python sl.py
        ________                __________
_______/        \__I_I_____===__|_________
  |   H\________/ |   |        =|___ ___|      ________________
  |   H  |  |     |   |         ||_| |_||     _|                \_____
  |   H  |__--------------------| [___] |   =|
__|___H__/__|_____/[][]~\_______|       |   -|
-----------I_____I [][] []  D   |=======|____|________________________|
=-~~\  /~~\  /~~\  /~~\ ____Y___________|__|__________________________|
|    ||    ||    ||    |_____/~\___/         |_D__D__D_|  |_D__D__D_
 \__/  \__/  \__/  \__/      \_/              \_/   \_/    \_/   \_

ソースコード

import time

Data = """
      ====        ________                ___________
  _D _|  |_______/        \__I_I_____===__|_________|
   |(_)---  |   H\________/ |   |        =|___ ___|      _________________
   /     |  |   H  |  |     |   |         ||_| |_||     _|                \_____A
  |      |  |   H  |__--------------------| [___] |   =|                        |
  | ________|___H__/__|_____/[][]~\_______|       |   -|                        |
  |/ |   |-----------I_____I [][] []  D   |=======|____|________________________|_
__/ =| o |=-~~\  /~~\  /~~\  /~~\ ____Y___________|__|__________________________|_
 |/-=|___||    ||    ||    ||    |_____/~\___/         |_D__D__D_|  |_D__D__D_|
  \_/      \__/  \__/  \__/  \__/      \_/              \_/   \_/    \_/   \_/
""".split("\n")

def put(x,y,str):
  print "\033[%d;%dH%s\n" % (y,x,str) 

def clear():
  print "\033[2J"


for x in xrange(0,85):
  clear()
  for y in xrange(0,len(Data)):
    put(0,y,Data[y][x:-1])
  time.sleep(0.05)