スライドゲーム

目次

pythonのユーティリティ・プログラム 2020冬#term_ut.py に色々機能を追加してみたので、 サンプルがてら作ってみました。

娘の雑誌にも付録でついた、いわゆるコレです。


ソースコード

slide_game.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 ) がコマが抜けてる位置です。

put_chip()

def put_chip(x, y, dx=0, dy=0, i=0):

x, yのコマの位置にiの整数のラベルのコマを、 画面バッファに描画します。

バッファに描画するだけで、実際の画面にはまだ反映しません。

iを省略すると、arr[ y ][ x ] を参照して、現在の内容を使用します。

dx, dyは移動途中の描画用です。

コマの正規の位置からのズレ分を、画面の文字の単位で指定します。

swap()

def swap(dx, dy, sec=0.1):

コマが抜けてる箇所の近隣のコマから、dx, dy方向に動かせるコマを動かします。

バッファに描画した後、実際の画面に反映します。

動かすアニメーションの1コマ秒数をsecで指定します。