70204


**一つ**  
以下で挙げたように、時々刻々と繰り返しのアウトプットをする関数を作ったとします。その出力結果を毎回上書きして表示させることはできますか？  
つまりPythonの出力ログだと縦に結果が表示されますが、自分がやりたいのはインベーダーゲームの、敵キャラみたいな感じで、光線が伸びていくような表示にしたいのです。どうすればよいでしょうか？

**二つ**  
仮にこのモジュールを一体の敵と見立てた時に、インベーダーゲームというからには画面には複数の敵が欲しいです。  
行ごとにモジュールを配置して、同じ画面内に表示しつつ、独立に動かすことは可能ですか？それはどのようなコードでしょうか

資料映像：[スペースインベーダー (YouTube)](https://youtu.be/MLSSxLe_AFE)

[code]

    import time
    
    def Enemy():
        enemy=[["@","*"],["@","-","*"],["@","-","-","*"],["@","-","-","-","*"],["@","-","-","-","-","*"],["@","-","-","-","-","-","*"]]
    
        N=0
        while True:
            time.sleep(4)
            print(enemy[N])
            N=(N+1)%6
            
    Enemy()
    
[/code]


CC BY-SA 4.0
2020-09-05T21:52:37.063
70173
2020-09-07T15:07:13.090
2020-09-06T06:11:46.750
3060
41334
question
python python3
Pythonの出力の表示についてです


> 一つ  
>  以下で挙げたように、時々刻々と繰り返しのアウトプットをする関数を作ったとします。その出力結果を毎回上書きして表示させることはできますか？

エスケープシーケンスを解する端末で実行するなら、以下のコードで上書き表示できます。

[code]

            print('\x1b[1;1H', end='') #カーソルを1行1桁目に設定
            print('\x1b[2K', end='')   #行末までクリア
            print(enemy[N])
    
[/code]

本格的にプログラミングするのであればCursesを使う方がよいでしょう。  
[Python で Curses プログラミング](https://docs.python.org/ja/3/howto/curses.html)  
※リンク先は`https://docs.python.org/ja/3/howto/curses.html`です。

> 二つ  
>  仮にこのモジュールを一体の敵と見立てた時に、インベーダーゲームというからには画面には複数の敵が欲しいです。  
>  行ごとにモジュールを配置して、同じ画面内に表示しつつ、独立に動かすことは可能ですか？それはどのようなコードでしょうか

カーソル(文字列の表示開始位置)を移動して描画することを繰り返せば、できなくはないと思いますが、きっと大変です。


CC BY-SA 4.0
2020-09-07T15:07:13.090
70204
2020-09-07T15:07:13.090
35558
70173
answer