3269
コメント:
|
3213
|
削除された箇所はこのように表示されます。 | 追加された箇所はこのように表示されます。 |
行 62: | 行 62: |
行 64: | 行 63: |
行 66: | 行 64: |
行 68: | 行 65: |
行 70: | 行 66: |
行 72: | 行 67: |
行 74: | 行 68: |
行 76: | 行 69: |
行 78: | 行 70: |
行 80: | 行 71: |
行 82: | 行 72: |
行 84: | 行 73: |
行 86: | 行 74: |
行 88: | 行 75: |
行 91: | 行 77: |
行 94: | 行 78: |
行 96: | 行 79: |
行 98: | 行 80: |
行 100: | 行 81: |
行 102: | 行 82: |
行 104: | 行 83: |
行 106: | 行 84: |
行 108: | 行 85: |
行 110: | 行 86: |
行 112: | 行 87: |
行 114: | 行 88: |
行 116: | 行 89: |
盤の表現
整数型の2次元配列 ban で盤面の状態を表すことにします。
- 多次元配列を使う場合には、何番目の添え字が何に対応するかをしっかり考えておくこと。
ban[x][y]で左からx番目、上からy番目を表すとすると、盤の大きさが4×4の場合 配列と位置の対応はこのようになります。
ban[0][0]
ban[1][0]
ban[2][0]
ban[3][0]
ban[0][1]
ban[1][1]
ban[2][1]
ban[3][1]
ban[0][2]
ban[1][2]
ban[2][2]
ban[3][2]
ban[0][3]
ban[1][3]
ban[2][3]
ban[3][3]
この配列の要素の値で、各位置にどのピースが置かれているかを表します。
各ピースに番号をつけ、これを値として使うことにします。
- 番号は左上から0,1,2,...と図の順につけます。
- 右下が最後で15になります。
- 次の図と値が同じです。0と書いてあるピースの値は0。
16個のピースが図のとおりの位置にある場合、配列の各要素の値は次のようになります。
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
値と配列を対応させた表を示します。
ban[0][0]は0
ban[1][0]は1
ban[2][0]は2
ban[3][0]は3
ban[0][1]は4
ban[1][1]は5
ban[2][1]は6
ban[3][1]は7
ban[0][2]は8
ban[1][2]は9
ban[2][2]は10
ban[3][2]は11
ban[0][3]は12
ban[1][3]は13
ban[2][3]は14
ban[3][3]は15
配列の初期化
配列banはインスタンス変数として作成し初期化します。
初期化はどこで行うべきでしょうか。
次の方法が考えられます。
- コンストラクタ内で行う。
- 初期化を行うメソッドを別に用意し、その中で行う。
- 呼び出し側で行う。
いずれの方法をとるかは、次のことを考慮して決めます。
- インスタンス作成時に値が決まっているか
- インスタンス使用中に値は変わるか
- 初期化に手間がかかるか
- 別途値を指定することがあるか
今回は、初期化を行うメソッドを別に用意しその中で行うことにします。 初期化を行うメソッドはshokika()とし、コンストラクタから呼び出します。
プログラム
プログラムの一部を示します。
public class Game5 extends JPanel implements MouseListener { Image img; int cx, cy; int[][] ban; Game5() { ImageIcon ii = new ImageIcon("game0.png"); img = ii.getImage(); addMouseListener(this); ban = new int[4][4]; shokika(); } void shokika() { ban[0][0] = 0; ban[1][0] = 2; ban[2][0] = 3; ban[3][0] = 4; ban[0][1] = 5; ban[1][1] = 6; ... ... ban[2][3] = 14; ban[3][3] = 15; } ... ... }
演習
配列banの要素の値を
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
に初期化するために、 上の例では16個の代入文を使っていますが、 for文を使って簡潔に書き直しなさい。