pythonのユーティリティ・プログラム 2020冬 の #term_ut.py に色々機能を追加してみたので、 サンプルがてら作ってみました。
娘の雑誌にも付録でついた、いわゆるコレです。
当然ながら kon_ut を使用してます。
kon_pageのpythonモジュールのインストール の手順でどこかに置いて、kon_page.pth でパスを通しておきましょう。;-p)
$ ./slide_game.py -h Usage: ./slide_game.py [-h] [n] n: default 5
$ ./slide_game.py
起動すると、しばらくシャッフルしてから止まります。
矢印キーで空いてる箇所に隣接するコマを、その方向に移動します。
整って完成したかどうかの判定はありません。;-p)
qキーで終了します。
nの指定は9まで。省略すると5です。
chip = empty.new( w=4, h=2 ) (w, h) = ( chip.w * n, chip.h * n ) buff = term.buff_new( w, h ) arr = list( map( f_y, range( n ) ) ) nn = empty.new( x=n-1, y=n-1 )
buffがterm_utの画面バッファです。
arr[ y ][ x ]にx, yの位置にあるコマのラベルの整数が入ってます。
( nn.x, nn.y ) がコマが抜けてる位置です。
def put_chip(x, y, dx=0, dy=0, i=0):
x, yのコマの位置にiの整数のラベルのコマを、 画面バッファに描画します。
バッファに描画するだけで、実際の画面にはまだ反映しません。
iを省略すると、arr[ y ][ x ] を参照して、現在の内容を使用します。
dx, dyは移動途中の描画用です。
コマの正規の位置からのズレ分を、画面の文字の単位で指定します。
def swap(dx, dy, sec=0.1):
コマが抜けてる箇所の近隣のコマから、dx, dy方向に動かせるコマを動かします。
バッファに描画した後、実際の画面に反映します。
動かすアニメーションの1コマ秒数をsecで指定します。