パックマンもどき(その2)

さて次はモンスター。 とりあえず移動する座標の様子を見ようかと...

$ cd pac
$ chmod +x pac.py
$ ./pac.py
  :

動きません...

python3 対応してなかったです。

パックマンもどき2017秋 側で v7 としてpython3対応しておきました。

rt_v54/pac.sh でも pac/v7.patch も取り込むように追加しておきました。

pac_dat.py から起動する pac.sh 取り込んだ pac/ 以下に対して、 pac_dat.py の後続の部分で、さらに座標取得用のパッチ pac_mon_pos_out.patch をあててます。

$ cat rt_v54/pac_mon_pos_out.patch 
--- pac-/pac.py	2018-06-22 23:16:20.000000000 +0900
+++ pac/pac.py	2018-06-22 23:57:37.000000000 +0900
@@ -3,6 +3,7 @@
 import sys
 import os
 import threading
+import time
 import kon
 from kon import dbg, DIRS, U, D, L, R, flush, has, set, get, mk_slst
 
@@ -384,7 +385,10 @@
 	(px, py) = arr.pos(c)
 	ds = next_ds(px, py, c)
 
+	pd = arr.get_dir(c)
 	d = sel_mon_way(c, px, py, ds)
+	if d != pd:
+		print( '{} {} {} {}'.format( c, px, py, time.time() ) )
 
 	(nx, ny) = step_to(px, py, d)
 	hz = get_hz(c, nx, ny, d)

モンスターが進行方向を変えるときに、4匹の種別、座標、時刻を表示するように追加してます。

v54.patch

$ mv rt_v53 rt_v54
$ cat v54.patch | ( cd rt_v54 ; patch -p1 )
$ cd rt_v54
$ make clean
$ make

と更新をかけておいて...

pac/ ディレクトリが残っている場合、一旦消去して作り直しましょう。

$ rm -rf pac/
$ ./pac_dat.py

ではモンスターの位置の記録をとってみます。

別の端末から netcat をポート番号55765で起動しておいて

$ nc -l 55765

元の端末に戻って、 pac.pyを実行してログを記録しつつ

$ cd pac/
$ chmod +x pac.py
$ ./pac.py -o | tee mon_pos.log

別の端末の表示を見ながら、 pac.py を起動してる端末でキー操作して、 パックマンが捕まらないようにしばらく頑張ります。

適当なところで ^C で停止。

$ head pac/mon_pos.log 
M 10 11 1529681094.597853
C 9 11 1529681094.5986428
R 10 9 1529681094.5993578
Y 11 11 1529681094.599862
M 9 11 1529681094.912523
Y 9 11 1529681095.226665
C 11 11 1529681095.2278469
M 11 11 1529681095.541323
R 13 9 1529681095.542732
C 9 11 1529681095.856386

$ tail mon_pos.log 
Y 9 11 1529681158.886328
M 11 11 1529681158.991439
R 15 11 1529681159.159253
C 9 11 1529681159.3906822
Y 11 11 1529681159.504234
M 9 11 1529681159.611448
C 11 11 1529681160.00626
Y 9 11 1529681160.122335
M 11 11 1529681160.229544
C 9 11 1529681160.622268

などと記録されてます。

の情報です。

一応logファイルもあげておきます。 mon_pos.log

で、さらにpac_dat.pyの後続で、pac/mon_pos.log が存在してると、 mons.yaml を生成するようにしておきました。 pac/mon_pos.log を用意できたら、もう一度 pac_dat.py を実行します。

$ cd ..
$ ./pac_dat.py

$ head mons.yaml 
mon_C:
- defs:
    xs: '[(9, 0.6292040348052979), (11, 0.6285390853881836), (9, 0.6274421215057373),
      (11, 0.6232919692993164), (9, 0.3125038146972656), (10, 0.6248950958251953),
      (10, 0.9374580383300781), (13, 1.8745570182800293), (13, 0.6261382102966309),
      (15, 1.2432618141174316), (15, 0.6202268600463867), (17, 0.6265089511871338),
      (17, 0.6279981136322021), (19, 0.6205649375915527), (19, 1.2482240200042725),
      (15, 1.2446250915527344), (15, 0.6205267906188965), (17, 0.6190931797027588),
      (17, 0.6223859786987305), (19, 0.6235358715057373), (19, 1.2452490329742432),
      (15, 1.2346971035003662), (15, 0.6242690086364746), (17, 0.6216671466827393),

この mons.yaml ファイルは mon.yaml からインクルードされて使われます。

そして、mon.yaml は pac.yaml から使うよう pac.yaml に記述を追加しておきました。

$ ./cg.py eyep=[0,0,0],[60,60,40],10 sec=20 yaml=pac.yaml data_name=all name=out_v54/pac_tst div=2 fps=4
  :
wh : 76800/76800(100.0%) : fin 7.88s
frm : 80/80(100.0%) : fin 15m 53.16s
estimated 7.94 hour at 640*480 30fps

$ ./cg.py eyep=[0,0,0],[60,60,40],10 sec=20 yaml=pac.yaml data_name=all name=out_v54/pac
  :
wh : 252563/307200(82.2%) : total 39.97s : rest 7.10s : 2018/06/23 10:02:22
wh : 307200/307200(100.0%) : fin 33.11s
frm : 600/600(100.0%) : fin 7h 31m 56.94s

$ ls -lt out_v54/ | head
-rw-r--r--  1 kondoh  staff   2226083  6 23 10:06 pac_4.mp4
-rw-r--r--  1 kondoh  staff   3134628  6 23 10:06 pac_3.mp4
-rw-r--r--  1 kondoh  staff   3142784  6 23 10:05 pac_2.mp4
-rw-r--r--  1 kondoh  staff   3143724  6 23 10:03 pac_1.mp4
-rw-r--r--  1 kondoh  staff  12627989  6 23 10:02 pac.mp4
  :

コースを仕切る円柱は細くしてみました。

懐かしいなぁ〜。学生の頃もちょうどこんな感じの視点移動でビデオでコマ録りしてました。

当時、機械科の先輩の小幡さんが、強力な編集機能のある高価なビデオデッキをお持ちだったので...

マスターのテープを元に分割画面表示にしたり、エフェクトをかけたり、 タイトル文字を入れてオープニングを作ってくれたりして、かっこよく仕立ててもらいました。

当時のテープはどこに消えたやら。あったとしても、もはや再生す機器もなく、、、ですね。