IreneKnapp / oneko

An update of the classic digital kitten.
20 stars 6 forks source link
    oneko - Neko runs over the windows.
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

            Original program written by
                        Masayuki Koba
            Modified by
                Tatsuya Kato (kato@ntts.co.jp)
            Modified 20 years later by
                 Irene Knapp (ireneista@gmail.com)

以前、fj.sources に xneko という X Window 上で動く「猫」が投稿されてい ましたが、残念ながらこの「猫」は一つのウインドウを作ってそのウインドウ の中でマウスを追いかけて走り回るものでした。

そこで私が「猫をおりに閉じ込めておくのは可哀想じゃないか」と思い、画面 の上を縦横無尽に走り回るように改造してあげました。

その名も "oneko"。最初は 'oclock' の 'o' を取ったつもりだったのですが、 oclock って丸いから 'o' なんじゃなくて o'clock の 'o' ですよね。で、' o' のこじつけに "Neko runs Over the windows" の 'o' をつけました。(苦 しい)

# nとmは隣合わせのキーなのでくれぐれも間違って入力しないようにして # 下さい。

このプログラムを実行するには X Window System が必要です。X のバージョ ンは R3 または R4 ですが、R4 で採り入れられた Shape extention を使って いますので R3 で実行する場合はつまらない実行結果になってしまいます。 (Shape extention がなくてもコンパイルはできるようにしてあります。)

実行するマシンは Sun4/330 と、NCD のX端末でしか試してませんが、X端末 でははっきりいって遅いです。Sun のコンソールでやった時にはパラメータの 設定でかなりの速度まであげられるのですが ......。

お試しください。

<バージョンアップによる機能拡張>

◎ オプションはすべてリソースからも指定できるようになりました。ただし、 Xrm ライブラリ関数を使用せず、XGetDefault でリソースの取得を行なっ ています(X11R1 相当の機能)ので、アプリケーションデフォルト (/usr/lib/X11/app-default にあるファイル)でのリソース指定はまだで きません。

◎ NTTSOFT local で好評だった(?)とら猫にする機能を採り入れました。 実行時に

% oneko -tora

とすると猫の模様が変わります。

◎ 色の指定ができるようになりました。起動時のオプションで -fg, -bg を 指定して下さい。

◎ この猫は、寝ている時にねずみをゆっくり移動させると気づかずに寝て います。これは一定時間内にマウスの動いた距離がある値を越えなければ 気がつかないようになっているのですが、この「ある値」をオプションで 変えられるようにしました。デフォルトは6になっているのですが、

% oneko -idle 20

とすると「より鈍い」猫の出来上がりです。

◎ コンパイラに gcc を使うと動かないそうです。(私も確認した)このため 今度の Imakefile では強制的に cc でコンパイルするように指定していま す。

◎ Shape extention のライブラリがなくてもコンパイルできます。もしあな たの使用しているXが R4 ではなくて、かつ SONY NEWS ではない場合は Imakefile の

      DEFINES = -DSHAPE

という行を消して下さい。(NEWS で使えるかどうかは試してません。誰か 確認して下さい。)

<コンパイルの仕方>

  1. まず、この記事を unshar してソース一式を取り出してください。

  2. Makefile を作ります。oneko のディレクトリに移って、

% xmkmf

を実行してください。もし、このコマンドがなければ、

% imake -DUseInstalled -I/usr/lib/X11/config

でも同じです。

  1. make を実行します。

% make

これで、実行可能な「猫」が出来ます。もし、/usr/bin/X11 にいれて、みん なで使いたいのでしたら

make install

を(スーパユーザで)実行してください。

これでコンパイルは終了です。あとは、

% oneko &

を実行して楽しんでください :-)

<使用方法>

基本的にオプションはいりません。が、こんなおぷしょんもあります。 help を除くオプションはリソースからも変更できます。

-help オプションの help を表示します。

-tora 猫がとら猫に変わります。

-time 猫が使うインターバルタイマの値を変えます。デフォルトは micro second 単位で 125000 になっていますが、この値を 小さくするほど猫が速く動きます。

-speed 猫が一度に移動する距離をドットの数で指定します。デフォ ルトは 16 ですが、この値を大きくするほど猫が速く移動し ます。

-idle 猫が寝ている時、どれだけの速度でねずみが動いたら起きる のかを指定できます。デフォルトは 6 です。

-rv 色を反転します。(カラーのディスプレイでは fg, bg で指 定できるので、あんまり意味がありません。)

-noshape X の Shape Extension を使わずに実行します。速度はかな り速くなりますが、表示がつまらなくなります。(実際にやっ てみてください。)

-fg フォアグラウンドの色を指定します。モノクロームのディス プレイでは無視されてしまいます。

-bg バックグラウンドの色を指定します。モノクロームのディス プレイでは無視されてしまいます。

また、インストールすると tora にも symbolic link を張ります。tora とい うコマンド名で起動した時にはデフォルトで -tora オプションをつけた時と 同じになります。

リソースで指定した場合はこうです。

oneko.foreground: black oneko.background: red oneko.time: 100000 oneko.reverse: true

コマンドが oneko ではなく、tora という名前で起動された場合リソース名は tora.* になりますから

tora.foreground: sienna tora.background: moccasin

としてとら猫の設定と普通の猫の設定を別にすることも可能です。とら猫の色 はそのままでは白黒になってしまうので上の2行を resoerce にいれて下さい。

また、コマンド名でなくてクラス名("Oneko")で始まるリソースも読むよう にしました。ですから speed, time など、全ての猫に共通なリソースはクラ ス名で、猫の種類(普通の猫、とら猫)によって変えたい色などのリソースは コマンド名(インスタンス名)で指定するのがいいでしょう。

この辺の implement は始めから Xrm* を使えばよかったのですが、この関数 の存在を知らなかったので XGetDefault を使って「無理矢理」書いています。

<ばぐ、これからバージョンアップしたいところ>

複数の猫を同時に動かせるようにしたい。今のままでは oneko を2つ実行す ると同じ動きをするので重なってしまいます。(-speed や -time を変えて実 行するとそれなりに動いてくれますが。試してみて下さい。)

猫が走った後の領域に Expose が起きるので、kterm 等だとちらちらします。 Save Under も試してみましたが、遅くてやめてしまいました。何かいい方法 がないでしょうか?

カーソルがルートウィンドウの上と猫の上にある時にはネズミに変わりますが、 ネズミの色は単に猫の色を反転したものになっています。時間があれば直すの はすぐなのですが、急いだのでそのままになっています。バージョンアップを 期待していて下さい。

速度を早くしたい ...... けど、これ以上は無理かな? どなたか「こうした らもっと速くなる」という方法を教えて下さい。(近藤@ふ研 さんの提案し て下さった Map/Unmap を使った方法はまだ試してません。暇がなくって。)

仕事している時、猫を動かしていると時々猫にキー入力を邪魔されることがあ ります。キー入力を無視して下のウインドウに渡すことが出来るのでしょうか? (そういっている割には今のバージョンの猫はキーイベントを Select input しています。)

# 基本的にPDSですが、バグ修正や機能拡張は(こっそりでもいいですか # ら)私(kato@ntts.co.jp)に教えて下さいね。バージョンアップもするつ # もりです。