質問編集履歴
6
メイン処理をクリックイベントに修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -156,13 +156,9 @@
|
|
156
156
|
|
157
157
|
$(function(){
|
158
158
|
|
159
|
+
|
160
|
+
|
159
|
-
|
161
|
+
$('li').click(function() {
|
160
|
-
|
161
|
-
main();
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
function main() {
|
166
162
|
|
167
163
|
// 選択された箇所のx座標、y座標を取得
|
168
164
|
|
5
if文の構文修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -186,7 +186,7 @@
|
|
186
186
|
|
187
187
|
*/
|
188
188
|
|
189
|
-
if isErrorPutStone() { return; }
|
189
|
+
if (isErrorPutStone()) { return; }
|
190
190
|
|
191
191
|
|
192
192
|
|
4
ロジックの具体例を加筆
test
CHANGED
File without changes
|
test
CHANGED
@@ -124,7 +124,7 @@
|
|
124
124
|
|
125
125
|
~~**「いやいや、それって単に`isCheckedProcessA`を`processA`に入れただけやんけ!」**~~
|
126
126
|
|
127
|
-
~~ってなってます(´・ω・
|
127
|
+
~~ってなってます(´・ω・)~~
|
128
128
|
|
129
129
|
→**「メイン処理とチェック処理を本来分けてたものを、一緒のメソッドに入れると分かりにくそう」**
|
130
130
|
|
@@ -139,3 +139,97 @@
|
|
139
139
|
|
140
140
|
|
141
141
|
ご教示のほど、よろしくお願いいたします。
|
142
|
+
|
143
|
+
|
144
|
+
|
145
|
+
---
|
146
|
+
|
147
|
+
▽以下、修正&加筆:
|
148
|
+
|
149
|
+
|
150
|
+
|
151
|
+
具体例に関して、修正依頼をいただきましたので、加筆いたします。
|
152
|
+
|
153
|
+
実際に、オセロのプログラムを組んでいてこの問題に直面しているため、それを例として挙げます。
|
154
|
+
|
155
|
+
```JavaScript
|
156
|
+
|
157
|
+
$(function(){
|
158
|
+
|
159
|
+
// メイン処理
|
160
|
+
|
161
|
+
main();
|
162
|
+
|
163
|
+
|
164
|
+
|
165
|
+
function main() {
|
166
|
+
|
167
|
+
// 選択された箇所のx座標、y座標を取得
|
168
|
+
|
169
|
+
var y = getPutY();
|
170
|
+
|
171
|
+
var x = getPutX();
|
172
|
+
|
173
|
+
|
174
|
+
|
175
|
+
// 相手の石がひっくり返せる座標を取得
|
176
|
+
|
177
|
+
getReversibleCoordinate();
|
178
|
+
|
179
|
+
|
180
|
+
|
181
|
+
/**
|
182
|
+
|
183
|
+
* ここでチェック処理を入れないと、相手の石がひっくり返せなくても
|
184
|
+
|
185
|
+
* 自分の石が置けたり、手番が交代したりしてしまいます。
|
186
|
+
|
187
|
+
*/
|
188
|
+
|
189
|
+
if isErrorPutStone() { return; }
|
190
|
+
|
191
|
+
|
192
|
+
|
193
|
+
// 選択箇所に自分の石を置く
|
194
|
+
|
195
|
+
putStone(y, x);
|
196
|
+
|
197
|
+
|
198
|
+
|
199
|
+
// 相手の石をひっくり返す
|
200
|
+
|
201
|
+
reversibleEnemyStone();
|
202
|
+
|
203
|
+
|
204
|
+
|
205
|
+
// 手番を交代する
|
206
|
+
|
207
|
+
turnChange();
|
208
|
+
|
209
|
+
}
|
210
|
+
|
211
|
+
|
212
|
+
|
213
|
+
function getReversibleCoordinate() {
|
214
|
+
|
215
|
+
// 相手の石がひっくり返せる座標を取得
|
216
|
+
|
217
|
+
}
|
218
|
+
|
219
|
+
|
220
|
+
|
221
|
+
function isErrorPutStone() {
|
222
|
+
|
223
|
+
// 相手の石がひっくり返せる座標を取得できなかった場合を検証
|
224
|
+
|
225
|
+
// 自分の石が置けなかった場合を検証
|
226
|
+
|
227
|
+
}
|
228
|
+
|
229
|
+
});
|
230
|
+
|
231
|
+
```
|
232
|
+
|
233
|
+
……なんだか、元の質問とは別の部分を指摘されそうですが。。
|
234
|
+
|
235
|
+
ロジックの組み方に関して、ツッコミ所があれば、ご指摘いただけると助かります(´・ω・)
|
3
文言の修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -122,9 +122,13 @@
|
|
122
122
|
|
123
123
|
```
|
124
124
|
|
125
|
-
**「いやいや、それって単に`isCheckedProcessA`を`processA`に入れただけやんけ!」**
|
125
|
+
~~**「いやいや、それって単に`isCheckedProcessA`を`processA`に入れただけやんけ!」**~~
|
126
126
|
|
127
|
+
~~ってなってます(´・ω・`)~~
|
128
|
+
|
129
|
+
→**「メイン処理とチェック処理を本来分けてたものを、一緒のメソッドに入れると分かりにくそう」**
|
130
|
+
|
127
|
-
ってなってます(´・ω・
|
131
|
+
ってなってます(´・ω・)
|
128
132
|
|
129
133
|
|
130
134
|
|
2
文言の修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -112,13 +112,11 @@
|
|
112
112
|
|
113
113
|
function processA() {
|
114
114
|
|
115
|
-
|
115
|
+
// 本来のprocessAの処理
|
116
116
|
|
117
|
-
|
117
|
+
// ……
|
118
118
|
|
119
|
-
// ……
|
120
|
-
|
121
|
-
|
119
|
+
// isCheckedProcessAの処理
|
122
120
|
|
123
121
|
}
|
124
122
|
|
1
具体例を加筆、文言の修正等
test
CHANGED
File without changes
|
test
CHANGED
@@ -100,11 +100,31 @@
|
|
100
100
|
|
101
101
|
これだとすっきりするんですけど、「じゃあどこでチェック処理やるの?」と考えたとき、
|
102
102
|
|
103
|
-
例えば`processA`中
|
103
|
+
例えば`processA`処理中にエラーが発生した場合、`processA`の処理中で例外を飛ばすくらいしか
|
104
|
+
|
105
|
+
解決策が今のところ思い付きません……
|
104
106
|
|
105
107
|
|
106
108
|
|
109
|
+
▽`processA`のメソッド内のイメージ
|
110
|
+
|
111
|
+
```JavaScript
|
112
|
+
|
113
|
+
function processA() {
|
114
|
+
|
115
|
+
try {
|
116
|
+
|
117
|
+
// 本来のprocessAの処理
|
118
|
+
|
119
|
+
// ……
|
120
|
+
|
121
|
+
// isCheckedProcessAの処理;
|
122
|
+
|
123
|
+
}
|
124
|
+
|
125
|
+
```
|
126
|
+
|
107
|
-
**「いやいや、それって単に`isCheckedProcessA
|
127
|
+
**「いやいや、それって単に`isCheckedProcessA`を`processA`に入れただけやんけ!」**
|
108
128
|
|
109
129
|
ってなってます(´・ω・`)
|
110
130
|
|