« ほりだしもの。 | トップページ | 小銭。 »

2005年5月28日 (土)

頭、下書き。

とりあえず動いてほしいので、頭が空っぽなのはいただけない。とはいっても入力メソッドの実装には時間がかかること請け合いなので、ここは簡単レベルの8x8を手入力で2次元配列に放り込んでおく。とおもったが、8つごと区切るのすらめんどくさいので1次配列。テンキー必須なので、一時的にタワーにて作業。

決定(未・済)と塗りつぶし(塗・空)を定数にしておく。これだけだと2ビットなので『ちまっ』といこうかと思ったのだが、ビットマスクするかもしれないのでintにする。どこぞでJavaのビット演算はintにキャストされると読んだ(ような気がした)ので。

とりあえず、体(Viewクラス)にゆうことをきかせるために縦横のサイズと、各格子(Cellと命名)の状態をやり取りするset・get・clickをpublicにしたのだが、setをpublicにするのは無謀なことに気づき、privateにし、さらに無意味なことに気づき、fill(塗りつぶし)とempty(空っぽ)にわけてclickから呼ばれるようにすることにする。体からの要求が少なければ少ないほど正しい判断が下せるのは人間の脳と同じ。夏にご用心である。

private void fill(int x, int y){}
private void empty(int x, int y) {}

ここまできて、各セルの情報が状態のほかに数字があったことを失念していたことに気づく。状態フラグに余裕がある(32ビット)ので重ねるかとも思ったが、試作段階で面倒はごめんなので独立させる。となるとC++なら構造体ですむところをJavaなのでCellクラスを作る必要に迫られる。言語の選択を誤ったか、とおもいつつも、内部クラスCellをスケスケ実装

private class Cell{
    int num = 0;
    int state = HitoriBrain.UNKNOWN;
}

し、1次配列のintをCellの2次配列に変更、コンストラクタで初期化のための2重ループ、各セルに数字をいれて、終了。

とおもったが、クリックも実装しておく。

public void click(int x, int y, int button){}

クリック左でfill、右でemptyを呼び出すだけ。座標はViewが論理座標に変換したものを受け取るようにする。

private void click(int x, int y, int button){
    switch(button){
        case MouseEvent.BUTTON1:
            this.fill(x,y);
    }
}

private void fill(int x, int y){
    this.cells[x][y].state = HitoriBrain.FILLED;
}

みたいなかんじでいけそう。

|

« ほりだしもの。 | トップページ | 小銭。 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/109403/4296076

この記事へのトラックバック一覧です: 頭、下書き。:

« ほりだしもの。 | トップページ | 小銭。 »