JAVAページののぐらむ

ののぐらむ(お絵描きロジック)

ドキュメント(かなぁ)


そろそろ、自分でも訳が分からなくなりそうなので、ここにプログラムのメ モを書いておくことにした。プログラムを読むのに役に立つかどうかは保証し ないが、どうにでもしてくれ!


class NonogramApplet extends Applet
アプレットはボタンだけからなる。
このボタンを押すと、ブラウザとは別にフレームが開く。
実際のパズルは、この別に開くフレーム内に存在する。

class Problem
問題がパラメータで与えられたとき、フレームを開く前に事前に読み込んで 溜めておくためのクラス。
プレイパネルに問題を表示するときに、この中のデータを用いて、表示を行 なう。

(注意点) 2次元の配列を使っている。通常の配列と違い、次のようにしている。

	int	vlines[][];
	int	hlines[][];
	‥‥‥‥‥
	vlines = new int[width][0];	// とりあえず確保
	hlines = new int[height][0];
	‥‥‥‥‥
	vlines[idx] = new int[valn];
	hlines[y] = new int[valn];
つまり、配列の各成分の長さが違う2次元配列である。

class Nonogram extends Frame
これが、アプレットのボタンを押したときに開くフレーム。
	Nonogram            (Frame -- BorderLayout)
	  +-- MenuBar
	  +-- centerPanel   (Panel -- CardLayout)
	         + CheatPanel  解いてもらうパネル
	         + MakePanel   問題作成パネル
	         + PlayPanel   お遊びパネル
	  +-- copyright
  

class SizeFrame extends Frame
サイズダイアログ

abstract class CommonPanel extends Panel
CheatPanel と PlayPanel の共通部分

class PlayCanvas extends Canvas
GridBagLayoutの使用。
5x5のGridBagLayoutを使用。
	GridBagLayout		gbl;
	GridBagConstraints	gbc;
             ‥‥‥‥‥‥
	// レイアウトの設定
	gbl.columnWidths = new int[5];
	gbl.rowHeights   = new int[5];
	gbl.columnWidths[1] = gbl.columnWidths[3] = gap; 
	gbl.rowHeights[1]   = gbl.rowHeights[3]   = gap;
	gbc.gridwidth = gbc.gridheight = 1;

                    +-----------------------------------+ 
                    |                                   |
                    |          [2][0]                   |
                    |                                   |
                    +-----------------------------------+ 

        +-------+   +-----------------------------------+  +-+ 
        |       |   |                                   |  | |
        |       |   |                                   |  | |
        |       |   |                                   |  | |
        |       |   |                                   |  | |
        |       |   |                                   |  | |
        |[0][2] |   |           [2][2]                  |  | |
        |       |   |                                   |  | |
        |       |   |                                   |  | |
        |       |   |                                   |  | |
        |       |   |                                   |  | |
        |       |   |                                   |  | |
        |       |   |                                   |  | |
        |       |   |                                   |  | |
        +-------+   +-----------------------------------+  +-+ 

                    +-----------------------------------+ 
                    +-----------------------------------+ 
これを、すき間も含めて、設定する。
詳しくは、リスト参照のこと。
「垂直(上)ヒントテーブル」と「水平(左)ヒントテーブル」によって、 サイズが決定していく。
他は、これにしたがって、勝手に変形するようになっている。


面倒だから、今日はもうおしまい。(11/23)


JAVAページののぐらむ