资源简介
基于matlab的井字棋实现,人工智能。人机对战,电脑后手。整体分为8个步骤。
代码片段和文件信息
function newstage=computermove(stage)
% 电脑落棋子
poscorner = [1 3 7 9]; %四个角位
posedge = [2 6 4 8]; %四个边位
poscenter = 5; %中心位
if pickwinspot(stage); % ;检查制胜点
% choose the spot to win it!
posl = pickwinspot(stage);
elseif findlosespot(stage); %;检查威胁点
% block it!
posl = findlosespot(stage);
elseif stage(poscenter) == 0 %;占据中心
% play the center
posl = poscenter;
elseif oppositecorner(stage); %;占据对角位
% opposite corner
posl = oppositecorner(stage);
elseif stage(poscenter)==1
if emptycorner(stage) %;占据相关空角位
% play a corner
posl = emptycorner(stage);
elseif any(stage(poscorner) == 0) %;占据空角位
% play a corner
posl = poscorner(find(stage(poscorner) == 0 1));
elseif emptyedge(stage) %;占据相关边位
%play middle spot of an edge
posl = emptyedge(stage);
else % :占据边位
% play middle spot of an edge
posl = posedge(find(stage(posedge) == 0 1));
end;
elseif stage(poscenter)==2
if emptycorner(stage); %;占据相关空角位
% play a corner
posl = emptycorner(stage);
elseif emptyedge(stage); %;占据相关边位
%play middle spot of an edge
posl = emptyedge(stage);
elseif any(stage(poscorner) == 0) %;占据空角位
% play a corner
posl = poscorner(find(stage(poscorner) == 0 1));
else % :占据边位
% play middle spot of an edge
posl = posedge(find(stage(posedge) == 0 1));
end
end;
stage(posl) = 2;
newstage = stage;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1902 2012-10-10 14:37 井字棋\computermove.m
文件 193 2012-10-10 14:40 井字棋\drawCir.m
文件 173 2012-10-10 14:41 井字棋\drawCross.m
文件 558 2012-10-09 20:59 井字棋\drawStage.m
文件 399 2012-10-10 14:41 井字棋\emptycorner.m
文件 389 2012-10-10 14:38 井字棋\emptyedge.m
文件 282 2012-10-09 16:08 井字棋\findlosespot.m
文件 458 2012-10-10 12:30 井字棋\jingziqi.m
文件 261 2012-10-10 09:44 井字棋\oppositecorner.m
文件 281 2012-10-09 16:09 井字棋\pickwinspot.m
文件 352 2012-10-09 14:07 井字棋\pla
文件 204 2012-10-09 16:10 井字棋\whowon.m
文件 161 2012-10-10 14:48 井字棋\说明.txt
目录 0 2012-10-10 14:47 井字棋
----------- --------- ---------- ----- ----
5613 14
评论
共有 条评论