-
Notifications
You must be signed in to change notification settings - Fork 2
/
AItree2level.m
36 lines (35 loc) · 1.17 KB
/
AItree2level.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
function [u,currentColor,pass,bestpt] = AItree2level(u,currentColor,pass,flag)
%% AIPOSITIONVALUE put a stone by a position value
%
% This is the simplest move strategy: randomly chose a valid location.
%
% Long Chen 2019. May. 15.
if ~exist('flag','var') % flag = 0 is used to count the possible flip
flag = 1;
end
%% Get all possible location and value
[validPosition,value,tempPass] = positionvalue(u,currentColor,0);
% plotgame(u);
% showvalue(validPosition,value,currentColor);
if tempPass % no valid position, then pass
pass = pass + 1;
currentColor = - currentColor;
bestpt = 0;
return
end
%% Compute the value of the opponent and subtract max
for i = 1:length(validPosition)
[tempu,tempColor] = putstone(u,validPosition(i),currentColor,0);
[tempPosition,tempValue,tempPass] = positionvalue(tempu,tempColor,0);
% figure(1); clf;
% plotgame(tempu);
% showvalue(tempPosition,tempValue,tempColor);
if ~tempPass
value(i) = value(i) - max(tempValue(:));
end
end
%% Put the stone in the best position
[flipNum,bestpt] = max(value);
bestpt = validPosition(bestpt);
[u,currentColor] = putstone(u,bestpt,currentColor,flag);
pass = 0;