質問編集履歴

1

修正

2019/08/14 07:08

投稿

f_r
f_r

スコア4

test CHANGED
File without changes
test CHANGED
@@ -1,12 +1,12 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
- プログラミング初心者です。
3
+ 初心者です。
4
-
4
+
5
- swiftで対人用オセロアプリを作ろうとしています。
5
+ 対人用オセロゲームを作しています。
6
-
6
+
7
- ターの奇数、偶数を用いてプレヤーを交代させたいのですが、実装してみると置いた色は全てリバースは全て黒るというおかしな動きってしまいます。
7
+ ルは通りますが、白のターンの際リバースしない。また、次白が置けるところを表示しないう現象が起こっています。
8
-
8
+
9
- どのようにすればよろしいでしょうか。
9
+ どのように改善すればよろしいでしょうか。
10
10
 
11
11
 
12
12
 
@@ -26,9 +26,7 @@
26
26
 
27
27
 
28
28
 
29
- ```ここに言語名を入力
29
+ ```swift
30
-
31
- ソースコード
32
30
 
33
31
  // GameViewController.swift
34
32
 
@@ -44,13 +42,7 @@
44
42
 
45
43
  let BOARDSIZE = 8
46
44
 
47
- var board = Board()
45
+ var board = Board()
48
-
49
-
50
-
51
-
52
-
53
-
54
46
 
55
47
  var Stone_count = 0
56
48
 
@@ -156,8 +148,6 @@
156
148
 
157
149
  button.addTarget(self, action: #selector(GameViewController.pushed), for: .touchUpInside)
158
150
 
159
-
160
-
161
151
  self.view.addSubview(button)
162
152
 
163
153
  button.isEnabled = false
@@ -248,6 +238,8 @@
248
238
 
249
239
  drawBoard()
250
240
 
241
+ turn = 0
242
+
251
243
  resetButton.isEnabled = false
252
244
 
253
245
  resetButton.isHidden = true
@@ -260,124 +252,130 @@
260
252
 
261
253
 
262
254
 
255
+ var turn = 0
256
+
263
257
  // ボード盤をタッチされた時の処理
264
258
 
265
259
  @objc func pushed(mybtn: buttonClass){
266
260
 
261
+ let player = 2
262
+
263
+ switch turn % player {
264
+
265
+ case 0:
266
+
267
- mybtn.isEnabled = false
267
+ mybtn.isEnabled = false
268
-
269
- let playercount = 2
268
+
270
-
271
- for turn in 1..<BOARDSIZE{
272
-
273
-
274
-
275
- if turn % playercount == 0 {
276
-
277
- board.put(x: mybtn.x, y: mybtn.y, stone: User1_color )
269
+ board.put(x: mybtn.x, y: mybtn.y, stone: User1_color )
278
-
270
+
279
- drawBoard()
271
+ drawBoard()
272
+
280
-
273
+ self.turn = turn + 1
274
+
281
- if( board.gameOver() == true ){
275
+ if( board.gameOver() == true ){
282
-
276
+
283
- resetButton.isEnabled = true
277
+ resetButton.isEnabled = true
284
-
278
+
285
- resetButton.isHidden = false
279
+ resetButton.isHidden = false
280
+
281
+ }
282
+
283
+ if( board.available(stone: User1_color).count == 0){
284
+
285
+ passButton.isHidden = false
286
+
287
+ passButton.isEnabled = true
288
+
289
+ }
290
+
291
+ case 1:
292
+
293
+ mybtn.isEnabled = false
294
+
295
+ board.put(x: mybtn.x, y: mybtn.y, stone: User2_color )
296
+
297
+ drawBoard()
298
+
299
+ self.turn = turn + 1
300
+
301
+ if( board.gameOver() == true ){
302
+
303
+ resetButton.isHidden = false
304
+
305
+ resetButton.isEnabled = true
306
+
307
+ }
308
+
309
+
310
+
311
+ if( board.available(stone: User2_color).count == 0){
312
+
313
+ passButton.isHidden = false
314
+
315
+ passButton.isEnabled = true
316
+
317
+ }
318
+
319
+ default: break
286
320
 
287
321
  }
288
322
 
323
+ }
324
+
325
+
326
+
327
+ // 画面にオセロ盤を表示させる
328
+
329
+ func drawBoard(){
330
+
331
+ let stonecount = board.returnStone()
332
+
333
+ viewStoneCount.text = "● User1: " + String(stonecount.0) + " ○ User2: " + String(stonecount.1)
334
+
335
+ var count = 0
336
+
337
+ var _board = board.return_board()
338
+
339
+ for y in 0..<BOARDSIZE{
340
+
341
+ for x in 0..<BOARDSIZE{
342
+
289
- if( board.available(stone: User1_color).count == 0){
343
+ if( _board[y][x] == User1_color ){
344
+
290
-
345
+ buttonArray[count].setImage(black, for: .normal)
346
+
291
- passButton.isHidden = false
347
+ } else if( _board[y][x] == User2_color ){
348
+
292
-
349
+ buttonArray[count].setImage(white, for: .normal)
350
+
351
+ } else {
352
+
353
+ buttonArray[count].setImage(baseBoard, for: .normal)
354
+
355
+ }
356
+
293
- passButton.isEnabled = true
357
+ buttonArray[count].isEnabled = false
358
+
359
+ count += 1
360
+
361
+ }
294
362
 
295
363
  }
296
364
 
297
- }else{
298
-
299
- if( board.available(stone: User2_color).count != 0 ){
300
-
301
- board.put(x: mybtn.x, y: mybtn.y, stone: User1_color )
302
-
303
- drawBoard()
304
-
305
- if( board.gameOver() == true ){
306
-
307
- resetButton.isHidden = false
308
-
309
- resetButton.isEnabled = true
310
-
311
- }
312
-
313
- }
314
-
315
- if( board.available(stone: User2_color).count == 0){
365
+ let availableList = board.available(stone: User1_color)
366
+
367
+
368
+
316
-
369
+ for i in 0..<(availableList.count){
370
+
317
- passButton.isHidden = false
371
+ let x = availableList[i][0]
372
+
318
-
373
+ let y = availableList[i][1]
374
+
319
- passButton.isEnabled = true
375
+ buttonArray[x*BOARDSIZE+y].isEnabled = true
320
-
321
- }
322
-
323
- }
324
-
325
- }
326
376
 
327
377
  }
328
378
 
329
-
330
-
331
- // 画面にオセロ盤を表示させる
332
-
333
- func drawBoard(){
334
-
335
- let stonecount = board.returnStone()
336
-
337
- viewStoneCount.text = "● User1: " + String(stonecount.0) + " ○ User2: " + String(stonecount.1)
338
-
339
- var count = 0
340
-
341
- var _board = board.return_board()
342
-
343
- for y in 0..<BOARDSIZE{
344
-
345
- for x in 0..<BOARDSIZE{
346
-
347
- if( _board[y][x] == User1_color ){
348
-
349
- buttonArray[count].setImage(black, for: .normal)
350
-
351
- } else if( _board[y][x] == User2_color ){
352
-
353
- buttonArray[count].setImage(white, for: .normal)
354
-
355
- } else {
356
-
357
- buttonArray[count].setImage(baseBoard, for: .normal)
358
-
359
- }
360
-
361
- buttonArray[count].isEnabled = false
362
-
363
- count += 1
364
-
365
- }
366
-
367
- }
368
-
369
- let availableList = board.available(stone: User1_color)
370
-
371
- for i in 0..<(availableList.count){
372
-
373
- let x = availableList[i][0]
374
-
375
- let y = availableList[i][1]
376
-
377
- buttonArray[x*BOARDSIZE+y].isEnabled = true
378
-
379
- }
380
-
381
379
  }
382
380
 
383
381
 
@@ -394,22 +392,12 @@
394
392
 
395
393
  }
396
394
 
397
-
398
-
399
395
  ```
400
396
 
401
397
  ### 試したこと
402
398
 
403
-
404
-
405
- ここに問題に対して試したことを記載してください。
406
-
407
-
408
-
409
399
  ### 補足情報(FW/ツールのバージョンなど)
410
400
 
411
401
  swift
412
402
 
413
403
  x code 10.3
414
-
415
- 参考HP https://qiita.com/hmarf/items/f73427baf2e73275e908