回答編集履歴
7
追記
test
CHANGED
File without changes
|
6
追記
test
CHANGED
@@ -158,12 +158,22 @@
|
|
158
158
|
|
159
159
|
|
160
160
|
|
161
|
-
|
161
|
+
動作確認してませんが、こんな感じに`start`メソッドを作ればよいのです。
|
162
162
|
|
163
163
|
```Java
|
164
164
|
|
165
|
-
i
|
165
|
+
public void start() {
|
166
166
|
|
167
|
+
for(int i=0; i<masu.length;i++) {
|
168
|
+
|
169
|
+
for(int j=0; j<masu[i].length; j++) {
|
170
|
+
|
167
|
-
masu[i][j] =r;
|
171
|
+
masu[i][j] = rnd.nextInt(2);
|
172
|
+
|
173
|
+
}
|
174
|
+
|
175
|
+
}
|
176
|
+
|
177
|
+
}
|
168
178
|
|
169
179
|
```
|
5
追記
test
CHANGED
@@ -143,3 +143,27 @@
|
|
143
143
|
|
144
144
|
|
145
145
|
そして再描画[repaint](https://www.javadrive.jp/applet/thread/index5.html)を呼び出します。
|
146
|
+
|
147
|
+
|
148
|
+
|
149
|
+
---
|
150
|
+
|
151
|
+
> repaintしてしまうと結局マスの色全部が変わってしまってテキストフィールドに入力した配列のマスの色のみを変えるということができないです…
|
152
|
+
|
153
|
+
|
154
|
+
|
155
|
+
どうして変わるのかをまず、考えてください。
|
156
|
+
|
157
|
+
答えを云うとこのページ[Applet 基本メソッド](https://www.javadrive.jp/applet/basic/index6.html)を見てくださいな。Appletの各イベントが呼ばれるタイミングが記載されています。
|
158
|
+
|
159
|
+
|
160
|
+
|
161
|
+
今、`paint`メソッドで行っている2次元配列の`masu`に値を設定している部分をループ毎**コピー**`start`メソッドにコピーすればいいです。
|
162
|
+
|
163
|
+
```Java
|
164
|
+
|
165
|
+
int r =rnd.nextInt(2);
|
166
|
+
|
167
|
+
masu[i][j] =r;
|
168
|
+
|
169
|
+
```
|
4
追記
test
CHANGED
@@ -123,3 +123,23 @@
|
|
123
123
|
// 後略
|
124
124
|
|
125
125
|
```
|
126
|
+
|
127
|
+
---
|
128
|
+
|
129
|
+
|
130
|
+
|
131
|
+
反転とはなにかをまず考えて
|
132
|
+
|
133
|
+
1 → 0
|
134
|
+
|
135
|
+
0 → 1
|
136
|
+
|
137
|
+
これをコードに記述すればいいのです。
|
138
|
+
|
139
|
+
|
140
|
+
|
141
|
+
ヒントは剰余演算子とインクリメント演算子
|
142
|
+
|
143
|
+
|
144
|
+
|
145
|
+
そして再描画[repaint](https://www.javadrive.jp/applet/thread/index5.html)を呼び出します。
|
3
追記
test
CHANGED
@@ -104,8 +104,22 @@
|
|
104
104
|
|
105
105
|
```Java
|
106
106
|
|
107
|
-
int r = new Random().nextInt(1);
|
107
|
+
int r = new Random().nextInt(1); // 指定した値が1のときにどーなるかーという話です。
|
108
108
|
|
109
109
|
int l = new Random().nextInt(1);
|
110
110
|
|
111
111
|
```
|
112
|
+
|
113
|
+
あと`Random`のインスタンスは`paint`メソッド直下で宣言してくださいな。
|
114
|
+
|
115
|
+
```Java
|
116
|
+
|
117
|
+
public void paint (Graphics g) {
|
118
|
+
|
119
|
+
final Random rnd = new Random(); // このように
|
120
|
+
|
121
|
+
for(int i=0; i<masu.length;i++) {
|
122
|
+
|
123
|
+
// 後略
|
124
|
+
|
125
|
+
```
|
2
追記
test
CHANGED
@@ -85,3 +85,27 @@
|
|
85
85
|
}
|
86
86
|
|
87
87
|
```
|
88
|
+
|
89
|
+
|
90
|
+
|
91
|
+
---
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
> 問題はvoid paint 内の部分でランダムに配列の中に0か1を入れたつもりなのですが実行してみると緑一色にしかならなくて困ってます。
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
そういう時はまず公式ドキュメントを確認します。[Random#nextInt](https://docs.oracle.com/javase/jp/8/docs/api/java/util/Random.html#nextInt-int-)
|
100
|
+
|
101
|
+
この乱数ジェネレータのシーケンスを使って、0から指定された値の範囲(0は含むが、**その指定された値は含まない**)で一様分布のint型の擬似乱数値を返します。
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
```Java
|
106
|
+
|
107
|
+
int r = new Random().nextInt(1);
|
108
|
+
|
109
|
+
int l = new Random().nextInt(1);
|
110
|
+
|
111
|
+
```
|
1
追記
test
CHANGED
@@ -46,7 +46,7 @@
|
|
46
46
|
|
47
47
|
以下は余談です。
|
48
48
|
|
49
|
-
配列の値を乱数値で埋めたい時は、[乱数を格納した配列を複数のクラスで共有したい。](https://teratail.com/questions/134955)で回答しましたが、[Random#ints](https://docs.oracle.com/javase/jp/8/docs/api/java/util/Random.html#ints-long-int-int-)が使えます。
|
49
|
+
1次元配列の値を生成した乱数値で埋めたい時は、[乱数を格納した配列を複数のクラスで共有したい。](https://teratail.com/questions/134955)で回答しましたが、[Random#ints](https://docs.oracle.com/javase/jp/8/docs/api/java/util/Random.html#ints-long-int-int-)が使えます。
|
50
50
|
|
51
51
|
ネットに出ているコードサンプルは`Java 1.8`リリース日(`2014年3月18日`)以前の古いコードが多いので、参考情報として書いておきます。
|
52
52
|
|