質問編集履歴

6

メイン処理をクリックイベントに修正

2018/01/03 15:17

投稿

退会済みユーザー
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文の構文修正

2018/01/03 15:17

投稿

退会済みユーザー
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

ロジックの具体例を加筆

2018/01/03 15:03

投稿

退会済みユーザー
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

文言の修正

2018/01/03 14:45

投稿

退会済みユーザー
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

文言の修正

2018/01/03 06:16

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -112,13 +112,11 @@
112
112
 
113
113
  function processA() {
114
114
 
115
- try {
115
+ // 本来のprocessAの処理
116
116
 
117
- // 本来のprocessAの処理
117
+ // ……
118
118
 
119
- // ……
120
-
121
- // isCheckedProcessAの処理;
119
+ // isCheckedProcessAの処理
122
120
 
123
121
  }
124
122
 

1

具体例を加筆、文言の修正等

2018/01/03 06:10

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -100,11 +100,31 @@
100
100
 
101
101
  これだとすっきりするんですけど、「じゃあどこでチェック処理やるの?」と考えたとき、
102
102
 
103
- 例えば`processA`中エラーが発生した場合、`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()`を`processA()`に入れただけやんけ!」**
127
+ **「いやいや、それって単に`isCheckedProcessA`を`processA`に入れただけやんけ!」**
108
128
 
109
129
  ってなってます(´・ω・`)
110
130