メディア情報学レポート

プログラム

ソースファイルはこちら。

内容

このプログラムは、SamplePanel.javaをもとに変更を加えて作成した。変更した、 あるいは新規に作成した主な関数について、以下で説明する。

open(変更)

スリザーリンクのウインドウが開いたときに、この関数が呼ばれる。この中で、 格子点・数字の情報をストロークの集合を表す変数strokesに入れ、関数paint_main により表示させている。

paint_main(変更)

線を引くなどの動作が終わったときなどに、この関数が呼ばれる。現在の盤面の状況を 保持する配列current_statusを読み込み、盤面の更新を行う。

finish_stroke(変更)

線を引き終わったとき、線の特徴により、異なった動作を行う。線は、以下の5つの どれかに分類され、処理が行われる。5つのどれにも合致しない場合、何も処理は 行われない。

  1. 直線で、盤面の左上端から右下端(あるいは右上端から左下端)に長い直線が 引かれた場合 … 盤面が初期化される。

  2. 直線で、長さが格子サイズの3/4〜3/2のとき … それに近い格子点間に直線が 引かれる。

  3. 直線で、長さが格子サイズの2/3以下のとき … 既に引かれた線を横切って いるとき、その線を消去する。

  4. 小さい円で、中心が格子間を結ぶ線分上に十分近いとき … その線分に チェックを入れる。

  5. 線の長さが格子サイズの7/4以上のとき … その線分に沿って線を引いていく

close(変更)

スリザーリンクのウインドウを閉じるとき、盤面の現在の状況を、大きなウインドウ 上にそのまま残す。

neighbor,neighbore(新規)

現在の座標に最も近い格子点(neighbor)、あるいは格子線上の点(neighbore)を返す。

起動方法

SlitherPanel.classをtoolsフォルダに入れ、run.batを実行する。起動後、右クリックすると"SlitherLink Panel"という項目が加わっているので、それを選べば良い。

使い方

盤面は下のようになっている。

盤面

線を引く。

線を引く 線を引いた結果

線を消す。

線を消す 線を消した結果

チェックをつける。

チェックをつける チェックをつけた結果

盤面を初期化する。

初期化する

クリアすると、線が赤になる。

クリアした

ユーザテスト

得られた意見を以下に列挙する。

感想

私は研究の合間にWWW上のパズルサイトで時間をつぶすことがよくあるが、紙と鉛筆を 用意しなくていい利点はあるものの、「クリックする」というインタフェースに対して 不満を感じていた。そこでペンを使用するという課題が出たときに、それぞれの 利点を生かし、欠点を解消したものを作ろうと思った。

結果、描画のぎこちなさ、ペンの感触の固さなど、違和感を感じることもあったもの の、今後ペンというデバイスがメジャーになっていくとの確信を、今回の課題を通して 得ることができた。そして、今後ハードウェア面で、より紙と変わらない感触を達成 できることを期待したい。


index (
English | Japanese) > misc > mediainfo
NAKAYAMA Hiroki, nak-den is s u-tokyo ac jp