質問編集履歴

1

誤字や文法の修正を行いました。

2018/04/05 11:46

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -8,7 +8,11 @@
8
8
 
9
9
 
10
10
 
11
- ボードの状態は辞書型のrecordという変数で管理し、具体的なコードでは以下のようにrecordに毎ターンボードの状態を追加していこうと考えております。
11
+ ボードの状態は辞書型のrecordという変数で管理し、具体的なコードではサーバーの処理側で、以下のようにrecordに毎ターンボードの状態を追加していこうと考えております。
12
+
13
+
14
+
15
+ > board.record[board.turn_count] = {'board':copy.deepcopy(board.discs), 'newest_place':board.newest_place}
12
16
 
13
17
 
14
18
 
@@ -132,6 +136,10 @@
132
136
 
133
137
 
134
138
 
139
+ board.record[board.turn_count] = {'board':copy.deepcopy(board.discs), 'newest_place':board.newest_place}
140
+
141
+
142
+
135
143
  # draw game info on the listbox
136
144
 
137
145
  gui.addList(player_turn, board.turn_count, placeloc)
@@ -280,279 +288,7 @@
280
288
 
281
289
 
282
290
 
283
-
284
-
285
- Boardクラス(ボードの状態やターンの管理、石をひっくり返す処理等を行っております)
286
-
287
- ```python
288
-
289
- #!/usr/bin/python3
290
-
291
- # -*- coding: utf8 -*-
292
-
293
- import tkinter as tk
294
-
295
- import copy
296
-
297
-
298
-
299
-
300
-
301
- class Board(object):
302
-
303
-
304
-
305
- def __init__(self, ):
306
-
307
- self.discs = [] # disc on the board
308
-
309
- self.turn = 'Black' # game turn
310
-
311
- self.pass_count = 0 # pass count
312
-
313
- self.turn_count = 1 # game count
314
-
315
- self.newest_place = -1 # last placed disc index
316
-
317
-
318
-
319
- # Initialize the board
320
-
321
- self.Initialize()
322
-
323
-
324
-
325
- # Record the board.
326
-
327
- self.record = {}
328
-
329
- self.record[0] = {'board':copy.deepcopy(self.discs), 'newest_place':copy.deepcopy(self.newest_place)}
330
-
331
-
332
-
333
-
334
-
335
- # Initialize the board
336
-
337
- '''
338
-
339
- Ban : out of the board.
340
-
341
- Space : Free space on the board.
342
-
343
- Black : Place where black disc is placed.
344
-
345
- White Place where white disc is placed.
346
-
347
- CanPlace : Place where player can place disc on this turn.
348
-
349
- '''
350
-
351
- def Initialize(self, ):
352
-
353
- for i in range(100):
354
-
355
- self.discs.append('Space')
356
-
357
-
358
-
359
- for i in range(0, 10):
360
-
361
- self.discs[i] = 'Ban'
362
-
363
- self.discs[i + 90] = 'Ban'
364
-
365
- for i in range(10, 81, 10):
366
-
367
- self.discs[i] = 'Ban'
368
-
369
- self.discs[i + 9] = 'Ban'
370
-
371
- for i in range(0, 90):
372
-
373
- if(int(i / 10) == 0 or int(i % 10) == 0 or int(i % 10) == 9):
374
-
375
- continue
376
-
377
- else:
378
-
379
- self.discs[i] = 'Space'
380
-
381
-
382
-
383
- self.discs[45] = 'Black'
384
-
385
- self.discs[54] = 'Black'
386
-
387
- self.discs[44] = 'White'
388
-
389
- self.discs[55] = 'White'
390
-
391
- self.discs[34] = 'CanPlace'
392
-
393
- self.discs[43] = 'CanPlace'
394
-
395
- self.discs[56] = 'CanPlace'
396
-
397
- self.discs[65] = 'CanPlace'
398
-
399
-
400
-
401
-
402
-
403
- # if place index is valid, reverseDisc and return True. else return False
291
+ ボードクラスやAIクラスも実装しておりますが、文字数の関係で記載することができなかったため、下記のGithubのリンクを参照していただければ幸いです。
404
-
405
- def reverseDisc(self, turn, index):
406
-
407
-
408
-
409
- if(self.discs[index] != 'CanPlace'):
410
-
411
- return False
412
-
413
-
414
-
415
- list_reverse = []
416
-
417
- direction = [-11, -10, -9, -1, +1, +9, +10, +11] # 8 direction search
418
-
419
- myDisc = "Black" if (turn == "Black") else "White"
420
-
421
- yourDisc = "Black" if (turn == "White") else "White"
422
-
423
-
424
-
425
- for d in direction:
426
-
427
- j = index + d
428
-
429
- while(True):
430
-
431
- if(self.discs[j] == yourDisc):
432
-
433
- list_reverse.append(j)
434
-
435
- elif(self.discs[j] == myDisc):
436
-
437
- for rev in list_reverse:
438
-
439
- self.discs[rev] = myDisc
440
-
441
- break
442
-
443
- elif(self.discs[j] == "Space" or self.discs[j] == "CanPlace" or self.discs[j] == "Ban"):
444
-
445
- list_reverse = []
446
-
447
- break
448
-
449
- j+= d
450
-
451
-
452
-
453
- self.discs[index] = myDisc
454
-
455
-
456
-
457
- self.record[self.turn_count] = {'board':copy.deepcopy(self.discs), 'newest_place':copy.deepcopy(self.newest_place)}
458
-
459
-
460
-
461
- return True
462
-
463
-
464
-
465
-
466
-
467
- # switch game turn
468
-
469
- def switch_turn(self, ):
470
-
471
- if(self.turn == 'Black'):
472
-
473
- self.turn = 'White'
474
-
475
- elif(self.turn == 'White'):
476
-
477
- self.turn = 'Black'
478
-
479
-
480
-
481
-
482
-
483
- # Return a list of places you can place after marking on the board
484
-
485
- def getCanPlace(self, turn):
486
-
487
-
488
-
489
- # delete all mark
490
-
491
- for index, disc in enumerate(self.discs):
492
-
493
- if(disc == "CanPlace"):
494
-
495
- self.discs[index] = "Space"
496
-
497
-
498
-
499
- list_canplace = []
500
-
501
- direction = [-11, -10, -9, -1, +1, +9, +10, +11] # 8 direction search
502
-
503
- myDisc = "Black" if (turn == "Black") else "White"
504
-
505
- yourDisc = "Black" if (turn == "White") else "White"
506
-
507
-
508
-
509
- for index, disc in enumerate(self.discs):
510
-
511
- if (disc == "Space"):
512
-
513
- for d in direction:
514
-
515
- if (self.discs[index + d] == yourDisc):
516
-
517
- k = index + d * 2
518
-
519
- while(True):
520
-
521
- if(self.discs[k] == "Ban" or self.discs[k] == "Space" or self.discs[k] == "CanPlace"):
522
-
523
- break
524
-
525
- elif(self.discs[k] == myDisc):
526
-
527
- self.discs[index] = "CanPlace"
528
-
529
- list_canplace.append(index)
530
-
531
- break
532
-
533
- k += d
534
-
535
- return list_canplace
536
-
537
-
538
-
539
-
540
-
541
- # return disc number
542
-
543
- def getDiscNum(self, turn):
544
-
545
- number = 0
546
-
547
- for disc in self.discs:
548
-
549
- if(disc == turn):
550
-
551
- number += 1
552
-
553
- return number
554
-
555
- ```
556
292
 
557
293
 
558
294