質問編集履歴

1

質問内容の変更

2017/10/11 15:55

投稿

DANNBU
DANNBU

スコア19

test CHANGED
@@ -1 +1 @@
1
- python minimax法 3手目からの動き
1
+ python minimax法
test CHANGED
@@ -8,81 +8,13 @@
8
8
 
9
9
 
10
10
 
11
- http://www.geocities.jp/m_hiroi/puzzle/tictactoe.html
12
11
 
13
12
 
14
-
15
- 先手 CPU
16
-
17
- 後手 自分
18
-
19
-
20
-
21
- このURL参考にしてminimax法をpythonで作ったんですけど最初の1目だけminimax法が動いて盤上手を打ってくれすけど
13
+ この↓のコードは評価値返す関数なんですけど、評価値だけでなくそのも返す(例えば評価値が最小であったself.board[1][2])ようにはどうしたらよいのしょうか
22
-
23
- 2手目自分が打ち終わって3手目CPUでminimax法を実行しても手を打ってくれない状態です。
24
-
25
- コードはこんな感じです
26
-
27
-
28
-
29
- どこを変えた方がいいかわかるかたご教授願いたいです。
30
-
31
- よろしくおねがいします
32
-
33
-
34
-
35
-
36
14
 
37
15
  ```
38
16
 
39
- def minimax(self):
40
17
 
41
- for y in range(1,4):
42
-
43
- for x in range(1,4):
44
-
45
- if(self.board[y][x] == -1):
46
-
47
- self.board[y][x] = self.kuro#最初の手
48
-
49
- self.goban[y][x] = self.kuro
50
-
51
- v = self.think_siro(1)#次の番
52
-
53
- print('初手self.board[{}][{}], 評価値{}'.format(y,x,v))
54
-
55
- self.board[y][x] = -1
56
-
57
- self.goban[y][x] = -1
58
-
59
- self.score.append(v)
60
-
61
- self.board[y][x] = -1
62
-
63
- self.goban[y][x] = self.space
64
-
65
- print(self.score)
66
-
67
-
68
-
69
-
70
-
71
- v = self.score.index(max(self.score))#配列の中で一番大きい値のインデックスを返す
72
-
73
- print (self.score[v])#配列の中で一番小さい評価値を選択
74
-
75
-     """
76
-
77
-
78
-
79
- ここに評価値が一番大きい場所を選択するコード
80
-
81
-
82
-
83
-
84
-
85
- """
86
18
 
87
19
  def think_kuro(self, n):
88
20
 
@@ -163,3 +95,7 @@
163
95
 
164
96
 
165
97
  ```
98
+
99
+
100
+
101
+ 最善手を返すようにはどうしたらよいかに変更