質問: **一つ** 以下で挙げたように、時々刻々と繰り返しのアウトプットをする関数を作ったとします。その出力結果を毎回上書きして表示させることはできますか? つまりPythonの出力ログだと縦に結果が表示されますが、自分がやりたいのはインベーダーゲームの、敵キャラみたいな感じで、光線が伸びていくような表示にしたいのです。どうすればよいでしょうか? **二つ** 仮にこのモジュールを一体の敵と見立てた時に、インベーダーゲームというからには画面には複数の敵が欲しいです。 行ごとにモジュールを配置して、同じ画面内に表示しつつ、独立に動かすことは可能ですか?それはどのようなコードでしょうか 資料映像:スペースインベーダー (YouTube) ``` import time def Enemy(): enemy=[["@","*"],["@","-","*"],["@","-","-","*"],["@","-","-","-","*"],["@","-","-","-","-","*"],["@","-","-","-","-","-","*"]] N=0 while True: time.sleep(4) print(enemy[N]) N=(N+1)%6 Enemy() ```
回答: > > 一つ > > 以下で挙げたように、時々刻々と繰り返しのアウトプットをする関数を作ったとします。その出力結果を毎回上書きして表示させることはできますか? > > > エスケープシーケンスを解する端末で実行するなら、以下のコードで上書き表示できます。 ``` print('\x1b[1;1H', end='') #カーソルを1行1桁目に設定 print('\x1b[2K', end='') #行末までクリア print(enemy[N]) ``` 本格的にプログラミングするのであればCursesを使う方がよいでしょう。 Python で Curses プログラミング ※リンク先は`https://docs.python.org/ja/3/howto/curses.html`です。 > > 二つ > > 仮にこのモジュールを一体の敵と見立てた時に、インベーダーゲームというからには画面には複数の敵が欲しいです。 > > 行ごとにモジュールを配置して、同じ画面内に表示しつつ、独立に動かすことは可能ですか?それはどのようなコードでしょうか > > > カーソル(文字列の表示開始位置)を移動して描画することを繰り返せば、できなくはないと思いますが、きっと大変です。