前言:
只是个matlab初学者,本意是记录一下自己matlab学习之余搞的小玩意,所以代码技术含量不高,计算复杂效率低下,也欢迎大家讨论、指导。
实现:
各所需变量初始化:
代码:
%0:空位
%1:红-兵
%2:红-车
%3:红-马
%4:红-象
%5:红-士
%6:红-帅
%7:红-炮
%8:黑-兵
%9:黑-车
%10:黑-马
%11:黑-象
%12:黑-士
%13:黑-帅
%14:黑-炮
clear;
clf;
clc;
p=zeros(9,10);
player=0;
d2=1;
a11=[0 0]; %初始化各个棋子各方位的可移动位置
a12=[0 0];
a13=[0 0];
a21x=0;
a21y=0;
a22x=0;
a22y=0;
a23x=0;
a23y=0;
a24x=0;
a24y=0;
a31=[0,0];
a32=[0,0];
a33=[0,0];
a34=[0,0];
a35=[0,0];
a36=[0,0];
a37=[0,0];
a38=[0,0];
a41=[0 0];
a42=[0 0];
a43=[0 0];
a44=[0 0];
a51=[0 0];
a52=[0 0];
a53=[0 0];
a54=[0 0];
a61=[0 0];
a62=[0 0];
a63=[0 0];
a64=[0 0];
a71x=0;
a71y=0;
a72x=0;
a72y=0;
a73x=0;
a73y=0;
a74x=0;
a74y=0;
a81=[0 0];
a82=[0 0];
a83=[0 0];
a91x=0;
a91y=0;
a92x=0;
a92y=0;
a93x=0;
a93y=0;
a94x=0;
a94y=0;
a101=[0 0];
a102=[0 0];
a103=[0 0];
a104=[0 0];
a105=[0 0];
a106=[0 0];
a107=[0 0];
a108=[0 0];
a111=[0 0];
a112=[0 0];
a113=[0 0];
a114=[0 0];
a121=[0 0];
a122=[0 0];
a123=[0 0];
a124=[0 0];
a131=[0 0];
a132=[0 0];
a133=[0 0];
a134=[0 0];
a141x=0;
a141y=0;
a142x=0;
a142y=0;
a143x=0;
a143y=0;
a144x=0;
a144y=0;
tiao1=[0 0]; %初始化炮跳板位置
tiao2=[0 0];
tiao3=[0 0];
tiao4=[0 0];
%--------------------------------------------------------------------------------
p(1,4)=1; %初始化红方棋子位置
p(3,4)=1;
p(5,4)=1;
p(7,4)=1;
p(9,4)=1;
p(9,1)=2;
p(1,1)=2;
p(2,1)=3;
p(8,1)=3;
p(3,1)=4;
p(7,1)=4;
p(4,1)=5;
p(6,1)=5;
p(5,1)=6;
p(2,3)=7;
p(8,3)=7;
%---------------------------------------------------------------------------------
p(1,7)=8; %初始化黑方棋子位置
p(3,7)=8;
p(5,7)=8;
p(7,7)=8;
p(9,7)=8;
p(1,10)=9;
p(9,10)=9;
p(2,10)=10;
p(8,10)=10;
p(3,10)=11;
p(7,10)=11;
p(4,10)=12;
p(6,10)=12;
p(5,10)=13;
p(2,8)=14;
p(8,8)=14;
思路:
用数字表示棋子类型,用数字后缀表示某方向的可下子位置
如:p(1,1)=2;
表示(1,1)为代号为2的棋子,而红方车代号为2,所以红方车的初始位置为(1,1)
a21x表示红方车正右方备选位置的横坐标
用函数绘制一个棋盘:
代码:
while(1)
clf %绘制棋盘
hold on
axis([1,9,1,10]);
axis square;
x=1:9;
y=1:10;
shu1=linspace(10,10,9);
shu2=linspace(6,6,9);
shu3=[10,5,5,5,5,5,5,5,10];
stem(x,shu1,'- . k',"MarkerSize",0.001);
stem(x,shu2,'- . w',"MarkerSize",0.001);
stem(x,shu3,'- . k',"MarkerSize",0.001);
xie1x=[4,5,6,5,6,5,4];
xie1y=[1,2,1,2,3,2,3];
xie2x=[4,5,6,5,6,5,4];
xie2y=[10,9,10,9,8,9,8];
for i=1:10
for j=1:9
heng(i,j)=11-i;
end
plot(x,heng(i,:),'k-')
end
plot(xie1x,xie1y,'k')
plot(xie2x,xie2y,'k')
效果:
在棋盘上绘制棋子
代码:
for i=1:9 %绘制棋子
for j=1:10
switch p(i,j)
case 1
plot(i,j,'o r',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'兵',"Color",[1 0 0])
case 2
plot(i,j,'o r',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'车',"Color",[1 0 0])
case 3
plot(i,j,'o r',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'马',"Color",[1 0 0])
case 4
plot(i,j,'o r',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'象',"Color",[1 0 0])
case 5
plot(i,j,'o r',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'士',"Color",[1 0 0])
case 6
plot(i,j,'o r',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'帅',"Color",[1 0 0])
case 7
plot(i,j,'o r',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'炮',"Color",[1 0 0])
case 8
plot(i,j,'o k',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'兵',"Color",[0 0 0])
case 9
plot(i,j,'o k',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'车',"Color",[0 0 0])
case 10
plot(i,j,'o k',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'马',"Color",[0 0 0])
case 11
plot(i,j,'o k',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'象',"Color",[0 0 0])
case 12
plot(i,j,'o k',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'士',"Color",[0 0 0])
case 13
plot(i,j,'o k',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'帅',"Color",[0 0 0])
case 14
plot(i,j,'o k',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'炮',"Color",[0 0 0])
otherwise
continue
end
end
end
效果:
落子与判定:
代码:
while(1)
[a,b]=ginput(1); %鼠标点击一个有效坐标
c=round(a);
d=round(b);
if (c>=1&&d>=1)&&(c<=9&&d<=10)
break
end
end
if player==0 %判断是否红方落棋
switch p(c,d) %如果点击红方棋子,将棋子变绿
case {1 2 3 4 5 6 7}
plot(c,d,'o g',"MarkerSize",20)
otherwise
end
switch p(c,d) %根据棋子类型,用蓝色显示出可以所有落棋的位置并用输入落棋点
case 1 %红方兵
if d>=6 %在河对岸的行为模式
if c==1 %兵各个位置可以落棋的备选位置
switch p(c+1,d)
case {8,9,10,11,12,13,14,0}
plot(c+1,d,'o b',"MarkerSize",20)
a11=[c+1 d];
otherwise
a11=[0 0];
end
switch p(c,d+1)
case {8,9,10,11,12,13,14,0}
plot(c,d+1,'o b',"MarkerSize",20)
a12=[c d+1];
otherwise
a12=[0 0];
end
elseif c>=2&&c<=8
switch p(c+1,d)
case {8,9,10,11,12,13,14,0}
plot(c+1,d,'o b',"MarkerSize",20)
a11=[c+1 d];
otherwise
a11=[0 0];
end
switch p(c-1,d)
case {8,9,10,11,12,13,14,0}
plot(c-1,d,'o b',"MarkerSize",20)
a13=[c-1 d];
otherwise
a13=[0 0];
end
switch p(c,d+1)
case {8,9,10,11,12,13,14,0}
plot(c,d+1,'o b',"MarkerSize",20)
a12=[c d+1];
otherwise
a12=[0 0];
end
elseif c==9
switch p(c-1,d)
case {8,9,10,11,12,13,14,0}
plot(c-1,d,'o b',"MarkerSize",20)
a13=[c-1 d];
otherwise
a13=[0 0];
end
switch p(c,d+1)
case {8,9,10,11,12,13,14,0}
plot(c,d+1,'o b',"MarkerSize",20)
a12=[c d+1];
otherwise
a12=[0 0];
end
end
else %在本岸的行为模式
switch p(c,d+1)
case {8,9,10,11,12,13,14,0}
plot(c,d+1,'o b',"MarkerSize",20)
a12=[c d+1];
otherwise
a12=[0 0];
end
end
while(1) %输入一个有效坐标
[e,f]=ginput(1);
g=round(e);
h=round(f);
if g>=1&&h>=1
break
end
end
if (g==a11(1)&&h==a11(2))||(g==a12(1)&&h==a12(2))||(g==a13(1)&&h==a13(2)) %如果坐标在备选位置中,则落子并改变为玩家1落子
p(c,d)=0;
p(g,h)=1;
player=1;
end
case 2 %红方车
for i=c+1:9 %正右方的备选位置
if p(i,d)==0
plot(i,d,'o b',"MarkerSize",20)
a21x(i)=i;
a21y(i)=d;
elseif p(i,d)==1||p(i,d)==2||p(i,d)==3||p(i,d)==4||p(i,d)==5||p(i,d)==6||p(i,d)==7
if i~=c+1
plot(i-1,d,'o b',"MarkerSize",20)
break
elseif i==c+1
d2=0;
break
end
elseif p(i,d)==8||p(i,d)==9||p(i,d)==10||p(i,d)==11||p(i,d)==12||p(i,d)==13||p(i,d)==14
plot(i,d,'o b',"MarkerSize",20)
a21x(i)=i;
a21y(i)=d;
break
end
end
for i=c-1:-1:1 %正左方的备选位置
if p(i,d)==0
plot(i,d,'o b',"MarkerSize",20)
a23x(i)=i;
a23y(i)=d;
elseif p(i,d)==1||p(i,d)==2||p(i,d)==3||p(i,d)==4||p(i,d)==5||p(i,d)==6||p(i,d)==7
if i~=c-1
plot(i+1,d,'o b',"MarkerSize",20)
break
elseif i==c-1
break
end
elseif p(i,d)==8||p(i,d)==9||p(i,d)==10||p(i,d)==11||p(i,d)==12||p(i,d)==13||p(i,d)==14
plot(i,d,'o b',"MarkerSize",20)
a23x(i)=i;
a23y(i)=d;
break
end
end
for j=d+1:10 %正上方的备选位置
if p(c,j)==0
plot(c,j,'o b',"MarkerSize",20)
a22x(j)=c;
a22y(j)=j;
elseif p(c,j)==1||p(c,j)==2||p(c,j)==3||p(c,j)==4||p(c,j)==5||p(c,j)==6||p(c,j)==7
if j~=d+1
plot(c,j-1,'o b',"MarkerSize",20)
break
elseif j==d+1
d2=0;
break
end
elseif p(c,j)==8||p(c,j)==9||p(c,j)==10||p(c,j)==11||p(c,j)==12||p(c,j)==13||p(c,j)==14
plot(c,j,'o b',"MarkerSize",20)
a22x(j)=c;
a22y(j)=j;
break
end
end
for j=d-1:-1:1 %正下方的备选位置
if p(c,j)==0
plot(c,j,'o b',"MarkerSize",20)
a24x(j)=c;
a24y(j)=j;
elseif p(c,j)==1||p(c,j)==2||p(c,j)==3||p(c,j)==4||p(c,j)==5||p(c,j)==6||p(c,j)==7
if j~=d-1
plot(c,j+1,'o b',"MarkerSize",20)
break
elseif j==d-1
break
end
elseif p(c,j)==8||p(c,j)==9||p(c,j)==10||p(c,j)==11||p(c,j)==12||p(c,j)==13||p(c,j)==14
plot(c,j,'o b',"MarkerSize",20)
a24x(j)=c;
a24y(j)=j;
break
end
end
while(1) %输入一个有效坐标并与四个方向的备选位置匹配,落子并改变为玩家1落子
[e,f]=ginput(1);
g=round(e);
h=round(f);
if g>=1&&h>=1
break
end
end
for i=1:length(a21x)
if g==a21x(i)&&h==a21y(i)
p(c,d)=0;
p(g,h)=2;
player=1;
else
continue
end
end
for i=1:length(a22x)
if g==a22x(i)&&h==a22y(i)
p(c,d)=0;
p(g,h)=2;
player=1;
else
continue
end
end
for i=1:length(a23x)
if g==a23x(i)&&h==a23y(i)
p(c,d)=0;
p(g,h)=2;
player=1;
else
continue
end
end
for i=1:length(a24x)
if g==a24x(i)&&h==a24y(i)
p(c,d)=0;
p(g,h)=2;
player=1;
else
continue
end
end
case 3 %红方马
a31=[c+2,d+1]; %八个可能的落脚点
a32=[c+1,d+2];
a33=[c-1,d+2];
a34=[c-2,d+1];
a35=[c-2,d-1];
a36=[c-1,d-2];
a37=[c+1,d-2];
a38=[c+2,d-1];
if c==9||c==8 %判断各个落脚点是否可行
a31=[0 0];
elseif d==10
a31=[0 0];
elseif p(c+1,d)~=0
a31=[0 0];
elseif p(c+2,d+1)==1||p(c+2,d+1)==2||p(c+2,d+1)==3||p(c+2,d+1)==4||p(c+2,d+1)==5||p(c+2,d+1)==6||p(c+2,d+1)==7
a31=[0 0];
else
plot(c+2,d+1,'o b',"MarkerSize",20)
end
if c==9
a32=[0 0];
elseif d==10||d==9
a32=[0 0];
elseif p(c,d+1)~=0
a32=[0 0];
elseif p(c+1,d+2)==1||p(c+1,d+2)==2||p(c+1,d+2)==3||p(c+1,d+2)==4||p(c+1,d+2)==5||p(c+1,d+2)==6||p(c+1,d+2)==7
a31=[0 0];
else
plot(c+1,d+2,'o b',"MarkerSize",20)
end
if c==1
a33=[0 0];
elseif d==10||d==9
a33=[0 0];
elseif p(c,d+1)~=0
a33=[0 0];
elseif p(c-1,d+2)==1||p(c-1,d+2)==2||p(c-1,d+2)==3||p(c-1,d+2)==4||p(c-1,d+2)==5||p(c-1,d+2)==6||p(c-1,d+2)==7
a33=[0 0];
else
plot(c-1,d+2,'o b',"MarkerSize",20)
end
if c==1||c==2
a34=[0 0];
elseif d==10
a34=[0 0];
elseif p(c-1,d)~=0
a34=[0 0];
elseif p(c-2,d+1)==1||p(c-2,d+1)==2||p(c-2,d+1)==3||p(c-2,d+1)==4||p(c-2,d+1)==5||p(c-2,d+1)==6||p(c-2,d+1)==7
a34=[0 0];
else
plot(c-2,d+1,'o b',"MarkerSize",20)
end
if c==1||c==2
a35=[0 0];
elseif d==1
a35=[0 0];
elseif p(c-1,d)~=0
a35=[0 0];
elseif p(c-2,d-1)==1||p(c-2,d-1)==2||p(c-2,d-1)==3||p(c-2,d-1)==4||p(c-2,d-1)==5||p(c-2,d-1)==6||p(c-2,d-1)==7
a35=[0 0];
else
plot(c-2,d-1,'o b',"MarkerSize",20)
end
if c==1
a36=[0 0];
elseif d==1||d==2
a36=[0 0];
elseif p(c,d-1)~=0
a36=[0 0];
elseif p(c-1,d-2)==1||p(c-1,d-2)==2||p(c-1,d-2)==3||p(c-1,d-2)==4||p(c-1,d-2)==5||p(c-1,d-2)==6||p(c-1,d-2)==7
a36=[0 0];
else
plot(c-1,d-2,'o b',"MarkerSize",20)
end
if c==9
a37=[0 0];
elseif d==1||d==2
a37=[0 0];
elseif p(c,d-1)~=0
a37=[0 0];
elseif p(c+1,d-2)==1||p(c+1,d-2)==2||p(c+1,d-2)==3||p(c+1,d-2)==4||p(c+1,d-2)==5||p(c+1,d-2)==6||p(c+1,d-2)==7
a37=[0 0];
else
plot(c+1,d-2,'o b',"MarkerSize",20)
end
if c==9||c==8
a38=[0 0];
elseif d==1
a38=[0 0];
elseif p(c+1,d)~=0
a38=[0 0];
elseif p(c+2,d-1)==1||p(c+2,d-1)==2||p(c+2,d-1)==3||p(c+2,d-1)==4||p(c+2,d-1)==5||p(c+2,d-1)==6||p(c+2,d-1)==7
a38=[0 0];
else
plot(c+2,d-1,'o b',"MarkerSize",20)
end
while(1) %如果坐标在备选位置中,则落子并改变为玩家1落子
[e,f]=ginput(1);
g=round(e);
h=round(f);
if g>=1&&h>=1
break
end
end
if (g==a31(1)&&h==a31(2))||(g==a32(1)&&h==a32(2))||(g==a33(1)&&h==a33(2))||(g==a34(1)&&h==a34(2))||(g==a35(1)&&h==a35(2))||(g==a36(1)&&h==a36(2))||(g==a37(1)&&h==a37(2))||(g==a38(1)&&h==a38(2))
p(c,d)=0;
p(g,h)=3;
player=1;
else
continue
end
case 4 %红方象
if c==3&&d==1 %不同位置的不同备选位置
if p(4,2)==0
if p(5,3)==1||p(5,3)==2||p(5,3)==3||p(5,3)==4||p(5,3)==5||p(5,3)==6||p(5,3)==7
else
a41=[5 3];
plot(5,3,'o b',"MarkerSize",20)
end
else
end
if p(2,2)==0
if p(1,3)==1||p(1,3)==2||p(1,3)==3||p(1,3)==4||p(1,3)==5||p(1,3)==6||p(1,3)==7
else
a42=[1 3];
plot(1,3,'o b',"MarkerSize",20)
end
end
elseif c==7&&d==1
if p(8,2)==0
if p(9,3)==1||p(9,3)==2||p(9,3)==3||p(9,3)==4||p(9,3)==5||p(9,3)==6||p(9,3)==7
else
a41=[9 3];
plot(9,3,'o b',"MarkerSize",20)
end
else
end
if p(6,2)==0
if p(5,3)==1||p(5,3)==2||p(5,3)==3||p(5,3)==4||p(5,3)==5||p(5,3)==6||p(5,3)==7
else
a42=[5 3];
plot(5,3,'o b',"MarkerSize",20)
end
else
end
elseif c==1&&d==3
if p(2,4)==0
if p(3,5)==1||p(3,5)==2||p(3,5)==3||p(3,5)==4||p(3,5)==5||p(3,5)==6||p(3,5)==7
else
a41=[3 5];
plot(3,5,'o b',"MarkerSize",20)
end
else
end
if p(2,2)==0
if p(3,1)==1||p(3,1)==2||p(3,1)==3||p(3,1)==4||p(3,1)==5||p(3,1)==6||p(3,1)==7
else
a44=[3 1];
plot(3,1,'o b',"MarkerSize",20)
end
else
end
elseif c==5&&d==3
if p(6,4)==0
if p(7,5)==1||p(7,5)==2||p(7,5)==3||p(7,5)==4||p(7,5)==5||p(7,5)==6||p(7,5)==7
else
a41=[7 5];
plot(7,5,'o b',"MarkerSize",20)
end
else
end
if p(4,4)==0
if p(3,5)==1||p(3,5)==2||p(3,5)==3||p(3,5)==4||p(3,5)==5||p(3,5)==6||p(3,5)==7
else
a42=[3 5];
plot(3,5,'o b',"MarkerSize",20)
end
else
end
if p(4,2)==0
if p(3,1)==1||p(3,1)==2||p(3,1)==3||p(3,1)==4||p(3,1)==5||p(3,1)==6||p(3,1)==7
else
a43=[3 1];
plot(3,1,'o b',"MarkerSize",20)
end
else
end
if p(6,2)==0
if p(7,1)==1||p(7,1)==2||p(7,1)==3||p(7,1)==4||p(7,1)==5||p(7,1)==6||p(7,1)==7
else
a44=[7 1];
plot(7,1,'o b',"MarkerSize",20)
end
else
end
elseif c==9&&d==3
if p(8,4)==0
if p(7,5)==1||p(7,5)==2||p(7,5)==3||p(7,5)==4||p(7,5)==5||p(7,5)==6||p(7,5)==7
else
a42=[7 5];
plot(7,5,'o b',"MarkerSize",20)
end
else
end
if p(8,2)==0
if p(7,1)==1||p(7,1)==2||p(7,1)==3||p(7,1)==4||p(7,1)==5||p(7,1)==6||p(7,1)==7
else
a43=[7 1];
plot(7,1,'o b',"MarkerSize",20)
end
else
end
elseif c==3&&d==5
if p(2,4)==0
if p(1,3)==1||p(1,3)==2||p(1,3)==3||p(1,3)==4||p(1,3)==5||p(1,3)==6||p(1,3)==7
else
a43=[1 3];
plot(1,3,'o b',"MarkerSize",20)
end
else
end
if p(4,4)==0
if p(5,3)==1||p(5,3)==2||p(5,3)==3||p(5,3)==4||p(5,3)==5||p(5,3)==6||p(5,3)==7
else
a44=[5 3];
plot(5,3,'o b',"MarkerSize",20)
end
else
end
elseif c==7&&d==5
if p(6,4)==0
if p(5,3)==1||p(5,3)==2||p(5,3)==3||p(5,3)==4||p(5,3)==5||p(5,3)==6||p(5,3)==7
else
a43=[5 3];
plot(5,3,'o b',"MarkerSize",20)
end
else
end
if p(8,4)==0
if p(9,3)==1||p(9,3)==2||p(9,3)==3||p(9,3)==4||p(9,3)==5||p(9,3)==6||p(9,3)==7
else
a44=[9 3];
plot(9,3,'o b',"MarkerSize",20)
end
else
end
else
end
while(1) %如果坐标在备选位置中,则落子并改变为玩家1落子
[e,f]=ginput(1);
g=round(e);
h=round(f);
if g>=1&&h>=1
break
end
end
if (g==a41(1)&&h==a41(2))||(g==a42(1)&&h==a42(2))||(g==a43(1)&&h==a43(2))||(g==a44(1)&&h==a44(2))
p(c,d)=0;
p(g,h)=4;
player=1;
else
end
case 5 %红方士
if c==4&&d==1 %不同位置的不同备选位置
if p(5,2)==1||p(5,2)==2||p(5,2)==3||p(5,2)==4||p(5,2)==5||p(5,2)==6||p(5,2)==7
else
a51=[5,2];
plot(5,2,'o b',"MarkerSize",20)
end
elseif c==6&&d==1
if p(5,2)==1||p(5,2)==2||p(5,2)==3||p(5,2)==4||p(5,2)==5||p(5,2)==6||p(5,2)==7
else
a52=[5,2];
plot(5,2,'o b',"MarkerSize",20)
end
elseif c==5&&d==2
if p(6,3)==1||p(6,3)==2||p(6,3)==3||p(6,3)==4||p(6,3)==5||p(6,3)==6||p(6,3)==7
else
a51=[6 3];
plot(6,3,'o b',"MarkerSize",20)
end
if p(4,3)==1||p(4,3)==2||p(4,3)==3||p(4,3)==4||p(4,3)==5||p(4,3)==6||p(4,3)==7
else
a52=[4 3];
plot(4,3,'o b',"MarkerSize",20)
end
if p(4,1)==1||p(4,1)==2||p(4,1)==3||p(4,1)==4||p(4,1)==5||p(4,1)==6||p(4,1)==7
else
a53=[4 1];
plot(4,1,'o b',"MarkerSize",20)
end
if p(6,1)==1||p(6,1)==2||p(6,1)==3||p(6,1)==4||p(6,1)==5||p(6,1)==6||p(6,1)==7
else
a54=[6 1];
plot(6,1,'o b',"MarkerSize",20)
end
elseif c==4&&d==3
if p(5,2)==1||p(5,2)==2||p(5,2)==3||p(5,2)==4||p(5,2)==5||p(5,2)==6||p(5,2)==7
else
a54=[5,2];
plot(5,2,'o b',"MarkerSize",20)
end
elseif c==6&&d==3
if p(5,2)==1||p(5,2)==2||p(5,2)==3||p(5,2)==4||p(5,2)==5||p(5,2)==6||p(5,2)==7
else
a53=[5,2];
plot(5,2,'o b',"MarkerSize",20)
end
end
while(1) %如果坐标在备选位置中,则落子并改变为玩家1落子
[e,f]=ginput(1);
g=round(e);
h=round(f);
if g>=1&&h>=1
break
end
end
if (g==a51(1)&&h==a51(2))||(g==a52(1)&&h==a52(2))||(g==a53(1)&&h==a53(2))||(g==a54(1)&&h==a54(2))
p(c,d)=0;
p(g,h)=5;
player=1;
else
continue
end
case 6 %红方帅
if c==4&&d==1 %不同位置的不同备选位置
if p(5,1)==1||p(5,1)==2||p(5,1)==3||p(5,1)==4||p(5,1)==5||p(5,1)==6||p(5,1)==7
else
a61=[5 1];
plot(5,1,'o b',"MarkerSize",20)
end
if p(4,2)==1||p(4,2)==2||p(4,2)==3||p(4,2)==4||p(4,2)==5||p(4,2)==6||p(4,2)==7
else
a62=[4 2];
plot(4,2,'o b',"MarkerSize",20)
end
elseif c==5&&d==1
if p(6,1)==1||p(6,1)==2||p(6,1)==3||p(6,1)==4||p(6,1)==5||p(6,1)==6||p(6,1)==7
else
a61=[6 1];
plot(6,1,'o b',"MarkerSize",20)
end
if p(5,2)==1||p(5,2)==2||p(5,2)==3||p(5,2)==4||p(5,2)==5||p(5,2)==6||p(5,2)==7
else
a62=[5 2];
plot(5,2,'o b',"MarkerSize",20)
end
if p(4,1)==1||p(4,1)==2||p(4,1)==3||p(4,1)==4||p(4,1)==5||p(4,1)==6||p(4,1)==7
else
a63=[4 1];
plot(4,1,'o b',"MarkerSize",20)
end
elseif c==6&&d==1
if p(6,2)==1||p(6,2)==2||p(6,2)==3||p(6,2)==4||p(6,2)==5||p(6,2)==6||p(6,2)==7
else
a62=[6 2];
plot(6,2,'o b',"MarkerSize",20)
end
if p(5,1)==1||p(5,1)==2||p(5,1)==3||p(5,1)==4||p(5,1)==5||p(5,1)==6||p(5,1)==7
else
a63=[5 1];
plot(5,1,'o b',"MarkerSize",20)
end
elseif c==4&&d==2
if p(5,2)==1||p(5,2)==2||p(5,2)==3||p(5,2)==4||p(5,2)==5||p(5,2)==6||p(5,2)==7
else
a61=[5 2];
plot(5,2,'o b',"MarkerSize",20)
end
if p(4,3)==1||p(4,3)==2||p(4,3)==3||p(4,3)==4||p(4,3)==5||p(4,3)==6||p(4,3)==7
else
a62=[4 3];
plot(4,3,'o b',"MarkerSize",20)
end
if p(4,1)==1||p(4,1)==2||p(4,1)==3||p(4,1)==4||p(4,1)==5||p(4,1)==6||p(4,1)==7
else
a64=[4 1];
plot(4,1,'o b',"MarkerSize",20)
end
elseif c==5&&d==2
if p(6,2)==1||p(6,2)==2||p(6,2)==3||p(6,2)==4||p(6,2)==5||p(6,2)==6||p(6,2)==7
else
a61=[6 2];
plot(6,2,'o b',"MarkerSize",20)
end
if p(5,3)==1||p(5,3)==2||p(5,3)==3||p(5,3)==4||p(5,3)==5||p(5,3)==6||p(5,3)==7
else
a62=[5 3];
plot(5,3,'o b',"MarkerSize",20)
end
if p(4,2)==1||p(4,2)==2||p(4,2)==3||p(4,2)==4||p(4,2)==5||p(4,2)==6||p(4,2)==7
else
a63=[4 2];
plot(4,2,'o b',"MarkerSize",20)
end
if p(5,1)==1||p(5,1)==2||p(5,1)==3||p(5,1)==4||p(5,1)==5||p(5,1)==6||p(5,1)==7
else
a64=[5 1];
plot(5,1,'o b',"MarkerSize",20)
end
elseif c==6&&d==2
if p(6,3)==1||p(6,3)==2||p(6,3)==3||p(6,3)==4||p(6,3)==5||p(6,3)==6||p(6,3)==7
else
a62=[6 3];
plot(6,3,'o b',"MarkerSize",20)
end
if p(5,2)==1||p(5,2)==2||p(5,2)==3||p(5,2)==4||p(5,2)==5||p(5,2)==6||p(5,2)==7
else
a63=[5 2];
plot(5,2,'o b',"MarkerSize",20)
end
elseif c==4&&d==3
if p(5,3)==1||p(5,3)==2||p(5,3)==3||p(5,3)==4||p(5,3)==5||p(5,3)==6||p(5,3)==7
else
a61=[5 3];
plot(5,3,'o b',"MarkerSize",20)
end
if p(4,2)==1||p(4,2)==2||p(4,2)==3||p(4,2)==4||p(4,2)==5||p(4,2)==6||p(4,2)==7
else
a63=[4 2];
plot(4,2,'o b',"MarkerSize",20)
end
elseif c==5&&d==3
if p(6,3)==1||p(6,3)==2||p(6,3)==3||p(6,3)==4||p(6,3)==5||p(6,3)==6||p(6,3)==7
else
a61=[6 3];
plot(6,3,'o b',"MarkerSize",20)
end
if p(5,2)==1||p(5,2)==2||p(5,2)==3||p(5,2)==4||p(5,2)==5||p(5,2)==6||p(5,2)==7
else
a64=[5 2];
plot(5,2,'o b',"MarkerSize",20)
end
if p(4,3)==1||p(4,3)==2||p(4,3)==3||p(4,3)==4||p(4,3)==5||p(4,3)==6||p(4,3)==7
else
a63=[4 3];
plot(4,3,'o b',"MarkerSize",20)
end
elseif c==6&&d==3
if p(5,3)==1||p(5,3)==2||p(5,3)==3||p(5,3)==4||p(5,3)==5||p(5,3)==6||p(5,3)==7
else
a63=[5 3];
plot(5,3,'o b',"MarkerSize",20)
end
if p(6,2)==1||p(6,2)==2||p(6,2)==3||p(6,2)==4||p(6,2)==5||p(6,2)==6||p(6,2)==7
else
a64=[6 2];
plot(6,2,'o b',"MarkerSize",20)
end
end
while(1) %%如果坐标在备选位置中,则落子并改变为玩家1落子
[e,f]=ginput(1);
g=round(e);
h=round(f);
if g>=1&&h>=1
break
end
end
if (g==a61(1)&&h==a61(2))||(g==a62(1)&&h==a62(2))||(g==a63(1)&&h==a63(2))||(g==a64(1)&&h==a64(2))
p(c,d)=0;
p(g,h)=6;
player=1;
else
continue
end
case 7 %红方炮
for i=c+1:9 %不同位置的不同备选位置
if p(i,d)==0
plot(i,d,'o b',"MarkerSize",20)
a71x(i)=i;
a71y(i)=d;
continue
elseif p(i,d)~=0
tiao1(1)=i;
tiao1(2)=d;
break
end
end
for i=tiao1(1)+1:9
if p(i,d)==0
continue
elseif p(i,d)==1||p(i,d)==2||p(i,d)==3||p(i,d)==4||p(i,d)==5||p(i,d)==6||p(i,d)==7
if i~=c+1
break
elseif i==c+1
break
end
elseif p(i,d)==8||p(i,d)==9||p(i,d)==10||p(i,d)==11||p(i,d)==12||p(i,d)==13||p(i,d)==14
plot(i,d,'o b',"MarkerSize",20)
a71x(i)=i;
a71y(i)=d;
break
end
end
for j=d+1:10
if p(c,j)==0
plot(c,j,'o b',"MarkerSize",20)
a72x(j)=c;
a72y(j)=j;
continue
elseif p(c,j)~=0
tiao2(1)=c;
tiao2(2)=j;
break
end
end
for j=tiao2(2)+1:10
if p(c,j)==0
continue
elseif p(c,j)==1||p(c,j)==2||p(c,j)==3||p(c,j)==4||p(c,j)==5||p(c,j)==6||p(c,j)==7
if j~=d+1
break
elseif j==d+1
break
end
elseif p(c,j)==8||p(c,j)==9||p(c,j)==10||p(c,j)==11||p(c,j)==12||p(c,j)==13||p(c,j)==14
plot(c,j,'o b',"MarkerSize",20)
a72x(j)=c;
a72y(j)=j;
break
end
end
for i=c-1:-1:1
if p(i,d)==0
plot(i,d,'o b',"MarkerSize",20)
a73x(i)=i;
a73y(i)=d;
continue
elseif p(i,d)~=0
tiao3(1)=i;
tiao3(2)=d;
break
end
end
for i=tiao3(1)-1:-1:1
if p(i,d)==0
continue
elseif p(i,d)==1||p(i,d)==2||p(i,d)==3||p(i,d)==4||p(i,d)==5||p(i,d)==6||p(i,d)==7
if i~=c+1
break
elseif i==c+1
break
end
elseif p(i,d)==8||p(i,d)==9||p(i,d)==10||p(i,d)==11||p(i,d)==12||p(i,d)==13||p(i,d)==14
plot(i,d,'o b',"MarkerSize",20)
a73x(i)=i;
a73y(i)=d;
break
end
end
for j=d-1:-1:1
if p(c,j)==0
plot(c,j,'o b',"MarkerSize",20)
a74x(j)=c;
a74y(j)=j;
continue
elseif p(c,j)~=0
tiao4(1)=c;
tiao4(2)=j;
break
end
end
for j=tiao4(2)-1:-1:1
if p(c,j)==0
continue
elseif p(c,j)==1||p(c,j)==2||p(c,j)==3||p(c,j)==4||p(c,j)==5||p(c,j)==6||p(c,j)==7
if j~=d-1
break
elseif j==d+1
break
end
elseif p(c,j)==8||p(c,j)==9||p(c,j)==10||p(c,j)==11||p(c,j)==12||p(c,j)==13||p(c,j)==14
plot(c,j,'o b',"MarkerSize",20)
a42x(j)=c;
a42y(j)=j;
break
end
end
while(1) %如果坐标在备选位置中,则落子并改变为玩家1落子
[e,f]=ginput(1);
g=round(e);
h=round(f);
if g>=1&&h>=1
break
end
end
for i=1:length(a71x)
if g==a71x(i)&&h==a71y(i)
p(c,d)=0;
p(g,h)=7;
player=1;
else
continue
end
end
for i=1:length(a72x)
if g==a72x(i)&&h==a72y(i)
p(c,d)=0;
p(g,h)=7;
player=1;
else
continue
end
end
for i=1:length(a73x)
if g==a73x(i)&&h==a73y(i)
p(c,d)=0;
p(g,h)=7;
player=1;
else
continue
end
end
for i=1:length(a74x)
if g==a74x(i)&&h==a74y(i)
p(c,d)=0;
p(g,h)=7;
player=1;
else
continue
end
end
end
%-------------------------------------------------------------------------------------------
else %判断是否黑方落棋
switch p(c,d) %如果点击黑方棋子,将棋子变绿
case {8 9 10 11 12 13 14}
plot(c,d,'o g',"MarkerSize",20)
otherwise
end
switch p(c,d) %根据棋子类型,用蓝色显示出可以所有落棋的位置并用输入落棋点
case 8 %黑方判定与输入与红方相同
if d<=5
if c==1
switch p(c,d)
case {0 1 2 3 4 5 6 7}
plot(c+1,d,'o b',"MarkerSize",20)
a81=[c+1 d];
otherwise
end
switch p(c,d)
case {0 1 2 3 4 5 6 7}
plot(c,d-1,'o b',"MarkerSize",20)
a82=[c d-1];
otherwise
end
elseif c>=2&&c<=8
switch p(c+1,d)
case {0 1 2 3 4 5 6 7}
plot(c+1,d,'o b',"MarkerSize",20)
a81=[c+1 d];
otherwise
a81=[0 0];
end
switch p(c-1,d)
case {0 1 2 3 4 5 6 7}
plot(c-1,d,'o b',"MarkerSize",20)
a83=[c-1 d];
otherwise
a83=[0 0];
end
switch p(c,d-1)
case {0 1 2 3 4 5 6 7}
plot(c,d-1,'o b',"MarkerSize",20)
a82=[c d-1];
otherwise
a82=[0 0];
end
elseif c==9
switch p(c-1,d)
case {0 1 2 3 4 5 6 7}
plot(c-1,d,'o b',"MarkerSize",20)
a83=[c-1 d];
otherwise
a83=[0 0];
end
switch p(c,d-1)
case {0 1 2 3 4 5 6 7}
plot(c,d-1,'o b',"MarkerSize",20)
a82=[c d-1];
otherwise
a82=[0 0];
end
end
else
switch p(c,d-1)
case {0 1 2 3 4 5 6 7}
plot(c,d-1,'o b',"MarkerSize",20)
a82=[c d-1];
otherwise
a82=[0 0];
end
end
while(1)
[e,f]=ginput(1);
g=round(e);
h=round(f);
if g>=1&&h>=1
break
end
end
if (g==a81(1)&&h==a81(2))||(g==a82(1)&&h==a82(2))||(g==a83(1)&&h==a83(2))
p(c,d)=0;
p(g,h)=8;
player=0;
end
case 9
for i=c+1:9
if p(i,d)==0
plot(i,d,'o b',"MarkerSize",20)
a91x(i)=i;
a91y(i)=d;
elseif p(i,d)==8||p(i,d)==9||p(i,d)==10||p(i,d)==11||p(i,d)==12||p(i,d)==13||p(i,d)==14
if i~=c+1
plot(i-1,d,'o b',"MarkerSize",20)
break
elseif i==c+1
break
end
elseif p(i,d)==1||p(i,d)==2||p(i,d)==3||p(i,d)==4||p(i,d)==5||p(i,d)==6||p(i,d)==7
plot(i,d,'o b',"MarkerSize",20)
a91x(i)=i;
a91y(i)=d;
break
end
end
for i=c-1:-1:1
if p(i,d)==0
plot(i,d,'o b',"MarkerSize",20)
a93x(i)=i;
a93y(i)=d;
elseif p(i,d)==8||p(i,d)==9||p(i,d)==10||p(i,d)==11||p(i,d)==12||p(i,d)==13||p(i,d)==14
if i~=c-1
plot(i+1,d,'o b',"MarkerSize",20)
break
elseif i==c-1
break
end
elseif p(i,d)==1||p(i,d)==2||p(i,d)==3||p(i,d)==4||p(i,d)==5||p(i,d)==6||p(i,d)==7
plot(i,d,'o b',"MarkerSize",20)
a93x(i)=i;
a93y(i)=d;
break
end
end
for j=d+1:10
if p(c,j)==0
plot(c,j,'o b',"MarkerSize",20)
a92x(j)=c;
a92y(j)=j;
elseif p(c,j)==8||p(c,j)==9||p(c,j)==10||p(c,j)==11||p(c,j)==12||p(c,j)==13||p(c,j)==14
if j~=d+1
plot(c,j-1,'o b',"MarkerSize",20)
break
elseif j==d+1
d2=0;
break
end
elseif p(c,j)==1||p(c,j)==2||p(c,j)==3||p(c,j)==4||p(c,j)==5||p(c,j)==6||p(c,j)==7
plot(c,j,'o b',"MarkerSize",20)
a92x(j)=c;
a92y(j)=j;
break
end
end
for j=d-1:-1:1
if p(c,j)==0
plot(c,j,'o b',"MarkerSize",20)
a94x(j)=c;
a94y(j)=j;
elseif p(c,j)==8||p(c,j)==9||p(c,j)==10||p(c,j)==11||p(c,j)==12||p(c,j)==13||p(c,j)==14
if j~=d-1
plot(c,j+1,'o b',"MarkerSize",20)
break
elseif j==d-1
break
end
elseif p(c,j)==1||p(c,j)==2||p(c,j)==3||p(c,j)==4||p(c,j)==5||p(c,j)==6||p(c,j)==7
plot(c,j,'o b',"MarkerSize",20)
a94x(j)=c;
a94y(j)=j;
break
end
end
while(1)
[e,f]=ginput(1);
g=round(e);
h=round(f);
if g>=1&&h>=1
break
end
end
for i=1:length(a91x)
if g==a91x(i)&&h==a91y(i)
p(c,d)=0;
p(g,h)=9;
player=0;
else
continue
end
end
for i=1:length(a92x)
if g==a92x(i)&&h==a92y(i)
p(c,d)=0;
p(g,h)=9;
player=0;
else
continue
end
end
for i=1:length(a93x)
if g==a93x(i)&&h==a93y(i)
p(c,d)=0;
p(g,h)=9;
player=0;
else
continue
end
end
for i=1:length(a94x)
if g==a94x(i)&&h==a94y(i)
p(c,d)=0;
p(g,h)=9;
player=0;
else
continue
end
end
case 10
a101=[c+2,d+1];
a102=[c+1,d+2];
a103=[c-1,d+2];
a104=[c-2,d+1];
a105=[c-2,d-1];
a106=[c-1,d-2];
a107=[c+1,d-2];
a108=[c+2,d-1];
if c==9||c==8
a101=[0 0];
elseif d==10
a101=[0 0];
elseif p(c+1,d)~=0
a101=[0 0];
elseif p(c+2,d+1)==8||p(c+2,d+1)==9||p(c+2,d+1)==10||p(c+2,d+1)==11||p(c+2,d+1)==12||p(c+2,d+1)==13||p(c+2,d+1)==14
a101=[0 0];
else
plot(c+2,d+1,'o b',"MarkerSize",20)
end
if c==9
a102=[0 0];
elseif d==10||d==9
a102=[0 0];
elseif p(c,d+1)~=0
a102=[0 0];
elseif p(c+1,d+2)==8||p(c+1,d+2)==9||p(c+1,d+2)==10||p(c+1,d+2)==11||p(c+1,d+2)==12||p(c+1,d+2)==13||p(c+1,d+2)==14
a102=[0 0];
else
plot(c+1,d+2,'o b',"MarkerSize",20)
end
if c==1
a103=[0 0];
elseif d==10||d==9
a103=[0 0];
elseif p(c,d+1)~=0
a103=[0 0];
elseif p(c-1,d+2)==8||p(c-1,d+2)==9||p(c-1,d+2)==10||p(c-1,d+2)==11||p(c-1,d+2)==12||p(c-1,d+2)==13||p(c-1,d+2)==14
a103=[0 0];
else
plot(c-1,d+2,'o b',"MarkerSize",20)
end
if c==1||c==2
a104=[0 0];
elseif d==10
a104=[0 0];
elseif p(c-1,d)~=0
a104=[0 0];
elseif p(c-2,d+1)==8||p(c-2,d+1)==9||p(c-2,d+1)==10||p(c-2,d+1)==11||p(c-2,d+1)==12||p(c-2,d+1)==13||p(c-2,d+1)==14
a104=[0 0];
else
plot(c-2,d+1,'o b',"MarkerSize",20)
end
if c==1||c==2
a105=[0 0];
elseif d==1
a105=[0 0];
elseif p(c-1,d)~=0
a105=[0 0];
elseif p(c-2,d-1)==8||p(c-2,d-1)==9||p(c-2,d-1)==10||p(c-2,d-1)==11||p(c-2,d-1)==12||p(c-2,d-1)==13||p(c-2,d-1)==14
a105=[0 0];
else
plot(c-2,d-1,'o b',"MarkerSize",20)
end
if c==1
a106=[0 0];
elseif d==1||d==2
a106=[0 0];
elseif p(c,d-1)~=0
a106=[0 0];
elseif p(c-1,d-2)==8||p(c-1,d-2)==9||p(c-1,d-2)==10||p(c-1,d-2)==11||p(c-1,d-2)==12||p(c-1,d-2)==13||p(c-1,d-2)==14
a106=[0 0];
else
plot(c-1,d-2,'o b',"MarkerSize",20)
end
if c==9
a107=[0 0];
elseif d==1||d==2
a107=[0 0];
elseif p(c,d-1)~=0
a107=[0 0];
elseif p(c+1,d-2)==8||p(c+1,d-2)==9||p(c+1,d-2)==10||p(c+1,d-2)==11||p(c+1,d-2)==12||p(c+1,d-2)==13||p(c+1,d-2)==14
a107=[0 0];
else
plot(c+1,d-2,'o b',"MarkerSize",20)
end
if c==9||c==8
a108=[0 0];
elseif d==1
a108=[0 0];
elseif p(c+1,d)~=0
a108=[0 0];
elseif p(c+2,d-1)==8||p(c+2,d-1)==9||p(c+2,d-1)==10||p(c+2,d-1)==11||p(c+2,d-1)==12||p(c+2,d-1)==13||p(c+2,d-1)==14
a108=[0 0];
else
plot(c+2,d-1,'o b',"MarkerSize",20)
end
while(1)
[e,f]=ginput(1);
g=round(e);
h=round(f);
if g>=1&&h>=1
break
end
end
if (g==a101(1)&&h==a101(2))||(g==a102(1)&&h==a102(2))||(g==a103(1)&&h==a103(2))||(g==a104(1)&&h==a104(2))||(g==a105(1)&&h==a105(2))||(g==a106(1)&&h==a106(2))||(g==a107(1)&&h==a107(2))||(g==a108(1)&&h==a108(2))
p(c,d)=0;
p(g,h)=10;
player=0;
else
continue
end
case 11
if c==3&&d==10
if p(2,9)==0
if p(1,8)==8||p(1,8)==9||p(1,8)==10||p(1,8)==11||p(1,8)==12||p(1,8)==13||p(1,8)==14
else
a113=[1 8];
plot(1,8,'o b',"MarkerSize",20)
end
else
end
if p(4,9)==0
if p(5,8)==8||p(5,8)==9||p(5,8)==10||p(5,8)==11||p(5,8)==12||p(5,8)==13||p(5,8)==14
else
a114=[5 8];
plot(5,8,'o b',"MarkerSize",20)
end
end
elseif c==7&&d==10
if p(6,9)==0
if p(5,8)==8||p(5,8)==9||p(5,8)==10||p(5,8)==11||p(5,8)==12||p(5,8)==13||p(5,8)==14
else
a113=[5 8];
plot(5,8,'o b',"MarkerSize",20)
end
else
end
if p(8,9)==0
if p(9,8)==8||p(9,8)==9||p(9,8)==10||p(9,8)==11||p(9,8)==12||p(9,8)==13||p(9,8)==14
else
a114=[9 8];
plot(9,8,'o b',"MarkerSize",20)
end
else
end
elseif c==1&&d==8
if p(2,9)==0
if p(3,10)==8||p(3,10)==9||p(3,10)==10||p(3,10)==11||p(3,10)==12||p(3,10)==13||p(3,10)==14
else
a111=[3 10];
plot(3,10,'o b',"MarkerSize",20)
end
else
end
if p(2,7)==0
if p(3,6)==8||p(3,6)==9||p(3,6)==10||p(3,6)==11||p(3,6)==12||p(3,6)==13||p(3,6)==14
else
a114=[3,6];
plot(3,6,'o b',"MarkerSize",20)
end
else
end
elseif c==5&&d==8
if p(6,9)==0
if p(7,10)==8||p(7,10)==9||p(7,10)==10||p(7,10)==11||p(7,10)==12||p(7,10)==13||p(7,10)==14
else
a111=[7 10];
plot(7,10,'o b',"MarkerSize",20)
end
else
end
if p(4,9)==0
if p(3,10)==8||p(3,10)==9||p(3,10)==10||p(3,10)==11||p(3,10)==12||p(3,10)==13||p(3,10)==14
else
a112=[3 10];
plot(3,10,'o b',"MarkerSize",20)
end
else
end
if p(4,7)==0
if p(3,6)==8||p(3,6)==9||p(3,6)==10||p(3,6)==11||p(3,6)==12||p(3,6)==13||p(3,6)==14
else
a113=[3 6];
plot(3,6,'o b',"MarkerSize",20)
end
else
end
if p(6,7)==0
if p(7,6)==8||p(7,6)==9||p(7,6)==10||p(7,6)==11||p(7,6)==12||p(7,6)==13||p(7,6)==14
else
a114=[7 6];
plot(7,6,'o b',"MarkerSize",20)
end
else
end
elseif c==9&&d==8
if p(8,9)==0
if p(7,10)==8||p(7,10)==9||p(7,10)==10||p(7,10)==11||p(7,10)==12||p(7,10)==13||p(7,10)==14
else
a112=[7 10];
plot(7,10,'o b',"MarkerSize",20)
end
else
end
if p(8,7)==0
if p(7,6)==8||p(7,6)==9||p(7,6)==10||p(7,6)==11||p(7,6)==12||p(7,6)==13||p(7,6)==14
else
a113=[7 6];
plot(7,6,'o b',"MarkerSize",20)
end
else
end
elseif c==3&&d==6
if p(4,7)==0
if p(5,8)==8||p(5,8)==9||p(5,8)==10||p(5,8)==11||p(5,8)==12||p(5,8)==13||p(5,8)==14
else
a111=[5 8];
plot(5,8,'o b',"MarkerSize",20)
end
else
end
if p(2,7)==0
if p(1,8)==8||p(1,8)==9||p(1,8)==10||p(1,8)==11||p(1,8)==12||p(1,8)==13||p(1,8)==14
else
a112=[1 8];
plot(1,8,'o b',"MarkerSize",20)
end
else
end
elseif c==7&&d==6
if p(8,7)==0
if p(9,8)==8||p(9,8)==9||p(9,8)==10||p(9,8)==11||p(9,8)==12||p(9,8)==13||p(9,8)==14
else
a111=[9 8];
plot(9,8,'o b',"MarkerSize",20)
end
else
end
if p(6,7)==0
if p(5,8)==8||p(5,8)==9||p(5,8)==10||p(5,8)==11||p(5,8)==12||p(5,8)==13||p(5,8)==14
else
a112=[5 8];
plot(5,8,'o b',"MarkerSize",20)
end
else
end
end
while(1)
[e,f]=ginput(1);
g=round(e);
h=round(f);
if g>=1&&h>=1
break
end
end
if (g==a111(1)&&h==a111(2))||(g==a112(1)&&h==a112(2))||(g==a113(1)&&h==a113(2))||(g==a114(1)&&h==a114(2))
p(c,d)=0;
p(g,h)=11;
player=0;
else
end
case 12
if c==4&&d==10
if p(5,9)==8||p(5,9)==9||p(5,9)==10||p(5,9)==11||p(5,9)==12||p(5,9)==13||p(5,9)==14
else
a124=[5 9];
plot(5,9,'o b',"MarkerSize",20)
end
elseif c==6&&d==10
if p(5,9)==8||p(5,9)==9||p(5,9)==10||p(5,9)==11||p(5,9)==12||p(5,9)==13||p(5,9)==14
else
a123=[5 9];
plot(5,9,'o b',"MarkerSize",20)
end
elseif c==5&&d==9
if p(6,10)==8||p(6,10)==9||p(6,10)==10||p(6,10)==11||p(6,10)==12||p(6,10)==13||p(6,10)==14
else
a121=[6 10];
plot(6,10,'o b',"MarkerSize",20)
end
if p(4,10)==8||p(4,10)==9||p(4,10)==10||p(4,10)==11||p(4,10)==12||p(4,10)==13||p(4,10)==14
else
a122=[4 10];
plot(4,10,'o b',"MarkerSize",20)
end
if p(4,8)==8||p(4,8)==9||p(4,8)==10||p(4,8)==11||p(4,8)==12||p(4,8)==13||p(4,8)==14
else
a123=[4 8];
plot(4,8,'o b',"MarkerSize",20)
end
if p(6,8)==8||p(6,8)==9||p(6,8)==10||p(6,8)==11||p(6,8)==12||p(6,8)==13||p(6,8)==14
else
a124=[6 8];
plot(6,8,'o b',"MarkerSize",20)
end
elseif c==4&&d==8
if p(5,9)==8||p(5,9)==9||p(5,9)==10||p(5,9)==11||p(5,9)==12||p(5,9)==13||p(5,9)==14
else
a121=[5 9];
plot(5,9,'o b',"MarkerSize",20)
end
elseif c==6&&d==8
if p(5,9)==8||p(5,9)==9||p(5,9)==10||p(5,9)==11||p(5,9)==12||p(5,9)==13||p(5,9)==14
else
a122=[5 9];
plot(5,9,'o b',"MarkerSize",20)
end
end
while(1)
[e,f]=ginput(1);
g=round(e);
h=round(f);
if g>=1&&h>=1
break
end
end
if (g==a121(1)&&h==a121(2))||(g==a122(1)&&h==a122(2))||(g==a123(1)&&h==a123(2))||(g==a124(1)&&h==a124(2))
p(c,d)=0;
p(g,h)=12;
player=0;
else
end
case 13
if c==4&&d==10
if p(5,10)==8||p(5,10)==9||p(5,10)==10||p(5,10)==11||p(5,10)==12||p(5,10)==13||p(5,10)==14
else
a131=[5,10];
plot(5,10,'o b',"MarkerSize",20)
end
if p(4,9)==8||p(4,9)==9||p(4,9)==10||p(4,9)==11||p(4,9)==12||p(4,9)==13||p(4,9)==14
else
a134=[4 9];
plot(4,9,'o b',"MarkerSize",20)
end
elseif c==5&&d==10
if p(6,10)==8||p(6,10)==9||p(6,10)==10||p(6,10)==11||p(6,10)==12||p(6,10)==13||p(6,10)==14
else
a131=[6 10];
plot(6,10,'o b',"MarkerSize",20)
end
if p(4,10)==8||p(4,10)==9||p(4,10)==10||p(4,10)==11||p(4,10)==12||p(4,10)==13||p(4,10)==14
else
a133=[4 10];
plot(4,10,'o b',"MarkerSize",20)
end
if p(5,9)==8||p(5,9)==9||p(5,9)==10||p(5,9)==11||p(5,9)==12||p(5,9)==13||p(5,9)==14
else
a134=[5 9];
plot(5,9,'o b',"MarkerSize",20)
end
elseif c==6&&d==10
if p(5,10)==8||p(5,10)==9||p(5,10)==10||p(5,10)==11||p(5,10)==12||p(5,10)==13||p(5,10)==14
else
a133=[5,10];
plot(5,10,'o b',"MarkerSize",20)
end
if p(6,9)==8||p(6,9)==9||p(6,9)==10||p(6,9)==11||p(6,9)==12||p(6,9)==13||p(6,9)==14
else
a134=[6 9];
plot(6,9,'o b',"MarkerSize",20)
end
elseif c==4&&d==9
if p(5,9)==8||p(5,9)==9||p(5,9)==10||p(5,9)==11||p(5,9)==12||p(5,9)==13||p(5,9)==14
else
a131=[5 9];
plot(5,9,'o b',"MarkerSize",20)
end
if p(4,10)==8||p(4,10)==9||p(4,10)==10||p(4,10)==11||p(4,10)==12||p(4,10)==13||p(4,10)==14
else
a132=[4 10];
plot(4,10,'o b',"MarkerSize",20)
end
if p(4,8)==8||p(4,8)==9||p(4,8)==10||p(4,8)==11||p(4,8)==12||p(4,8)==13||p(4,8)==14
else
a134=[4 8];
plot(4,8,'o b',"MarkerSize",20)
end
elseif c==5&&d==9
if p(6,9)==8||p(6,9)==9||p(6,9)==10||p(6,9)==11||p(6,9)==12||p(6,9)==13||p(6,9)==14
else
a131=[6 9];
plot(6,9,'o b',"MarkerSize",20)
end
if p(5,10)==8||p(5,10)==9||p(5,10)==10||p(5,10)==11||p(5,10)==12||p(5,10)==13||p(5,10)==14
else
a132=[5,10];
plot(5,10,'o b',"MarkerSize",20)
end
if p(4,9)==8||p(4,9)==9||p(4,9)==10||p(4,9)==11||p(4,9)==12||p(4,9)==13||p(4,9)==14
else
a133=[4 9];
plot(4,9,'o b',"MarkerSize",20)
end
if p(5,8)==8||p(5,8)==9||p(5,8)==10||p(5,8)==11||p(5,8)==12||p(5,8)==13||p(5,8)==14
else
a134=[5 8];
plot(5,8,'o b',"MarkerSize",20)
end
elseif c==6&&d==9
if p(6,10)==8||p(6,10)==9||p(6,10)==10||p(6,10)==11||p(6,10)==12||p(6,10)==13||p(6,10)==14
else
a132=[6 10];
plot(6,10,'o b',"MarkerSize",20)
end
if p(5,9)==8||p(5,9)==9||p(5,9)==10||p(5,9)==11||p(5,9)==12||p(5,9)==13||p(5,9)==14
else
a133=[5 9];
plot(5,9,'o b',"MarkerSize",20)
end
if p(6,8)==8||p(6,8)==9||p(6,8)==10||p(6,8)==11||p(6,8)==12||p(6,8)==13||p(6,8)==14
else
a134=[6 8];
plot(6,8,'o b',"MarkerSize",20)
end
elseif c==4&&d==8
if p(5,8)==8||p(5,8)==9||p(5,8)==10||p(5,8)==11||p(5,8)==12||p(5,8)==13||p(5,8)==14
else
a131=[5 8];
plot(5,8,'o b',"MarkerSize",20)
end
if p(4,9)==8||p(4,9)==9||p(4,9)==10||p(4,9)==11||p(4,9)==12||p(4,9)==13||p(4,9)==14
else
a132=[4 9];
plot(4,9,'o b',"MarkerSize",20)
end
elseif c==5&&d==8
if p(6,8)==8||p(6,8)==9||p(6,8)==10||p(6,8)==11||p(6,8)==12||p(6,8)==13||p(6,8)==14
else
a131=[6 8];
plot(6,8,'o b',"MarkerSize",20)
end
if p(5,9)==8||p(5,9)==9||p(5,9)==10||p(5,9)==11||p(5,9)==12||p(5,9)==13||p(5,9)==14
else
a132=[5 9];
plot(5,9,'o b',"MarkerSize",20)
end
if p(4,8)==8||p(4,8)==9||p(4,8)==10||p(4,8)==11||p(4,8)==12||p(4,8)==13||p(4,8)==14
else
a133=[4 8];
plot(4,8,'o b',"MarkerSize",20)
end
elseif c==6&&d==8
if p(6,9)==8||p(6,9)==9||p(6,9)==10||p(6,9)==11||p(6,9)==12||p(6,9)==13||p(6,9)==14
else
a132=[6 9];
plot(6,9,'o b',"MarkerSize",20)
end
if p(5,8)==8||p(5,8)==9||p(5,8)==10||p(5,8)==11||p(5,8)==12||p(5,8)==13||p(5,8)==14
else
a133=[5 8];
plot(5,8,'o b',"MarkerSize",20)
end
end
while(1)
[e,f]=ginput(1);
g=round(e);
h=round(f);
if g>=1&&h>=1
break
end
end
if (g==a131(1)&&h==a131(2))||(g==a132(1)&&h==a132(2))||(g==a133(1)&&h==a133(2))||(g==a134(1)&&h==a134(2))
p(c,d)=0;
p(g,h)=13;
player=0;
else
end
case 14
for i=c+1:9
if p(i,d)==0
plot(i,d,'o b',"MarkerSize",20)
a141x(i)=i;
a141y(i)=d;
continue
elseif p(i,d)~=0
tiao1(1)=i;
tiao1(2)=d;
break
end
end
for i=tiao1(1)+1:9
if p(i,d)==0
continue
elseif p(i,d)==8||p(i,d)==9||p(i,d)==10||p(i,d)==11||p(i,d)==12||p(i,d)==13||p(i,d)==14
if i~=c+1
break
elseif i==c+1
break
end
elseif p(i,d)==1||p(i,d)==2||p(i,d)==3||p(i,d)==4||p(i,d)==5||p(i,d)==6||p(i,d)==7
plot(i,d,'o b',"MarkerSize",20)
a141x(i)=i;
a141y(i)=d;
break
end
end
for j=d+1:10
if p(c,j)==0
plot(c,j,'o b',"MarkerSize",20)
a142x(j)=c;
a142y(j)=j;
continue
elseif p(c,j)~=0
tiao2(1)=c;
tiao2(2)=j;
break
end
end
for j=tiao2(2)+1:10
if p(c,j)==0
continue
elseif p(c,j)==8||p(c,j)==9||p(c,j)==10||p(c,j)==11||p(c,j)==12||p(c,j)==13||p(c,j)==14
if j~=d+1
break
elseif j==d+1
break
end
elseif p(c,j)==1||p(c,j)==2||p(c,j)==3||p(c,j)==4||p(c,j)==5||p(c,j)==6||p(c,j)==7
plot(c,j,'o b',"MarkerSize",20)
a142x(j)=c;
a142y(j)=j;
break
end
end
for i=c-1:-1:1
if p(i,d)==0
plot(i,d,'o b',"MarkerSize",20)
a143x(i)=i;
a143y(i)=d;
continue
elseif p(i,d)~=0
tiao3(1)=i;
tiao3(2)=d;
break
end
end
for i=tiao3(1)-1:-1:1
if p(i,d)==0
continue
elseif p(i,d)==8||p(i,d)==9||p(i,d)==10||p(i,d)==11||p(i,d)==12||p(i,d)==13||p(i,d)==14
if i~=c+1
break
elseif i==c+1
break
end
elseif p(i,d)==1||p(i,d)==2||p(i,d)==3||p(i,d)==4||p(i,d)==5||p(i,d)==6||p(i,d)==7
plot(i,d,'o b',"MarkerSize",20)
a143x(i)=i;
a143y(i)=d;
break
end
end
for j=d-1:-1:1
if p(c,j)==0
plot(c,j,'o b',"MarkerSize",20)
a144x(j)=c;
a144y(j)=j;
continue
elseif p(c,j)~=0
tiao4(1)=c;
tiao4(2)=j;
break
end
end
for j=tiao4(2)-1:-1:1
if p(c,j)==0
continue
elseif p(c,j)==8||p(c,j)==9||p(c,j)==10||p(c,j)==11||p(c,j)==12||p(c,j)==13||p(c,j)==14
if j~=d-1
break
elseif j==d+1
break
end
elseif p(c,j)==1||p(c,j)==2||p(c,j)==3||p(c,j)==4||p(c,j)==5||p(c,j)==6||p(c,j)==7
plot(c,j,'o b',"MarkerSize",20)
a144x(j)=c;
a144y(j)=j;
break
end
end
while(1)
[e,f]=ginput(1);
g=round(e);
h=round(f);
if g>=1&&h>=1
break
end
end
for i=1:length(a141x)
if g==a141x(i)&&h==a141y(i)
p(c,d)=0;
p(g,h)=14;
player=0;
else
continue
end
end
for i=1:length(a142x)
if g==a142x(i)&&h==a142y(i)
p(c,d)=0;
p(g,h)=14;
player=0;
else
continue
end
end
for i=1:length(a143x)
if g==a143x(i)&&h==a143y(i)
p(c,d)=0;
p(g,h)=14;
player=0;
else
continue
end
end
for i=1:length(a144x)
if g==a144x(i)&&h==a144y(i)
p(c,d)=0;
p(g,h)=14;
player=0;
else
continue
end
end
end
end
落子后重新绘制一次棋盘和棋子
代码:
clf %落子后重新绘制一次棋盘和棋子
hold on
axis([1,9,1,10]);
axis square;
x=1:9;
y=1:10;
shu1=linspace(10,10,9);
shu2=linspace(6,6,9);
shu3=[10,5,5,5,5,5,5,5,10];
stem(x,shu1,'- . k',"MarkerSize",0.001);
stem(x,shu2,'- . w',"MarkerSize",0.001);
stem(x,shu3,'- . k',"MarkerSize",0.001);
xie1x=[4,5,6,5,6,5,4];
xie1y=[1,2,1,2,3,2,3];
xie2x=[4,5,6,5,6,5,4];
xie2y=[10,9,10,9,8,9,8];
for i=1:10
for j=1:9
heng(i,j)=11-i;
end
plot(x,heng(i,:),'k-')
end
plot(xie1x,xie1y,'k')
plot(xie2x,xie2y,'k')
for i=1:9
for j=1:10
switch p(i,j)
case 1
plot(i,j,'o r',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'兵',"Color",[1 0 0])
case 2
plot(i,j,'o r',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'车',"Color",[1 0 0])
case 3
plot(i,j,'o r',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'马',"Color",[1 0 0])
case 4
plot(i,j,'o r',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'象',"Color",[1 0 0])
case 5
plot(i,j,'o r',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'士',"Color",[1 0 0])
case 6
plot(i,j,'o r',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'帅',"Color",[1 0 0])
case 7
plot(i,j,'o r',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'炮',"Color",[1 0 0])
case 8
plot(i,j,'o k',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'兵',"Color",[0 0 0])
case 9
plot(i,j,'o k',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'车',"Color",[0 0 0])
case 10
plot(i,j,'o k',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'马',"Color",[0 0 0])
case 11
plot(i,j,'o k',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'象',"Color",[0 0 0])
case 12
plot(i,j,'o k',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'士',"Color",[0 0 0])
case 13
plot(i,j,'o k',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'帅',"Color",[0 0 0])
case 14
plot(i,j,'o k',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'炮',"Color",[0 0 0])
otherwise
continue
end
end
end
效果:
判断游戏是否结束(将帅被吃或者将帅碰面)
代码:
hongshuai=0; %初始化红方帅状态
heishuai=0; %初始化黑方帅状态
for i=1:9 %更新红方帅状态
for j=1:10
if p(i,j)==6
hongshuai=1;
p6(1)=i;
p6(2)=j;
break
else
end
end
end
for i=1:9 %更新黑方帅状态
for j=1:10
if p(i,j)==13
heishuai=1;
p13(1)=i;
p13(2)=j;
break
else
continue
end
end
end
if p6(1)==p13(1) %判定将帅是否碰面
for j=p6(2)+1:p13(2)
if p(p6(1),j)==0||p(p6(1),j)==13
zhishuai=1;
continue
else
zhishuai=0;
break
end
end
end
if (hongshuai==1&&heishuai==1) %判断游戏是否结束
if zhishuai==0
continue
elseif zhishuai==1
return
end
else
return
end
整体代码:
代码:
%0:空位
%1:红-兵
%2:红-车
%3:红-马
%4:红-象
%5:红-士
%6:红-帅
%7:红-炮
%8:黑-兵
%9:黑-车
%10:黑-马
%11:黑-象
%12:黑-士
%13:黑-帅
%14:黑-炮
clear;
clf;
clc;
p=zeros(9,10);
player=0;
d2=1;
a11=[0 0]; %初始化各个棋子各方位的可移动位置
a12=[0 0];
a13=[0 0];
a21x=0;
a21y=0;
a22x=0;
a22y=0;
a23x=0;
a23y=0;
a24x=0;
a24y=0;
a31=[0,0];
a32=[0,0];
a33=[0,0];
a34=[0,0];
a35=[0,0];
a36=[0,0];
a37=[0,0];
a38=[0,0];
a41=[0 0];
a42=[0 0];
a43=[0 0];
a44=[0 0];
a51=[0 0];
a52=[0 0];
a53=[0 0];
a54=[0 0];
a61=[0 0];
a62=[0 0];
a63=[0 0];
a64=[0 0];
a71x=0;
a71y=0;
a72x=0;
a72y=0;
a73x=0;
a73y=0;
a74x=0;
a74y=0;
a81=[0 0];
a82=[0 0];
a83=[0 0];
a91x=0;
a91y=0;
a92x=0;
a92y=0;
a93x=0;
a93y=0;
a94x=0;
a94y=0;
a101=[0 0];
a102=[0 0];
a103=[0 0];
a104=[0 0];
a105=[0 0];
a106=[0 0];
a107=[0 0];
a108=[0 0];
a111=[0 0];
a112=[0 0];
a113=[0 0];
a114=[0 0];
a121=[0 0];
a122=[0 0];
a123=[0 0];
a124=[0 0];
a131=[0 0];
a132=[0 0];
a133=[0 0];
a134=[0 0];
a141x=0;
a141y=0;
a142x=0;
a142y=0;
a143x=0;
a143y=0;
a144x=0;
a144y=0;
tiao1=[0 0]; %初始化炮跳板位置
tiao2=[0 0];
tiao3=[0 0];
tiao4=[0 0];
%--------------------------------------------------------------------------------
p(1,4)=1; %初始化红方棋子位置
p(3,4)=1;
p(5,4)=1;
p(7,4)=1;
p(9,4)=1;
p(9,1)=2;
p(1,1)=2;
p(2,1)=3;
p(8,1)=3;
p(3,1)=4;
p(7,1)=4;
p(4,1)=5;
p(6,1)=5;
p(5,1)=6;
p(2,3)=7;
p(8,3)=7;
%---------------------------------------------------------------------------------
p(1,7)=8; %初始化黑方棋子位置
p(3,7)=8;
p(5,7)=8;
p(7,7)=8;
p(9,7)=8;
p(1,10)=9;
p(9,10)=9;
p(2,10)=10;
p(8,10)=10;
p(3,10)=11;
p(7,10)=11;
p(4,10)=12;
p(6,10)=12;
p(5,10)=13;
p(2,8)=14;
p(8,8)=14;
%-------------------------------------------------------------------------------
while(1)
clf %绘制棋盘
hold on
axis([1,9,1,10]);
axis square;
x=1:9;
y=1:10;
shu1=linspace(10,10,9);
shu2=linspace(6,6,9);
shu3=[10,5,5,5,5,5,5,5,10];
stem(x,shu1,'- . k',"MarkerSize",0.001);
stem(x,shu2,'- . w',"MarkerSize",0.001);
stem(x,shu3,'- . k',"MarkerSize",0.001);
xie1x=[4,5,6,5,6,5,4];
xie1y=[1,2,1,2,3,2,3];
xie2x=[4,5,6,5,6,5,4];
xie2y=[10,9,10,9,8,9,8];
for i=1:10
for j=1:9
heng(i,j)=11-i;
end
plot(x,heng(i,:),'k-')
end
plot(xie1x,xie1y,'k')
plot(xie2x,xie2y,'k')
%----------------------------------------------------------------------------
for i=1:9 %绘制棋子
for j=1:10
switch p(i,j)
case 1
plot(i,j,'o r',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'兵',"Color",[1 0 0])
case 2
plot(i,j,'o r',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'车',"Color",[1 0 0])
case 3
plot(i,j,'o r',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'马',"Color",[1 0 0])
case 4
plot(i,j,'o r',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'象',"Color",[1 0 0])
case 5
plot(i,j,'o r',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'士',"Color",[1 0 0])
case 6
plot(i,j,'o r',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'帅',"Color",[1 0 0])
case 7
plot(i,j,'o r',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'炮',"Color",[1 0 0])
case 8
plot(i,j,'o k',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'兵',"Color",[0 0 0])
case 9
plot(i,j,'o k',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'车',"Color",[0 0 0])
case 10
plot(i,j,'o k',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'马',"Color",[0 0 0])
case 11
plot(i,j,'o k',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'象',"Color",[0 0 0])
case 12
plot(i,j,'o k',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'士',"Color",[0 0 0])
case 13
plot(i,j,'o k',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'帅',"Color",[0 0 0])
case 14
plot(i,j,'o k',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'炮',"Color",[0 0 0])
otherwise
continue
end
end
end
%----------------------------------------------------------------------------
while(1)
[a,b]=ginput(1); %鼠标点击一个有效坐标
c=round(a);
d=round(b);
if (c>=1&&d>=1)&&(c<=9&&d<=10)
break
end
end
if player==0 %判断是否红方落棋
switch p(c,d) %如果点击红方棋子,将棋子变绿
case {1 2 3 4 5 6 7}
plot(c,d,'o g',"MarkerSize",20)
otherwise
end
switch p(c,d) %根据棋子类型,用蓝色显示出可以所有落棋的位置并用输入落棋点
case 1 %红方兵
if d>=6 %在河对岸的行为模式
if c==1 %兵各个位置可以落棋的备选位置
switch p(c+1,d)
case {8,9,10,11,12,13,14,0}
plot(c+1,d,'o b',"MarkerSize",20)
a11=[c+1 d];
otherwise
a11=[0 0];
end
switch p(c,d+1)
case {8,9,10,11,12,13,14,0}
plot(c,d+1,'o b',"MarkerSize",20)
a12=[c d+1];
otherwise
a12=[0 0];
end
elseif c>=2&&c<=8
switch p(c+1,d)
case {8,9,10,11,12,13,14,0}
plot(c+1,d,'o b',"MarkerSize",20)
a11=[c+1 d];
otherwise
a11=[0 0];
end
switch p(c-1,d)
case {8,9,10,11,12,13,14,0}
plot(c-1,d,'o b',"MarkerSize",20)
a13=[c-1 d];
otherwise
a13=[0 0];
end
switch p(c,d+1)
case {8,9,10,11,12,13,14,0}
plot(c,d+1,'o b',"MarkerSize",20)
a12=[c d+1];
otherwise
a12=[0 0];
end
elseif c==9
switch p(c-1,d)
case {8,9,10,11,12,13,14,0}
plot(c-1,d,'o b',"MarkerSize",20)
a13=[c-1 d];
otherwise
a13=[0 0];
end
switch p(c,d+1)
case {8,9,10,11,12,13,14,0}
plot(c,d+1,'o b',"MarkerSize",20)
a12=[c d+1];
otherwise
a12=[0 0];
end
end
else %在本岸的行为模式
switch p(c,d+1)
case {8,9,10,11,12,13,14,0}
plot(c,d+1,'o b',"MarkerSize",20)
a12=[c d+1];
otherwise
a12=[0 0];
end
end
while(1) %输入一个有效坐标
[e,f]=ginput(1);
g=round(e);
h=round(f);
if g>=1&&h>=1
break
end
end
if (g==a11(1)&&h==a11(2))||(g==a12(1)&&h==a12(2))||(g==a13(1)&&h==a13(2)) %如果坐标在备选位置中,则落子并改变为玩家1落子
p(c,d)=0;
p(g,h)=1;
player=1;
end
case 2 %红方车
for i=c+1:9 %正右方的备选位置
if p(i,d)==0
plot(i,d,'o b',"MarkerSize",20)
a21x(i)=i;
a21y(i)=d;
elseif p(i,d)==1||p(i,d)==2||p(i,d)==3||p(i,d)==4||p(i,d)==5||p(i,d)==6||p(i,d)==7
if i~=c+1
plot(i-1,d,'o b',"MarkerSize",20)
break
elseif i==c+1
d2=0;
break
end
elseif p(i,d)==8||p(i,d)==9||p(i,d)==10||p(i,d)==11||p(i,d)==12||p(i,d)==13||p(i,d)==14
plot(i,d,'o b',"MarkerSize",20)
a21x(i)=i;
a21y(i)=d;
break
end
end
for i=c-1:-1:1 %正左方的备选位置
if p(i,d)==0
plot(i,d,'o b',"MarkerSize",20)
a23x(i)=i;
a23y(i)=d;
elseif p(i,d)==1||p(i,d)==2||p(i,d)==3||p(i,d)==4||p(i,d)==5||p(i,d)==6||p(i,d)==7
if i~=c-1
plot(i+1,d,'o b',"MarkerSize",20)
break
elseif i==c-1
break
end
elseif p(i,d)==8||p(i,d)==9||p(i,d)==10||p(i,d)==11||p(i,d)==12||p(i,d)==13||p(i,d)==14
plot(i,d,'o b',"MarkerSize",20)
a23x(i)=i;
a23y(i)=d;
break
end
end
for j=d+1:10 %正上方的备选位置
if p(c,j)==0
plot(c,j,'o b',"MarkerSize",20)
a22x(j)=c;
a22y(j)=j;
elseif p(c,j)==1||p(c,j)==2||p(c,j)==3||p(c,j)==4||p(c,j)==5||p(c,j)==6||p(c,j)==7
if j~=d+1
plot(c,j-1,'o b',"MarkerSize",20)
break
elseif j==d+1
d2=0;
break
end
elseif p(c,j)==8||p(c,j)==9||p(c,j)==10||p(c,j)==11||p(c,j)==12||p(c,j)==13||p(c,j)==14
plot(c,j,'o b',"MarkerSize",20)
a22x(j)=c;
a22y(j)=j;
break
end
end
for j=d-1:-1:1 %正下方的备选位置
if p(c,j)==0
plot(c,j,'o b',"MarkerSize",20)
a24x(j)=c;
a24y(j)=j;
elseif p(c,j)==1||p(c,j)==2||p(c,j)==3||p(c,j)==4||p(c,j)==5||p(c,j)==6||p(c,j)==7
if j~=d-1
plot(c,j+1,'o b',"MarkerSize",20)
break
elseif j==d-1
break
end
elseif p(c,j)==8||p(c,j)==9||p(c,j)==10||p(c,j)==11||p(c,j)==12||p(c,j)==13||p(c,j)==14
plot(c,j,'o b',"MarkerSize",20)
a24x(j)=c;
a24y(j)=j;
break
end
end
while(1) %输入一个有效坐标并与四个方向的备选位置匹配,落子并改变为玩家1落子
[e,f]=ginput(1);
g=round(e);
h=round(f);
if g>=1&&h>=1
break
end
end
for i=1:length(a21x)
if g==a21x(i)&&h==a21y(i)
p(c,d)=0;
p(g,h)=2;
player=1;
else
continue
end
end
for i=1:length(a22x)
if g==a22x(i)&&h==a22y(i)
p(c,d)=0;
p(g,h)=2;
player=1;
else
continue
end
end
for i=1:length(a23x)
if g==a23x(i)&&h==a23y(i)
p(c,d)=0;
p(g,h)=2;
player=1;
else
continue
end
end
for i=1:length(a24x)
if g==a24x(i)&&h==a24y(i)
p(c,d)=0;
p(g,h)=2;
player=1;
else
continue
end
end
case 3 %红方马
a31=[c+2,d+1]; %八个可能的落脚点
a32=[c+1,d+2];
a33=[c-1,d+2];
a34=[c-2,d+1];
a35=[c-2,d-1];
a36=[c-1,d-2];
a37=[c+1,d-2];
a38=[c+2,d-1];
if c==9||c==8 %判断各个落脚点是否可行
a31=[0 0];
elseif d==10
a31=[0 0];
elseif p(c+1,d)~=0
a31=[0 0];
elseif p(c+2,d+1)==1||p(c+2,d+1)==2||p(c+2,d+1)==3||p(c+2,d+1)==4||p(c+2,d+1)==5||p(c+2,d+1)==6||p(c+2,d+1)==7
a31=[0 0];
else
plot(c+2,d+1,'o b',"MarkerSize",20)
end
if c==9
a32=[0 0];
elseif d==10||d==9
a32=[0 0];
elseif p(c,d+1)~=0
a32=[0 0];
elseif p(c+1,d+2)==1||p(c+1,d+2)==2||p(c+1,d+2)==3||p(c+1,d+2)==4||p(c+1,d+2)==5||p(c+1,d+2)==6||p(c+1,d+2)==7
a31=[0 0];
else
plot(c+1,d+2,'o b',"MarkerSize",20)
end
if c==1
a33=[0 0];
elseif d==10||d==9
a33=[0 0];
elseif p(c,d+1)~=0
a33=[0 0];
elseif p(c-1,d+2)==1||p(c-1,d+2)==2||p(c-1,d+2)==3||p(c-1,d+2)==4||p(c-1,d+2)==5||p(c-1,d+2)==6||p(c-1,d+2)==7
a33=[0 0];
else
plot(c-1,d+2,'o b',"MarkerSize",20)
end
if c==1||c==2
a34=[0 0];
elseif d==10
a34=[0 0];
elseif p(c-1,d)~=0
a34=[0 0];
elseif p(c-2,d+1)==1||p(c-2,d+1)==2||p(c-2,d+1)==3||p(c-2,d+1)==4||p(c-2,d+1)==5||p(c-2,d+1)==6||p(c-2,d+1)==7
a34=[0 0];
else
plot(c-2,d+1,'o b',"MarkerSize",20)
end
if c==1||c==2
a35=[0 0];
elseif d==1
a35=[0 0];
elseif p(c-1,d)~=0
a35=[0 0];
elseif p(c-2,d-1)==1||p(c-2,d-1)==2||p(c-2,d-1)==3||p(c-2,d-1)==4||p(c-2,d-1)==5||p(c-2,d-1)==6||p(c-2,d-1)==7
a35=[0 0];
else
plot(c-2,d-1,'o b',"MarkerSize",20)
end
if c==1
a36=[0 0];
elseif d==1||d==2
a36=[0 0];
elseif p(c,d-1)~=0
a36=[0 0];
elseif p(c-1,d-2)==1||p(c-1,d-2)==2||p(c-1,d-2)==3||p(c-1,d-2)==4||p(c-1,d-2)==5||p(c-1,d-2)==6||p(c-1,d-2)==7
a36=[0 0];
else
plot(c-1,d-2,'o b',"MarkerSize",20)
end
if c==9
a37=[0 0];
elseif d==1||d==2
a37=[0 0];
elseif p(c,d-1)~=0
a37=[0 0];
elseif p(c+1,d-2)==1||p(c+1,d-2)==2||p(c+1,d-2)==3||p(c+1,d-2)==4||p(c+1,d-2)==5||p(c+1,d-2)==6||p(c+1,d-2)==7
a37=[0 0];
else
plot(c+1,d-2,'o b',"MarkerSize",20)
end
if c==9||c==8
a38=[0 0];
elseif d==1
a38=[0 0];
elseif p(c+1,d)~=0
a38=[0 0];
elseif p(c+2,d-1)==1||p(c+2,d-1)==2||p(c+2,d-1)==3||p(c+2,d-1)==4||p(c+2,d-1)==5||p(c+2,d-1)==6||p(c+2,d-1)==7
a38=[0 0];
else
plot(c+2,d-1,'o b',"MarkerSize",20)
end
while(1) %如果坐标在备选位置中,则落子并改变为玩家1落子
[e,f]=ginput(1);
g=round(e);
h=round(f);
if g>=1&&h>=1
break
end
end
if (g==a31(1)&&h==a31(2))||(g==a32(1)&&h==a32(2))||(g==a33(1)&&h==a33(2))||(g==a34(1)&&h==a34(2))||(g==a35(1)&&h==a35(2))||(g==a36(1)&&h==a36(2))||(g==a37(1)&&h==a37(2))||(g==a38(1)&&h==a38(2))
p(c,d)=0;
p(g,h)=3;
player=1;
else
continue
end
case 4 %红方象
if c==3&&d==1 %不同位置的不同备选位置
if p(4,2)==0
if p(5,3)==1||p(5,3)==2||p(5,3)==3||p(5,3)==4||p(5,3)==5||p(5,3)==6||p(5,3)==7
else
a41=[5 3];
plot(5,3,'o b',"MarkerSize",20)
end
else
end
if p(2,2)==0
if p(1,3)==1||p(1,3)==2||p(1,3)==3||p(1,3)==4||p(1,3)==5||p(1,3)==6||p(1,3)==7
else
a42=[1 3];
plot(1,3,'o b',"MarkerSize",20)
end
end
elseif c==7&&d==1
if p(8,2)==0
if p(9,3)==1||p(9,3)==2||p(9,3)==3||p(9,3)==4||p(9,3)==5||p(9,3)==6||p(9,3)==7
else
a41=[9 3];
plot(9,3,'o b',"MarkerSize",20)
end
else
end
if p(6,2)==0
if p(5,3)==1||p(5,3)==2||p(5,3)==3||p(5,3)==4||p(5,3)==5||p(5,3)==6||p(5,3)==7
else
a42=[5 3];
plot(5,3,'o b',"MarkerSize",20)
end
else
end
elseif c==1&&d==3
if p(2,4)==0
if p(3,5)==1||p(3,5)==2||p(3,5)==3||p(3,5)==4||p(3,5)==5||p(3,5)==6||p(3,5)==7
else
a41=[3 5];
plot(3,5,'o b',"MarkerSize",20)
end
else
end
if p(2,2)==0
if p(3,1)==1||p(3,1)==2||p(3,1)==3||p(3,1)==4||p(3,1)==5||p(3,1)==6||p(3,1)==7
else
a44=[3 1];
plot(3,1,'o b',"MarkerSize",20)
end
else
end
elseif c==5&&d==3
if p(6,4)==0
if p(7,5)==1||p(7,5)==2||p(7,5)==3||p(7,5)==4||p(7,5)==5||p(7,5)==6||p(7,5)==7
else
a41=[7 5];
plot(7,5,'o b',"MarkerSize",20)
end
else
end
if p(4,4)==0
if p(3,5)==1||p(3,5)==2||p(3,5)==3||p(3,5)==4||p(3,5)==5||p(3,5)==6||p(3,5)==7
else
a42=[3 5];
plot(3,5,'o b',"MarkerSize",20)
end
else
end
if p(4,2)==0
if p(3,1)==1||p(3,1)==2||p(3,1)==3||p(3,1)==4||p(3,1)==5||p(3,1)==6||p(3,1)==7
else
a43=[3 1];
plot(3,1,'o b',"MarkerSize",20)
end
else
end
if p(6,2)==0
if p(7,1)==1||p(7,1)==2||p(7,1)==3||p(7,1)==4||p(7,1)==5||p(7,1)==6||p(7,1)==7
else
a44=[7 1];
plot(7,1,'o b',"MarkerSize",20)
end
else
end
elseif c==9&&d==3
if p(8,4)==0
if p(7,5)==1||p(7,5)==2||p(7,5)==3||p(7,5)==4||p(7,5)==5||p(7,5)==6||p(7,5)==7
else
a42=[7 5];
plot(7,5,'o b',"MarkerSize",20)
end
else
end
if p(8,2)==0
if p(7,1)==1||p(7,1)==2||p(7,1)==3||p(7,1)==4||p(7,1)==5||p(7,1)==6||p(7,1)==7
else
a43=[7 1];
plot(7,1,'o b',"MarkerSize",20)
end
else
end
elseif c==3&&d==5
if p(2,4)==0
if p(1,3)==1||p(1,3)==2||p(1,3)==3||p(1,3)==4||p(1,3)==5||p(1,3)==6||p(1,3)==7
else
a43=[1 3];
plot(1,3,'o b',"MarkerSize",20)
end
else
end
if p(4,4)==0
if p(5,3)==1||p(5,3)==2||p(5,3)==3||p(5,3)==4||p(5,3)==5||p(5,3)==6||p(5,3)==7
else
a44=[5 3];
plot(5,3,'o b',"MarkerSize",20)
end
else
end
elseif c==7&&d==5
if p(6,4)==0
if p(5,3)==1||p(5,3)==2||p(5,3)==3||p(5,3)==4||p(5,3)==5||p(5,3)==6||p(5,3)==7
else
a43=[5 3];
plot(5,3,'o b',"MarkerSize",20)
end
else
end
if p(8,4)==0
if p(9,3)==1||p(9,3)==2||p(9,3)==3||p(9,3)==4||p(9,3)==5||p(9,3)==6||p(9,3)==7
else
a44=[9 3];
plot(9,3,'o b',"MarkerSize",20)
end
else
end
else
end
while(1) %如果坐标在备选位置中,则落子并改变为玩家1落子
[e,f]=ginput(1);
g=round(e);
h=round(f);
if g>=1&&h>=1
break
end
end
if (g==a41(1)&&h==a41(2))||(g==a42(1)&&h==a42(2))||(g==a43(1)&&h==a43(2))||(g==a44(1)&&h==a44(2))
p(c,d)=0;
p(g,h)=4;
player=1;
else
end
case 5 %红方士
if c==4&&d==1 %不同位置的不同备选位置
if p(5,2)==1||p(5,2)==2||p(5,2)==3||p(5,2)==4||p(5,2)==5||p(5,2)==6||p(5,2)==7
else
a51=[5,2];
plot(5,2,'o b',"MarkerSize",20)
end
elseif c==6&&d==1
if p(5,2)==1||p(5,2)==2||p(5,2)==3||p(5,2)==4||p(5,2)==5||p(5,2)==6||p(5,2)==7
else
a52=[5,2];
plot(5,2,'o b',"MarkerSize",20)
end
elseif c==5&&d==2
if p(6,3)==1||p(6,3)==2||p(6,3)==3||p(6,3)==4||p(6,3)==5||p(6,3)==6||p(6,3)==7
else
a51=[6 3];
plot(6,3,'o b',"MarkerSize",20)
end
if p(4,3)==1||p(4,3)==2||p(4,3)==3||p(4,3)==4||p(4,3)==5||p(4,3)==6||p(4,3)==7
else
a52=[4 3];
plot(4,3,'o b',"MarkerSize",20)
end
if p(4,1)==1||p(4,1)==2||p(4,1)==3||p(4,1)==4||p(4,1)==5||p(4,1)==6||p(4,1)==7
else
a53=[4 1];
plot(4,1,'o b',"MarkerSize",20)
end
if p(6,1)==1||p(6,1)==2||p(6,1)==3||p(6,1)==4||p(6,1)==5||p(6,1)==6||p(6,1)==7
else
a54=[6 1];
plot(6,1,'o b',"MarkerSize",20)
end
elseif c==4&&d==3
if p(5,2)==1||p(5,2)==2||p(5,2)==3||p(5,2)==4||p(5,2)==5||p(5,2)==6||p(5,2)==7
else
a54=[5,2];
plot(5,2,'o b',"MarkerSize",20)
end
elseif c==6&&d==3
if p(5,2)==1||p(5,2)==2||p(5,2)==3||p(5,2)==4||p(5,2)==5||p(5,2)==6||p(5,2)==7
else
a53=[5,2];
plot(5,2,'o b',"MarkerSize",20)
end
end
while(1) %如果坐标在备选位置中,则落子并改变为玩家1落子
[e,f]=ginput(1);
g=round(e);
h=round(f);
if g>=1&&h>=1
break
end
end
if (g==a51(1)&&h==a51(2))||(g==a52(1)&&h==a52(2))||(g==a53(1)&&h==a53(2))||(g==a54(1)&&h==a54(2))
p(c,d)=0;
p(g,h)=5;
player=1;
else
continue
end
case 6 %红方帅
if c==4&&d==1 %不同位置的不同备选位置
if p(5,1)==1||p(5,1)==2||p(5,1)==3||p(5,1)==4||p(5,1)==5||p(5,1)==6||p(5,1)==7
else
a61=[5 1];
plot(5,1,'o b',"MarkerSize",20)
end
if p(4,2)==1||p(4,2)==2||p(4,2)==3||p(4,2)==4||p(4,2)==5||p(4,2)==6||p(4,2)==7
else
a62=[4 2];
plot(4,2,'o b',"MarkerSize",20)
end
elseif c==5&&d==1
if p(6,1)==1||p(6,1)==2||p(6,1)==3||p(6,1)==4||p(6,1)==5||p(6,1)==6||p(6,1)==7
else
a61=[6 1];
plot(6,1,'o b',"MarkerSize",20)
end
if p(5,2)==1||p(5,2)==2||p(5,2)==3||p(5,2)==4||p(5,2)==5||p(5,2)==6||p(5,2)==7
else
a62=[5 2];
plot(5,2,'o b',"MarkerSize",20)
end
if p(4,1)==1||p(4,1)==2||p(4,1)==3||p(4,1)==4||p(4,1)==5||p(4,1)==6||p(4,1)==7
else
a63=[4 1];
plot(4,1,'o b',"MarkerSize",20)
end
elseif c==6&&d==1
if p(6,2)==1||p(6,2)==2||p(6,2)==3||p(6,2)==4||p(6,2)==5||p(6,2)==6||p(6,2)==7
else
a62=[6 2];
plot(6,2,'o b',"MarkerSize",20)
end
if p(5,1)==1||p(5,1)==2||p(5,1)==3||p(5,1)==4||p(5,1)==5||p(5,1)==6||p(5,1)==7
else
a63=[5 1];
plot(5,1,'o b',"MarkerSize",20)
end
elseif c==4&&d==2
if p(5,2)==1||p(5,2)==2||p(5,2)==3||p(5,2)==4||p(5,2)==5||p(5,2)==6||p(5,2)==7
else
a61=[5 2];
plot(5,2,'o b',"MarkerSize",20)
end
if p(4,3)==1||p(4,3)==2||p(4,3)==3||p(4,3)==4||p(4,3)==5||p(4,3)==6||p(4,3)==7
else
a62=[4 3];
plot(4,3,'o b',"MarkerSize",20)
end
if p(4,1)==1||p(4,1)==2||p(4,1)==3||p(4,1)==4||p(4,1)==5||p(4,1)==6||p(4,1)==7
else
a64=[4 1];
plot(4,1,'o b',"MarkerSize",20)
end
elseif c==5&&d==2
if p(6,2)==1||p(6,2)==2||p(6,2)==3||p(6,2)==4||p(6,2)==5||p(6,2)==6||p(6,2)==7
else
a61=[6 2];
plot(6,2,'o b',"MarkerSize",20)
end
if p(5,3)==1||p(5,3)==2||p(5,3)==3||p(5,3)==4||p(5,3)==5||p(5,3)==6||p(5,3)==7
else
a62=[5 3];
plot(5,3,'o b',"MarkerSize",20)
end
if p(4,2)==1||p(4,2)==2||p(4,2)==3||p(4,2)==4||p(4,2)==5||p(4,2)==6||p(4,2)==7
else
a63=[4 2];
plot(4,2,'o b',"MarkerSize",20)
end
if p(5,1)==1||p(5,1)==2||p(5,1)==3||p(5,1)==4||p(5,1)==5||p(5,1)==6||p(5,1)==7
else
a64=[5 1];
plot(5,1,'o b',"MarkerSize",20)
end
elseif c==6&&d==2
if p(6,3)==1||p(6,3)==2||p(6,3)==3||p(6,3)==4||p(6,3)==5||p(6,3)==6||p(6,3)==7
else
a62=[6 3];
plot(6,3,'o b',"MarkerSize",20)
end
if p(5,2)==1||p(5,2)==2||p(5,2)==3||p(5,2)==4||p(5,2)==5||p(5,2)==6||p(5,2)==7
else
a63=[5 2];
plot(5,2,'o b',"MarkerSize",20)
end
elseif c==4&&d==3
if p(5,3)==1||p(5,3)==2||p(5,3)==3||p(5,3)==4||p(5,3)==5||p(5,3)==6||p(5,3)==7
else
a61=[5 3];
plot(5,3,'o b',"MarkerSize",20)
end
if p(4,2)==1||p(4,2)==2||p(4,2)==3||p(4,2)==4||p(4,2)==5||p(4,2)==6||p(4,2)==7
else
a63=[4 2];
plot(4,2,'o b',"MarkerSize",20)
end
elseif c==5&&d==3
if p(6,3)==1||p(6,3)==2||p(6,3)==3||p(6,3)==4||p(6,3)==5||p(6,3)==6||p(6,3)==7
else
a61=[6 3];
plot(6,3,'o b',"MarkerSize",20)
end
if p(5,2)==1||p(5,2)==2||p(5,2)==3||p(5,2)==4||p(5,2)==5||p(5,2)==6||p(5,2)==7
else
a64=[5 2];
plot(5,2,'o b',"MarkerSize",20)
end
if p(4,3)==1||p(4,3)==2||p(4,3)==3||p(4,3)==4||p(4,3)==5||p(4,3)==6||p(4,3)==7
else
a63=[4 3];
plot(4,3,'o b',"MarkerSize",20)
end
elseif c==6&&d==3
if p(5,3)==1||p(5,3)==2||p(5,3)==3||p(5,3)==4||p(5,3)==5||p(5,3)==6||p(5,3)==7
else
a63=[5 3];
plot(5,3,'o b',"MarkerSize",20)
end
if p(6,2)==1||p(6,2)==2||p(6,2)==3||p(6,2)==4||p(6,2)==5||p(6,2)==6||p(6,2)==7
else
a64=[6 2];
plot(6,2,'o b',"MarkerSize",20)
end
end
while(1) %%如果坐标在备选位置中,则落子并改变为玩家1落子
[e,f]=ginput(1);
g=round(e);
h=round(f);
if g>=1&&h>=1
break
end
end
if (g==a61(1)&&h==a61(2))||(g==a62(1)&&h==a62(2))||(g==a63(1)&&h==a63(2))||(g==a64(1)&&h==a64(2))
p(c,d)=0;
p(g,h)=6;
player=1;
else
continue
end
case 7 %红方炮
for i=c+1:9 %不同位置的不同备选位置
if p(i,d)==0
plot(i,d,'o b',"MarkerSize",20)
a71x(i)=i;
a71y(i)=d;
continue
elseif p(i,d)~=0
tiao1(1)=i;
tiao1(2)=d;
break
end
end
for i=tiao1(1)+1:9
if p(i,d)==0
continue
elseif p(i,d)==1||p(i,d)==2||p(i,d)==3||p(i,d)==4||p(i,d)==5||p(i,d)==6||p(i,d)==7
if i~=c+1
break
elseif i==c+1
break
end
elseif p(i,d)==8||p(i,d)==9||p(i,d)==10||p(i,d)==11||p(i,d)==12||p(i,d)==13||p(i,d)==14
plot(i,d,'o b',"MarkerSize",20)
a71x(i)=i;
a71y(i)=d;
break
end
end
for j=d+1:10
if p(c,j)==0
plot(c,j,'o b',"MarkerSize",20)
a72x(j)=c;
a72y(j)=j;
continue
elseif p(c,j)~=0
tiao2(1)=c;
tiao2(2)=j;
break
end
end
for j=tiao2(2)+1:10
if p(c,j)==0
continue
elseif p(c,j)==1||p(c,j)==2||p(c,j)==3||p(c,j)==4||p(c,j)==5||p(c,j)==6||p(c,j)==7
if j~=d+1
break
elseif j==d+1
break
end
elseif p(c,j)==8||p(c,j)==9||p(c,j)==10||p(c,j)==11||p(c,j)==12||p(c,j)==13||p(c,j)==14
plot(c,j,'o b',"MarkerSize",20)
a72x(j)=c;
a72y(j)=j;
break
end
end
for i=c-1:-1:1
if p(i,d)==0
plot(i,d,'o b',"MarkerSize",20)
a73x(i)=i;
a73y(i)=d;
continue
elseif p(i,d)~=0
tiao3(1)=i;
tiao3(2)=d;
break
end
end
for i=tiao3(1)-1:-1:1
if p(i,d)==0
continue
elseif p(i,d)==1||p(i,d)==2||p(i,d)==3||p(i,d)==4||p(i,d)==5||p(i,d)==6||p(i,d)==7
if i~=c+1
break
elseif i==c+1
break
end
elseif p(i,d)==8||p(i,d)==9||p(i,d)==10||p(i,d)==11||p(i,d)==12||p(i,d)==13||p(i,d)==14
plot(i,d,'o b',"MarkerSize",20)
a73x(i)=i;
a73y(i)=d;
break
end
end
for j=d-1:-1:1
if p(c,j)==0
plot(c,j,'o b',"MarkerSize",20)
a74x(j)=c;
a74y(j)=j;
continue
elseif p(c,j)~=0
tiao4(1)=c;
tiao4(2)=j;
break
end
end
for j=tiao4(2)-1:-1:1
if p(c,j)==0
continue
elseif p(c,j)==1||p(c,j)==2||p(c,j)==3||p(c,j)==4||p(c,j)==5||p(c,j)==6||p(c,j)==7
if j~=d-1
break
elseif j==d+1
break
end
elseif p(c,j)==8||p(c,j)==9||p(c,j)==10||p(c,j)==11||p(c,j)==12||p(c,j)==13||p(c,j)==14
plot(c,j,'o b',"MarkerSize",20)
a42x(j)=c;
a42y(j)=j;
break
end
end
while(1) %如果坐标在备选位置中,则落子并改变为玩家1落子
[e,f]=ginput(1);
g=round(e);
h=round(f);
if g>=1&&h>=1
break
end
end
for i=1:length(a71x)
if g==a71x(i)&&h==a71y(i)
p(c,d)=0;
p(g,h)=7;
player=1;
else
continue
end
end
for i=1:length(a72x)
if g==a72x(i)&&h==a72y(i)
p(c,d)=0;
p(g,h)=7;
player=1;
else
continue
end
end
for i=1:length(a73x)
if g==a73x(i)&&h==a73y(i)
p(c,d)=0;
p(g,h)=7;
player=1;
else
continue
end
end
for i=1:length(a74x)
if g==a74x(i)&&h==a74y(i)
p(c,d)=0;
p(g,h)=7;
player=1;
else
continue
end
end
end
%-------------------------------------------------------------------------------------------
else %判断是否黑方落棋
switch p(c,d) %如果点击黑方棋子,将棋子变绿
case {8 9 10 11 12 13 14}
plot(c,d,'o g',"MarkerSize",20)
otherwise
end
switch p(c,d) %根据棋子类型,用蓝色显示出可以所有落棋的位置并用输入落棋点
case 8 %黑方判定与输入与红方相同
if d<=5
if c==1
switch p(c,d)
case {0 1 2 3 4 5 6 7}
plot(c+1,d,'o b',"MarkerSize",20)
a81=[c+1 d];
otherwise
end
switch p(c,d)
case {0 1 2 3 4 5 6 7}
plot(c,d-1,'o b',"MarkerSize",20)
a82=[c d-1];
otherwise
end
elseif c>=2&&c<=8
switch p(c+1,d)
case {0 1 2 3 4 5 6 7}
plot(c+1,d,'o b',"MarkerSize",20)
a81=[c+1 d];
otherwise
a81=[0 0];
end
switch p(c-1,d)
case {0 1 2 3 4 5 6 7}
plot(c-1,d,'o b',"MarkerSize",20)
a83=[c-1 d];
otherwise
a83=[0 0];
end
switch p(c,d-1)
case {0 1 2 3 4 5 6 7}
plot(c,d-1,'o b',"MarkerSize",20)
a82=[c d-1];
otherwise
a82=[0 0];
end
elseif c==9
switch p(c-1,d)
case {0 1 2 3 4 5 6 7}
plot(c-1,d,'o b',"MarkerSize",20)
a83=[c-1 d];
otherwise
a83=[0 0];
end
switch p(c,d-1)
case {0 1 2 3 4 5 6 7}
plot(c,d-1,'o b',"MarkerSize",20)
a82=[c d-1];
otherwise
a82=[0 0];
end
end
else
switch p(c,d-1)
case {0 1 2 3 4 5 6 7}
plot(c,d-1,'o b',"MarkerSize",20)
a82=[c d-1];
otherwise
a82=[0 0];
end
end
while(1)
[e,f]=ginput(1);
g=round(e);
h=round(f);
if g>=1&&h>=1
break
end
end
if (g==a81(1)&&h==a81(2))||(g==a82(1)&&h==a82(2))||(g==a83(1)&&h==a83(2))
p(c,d)=0;
p(g,h)=8;
player=0;
end
case 9
for i=c+1:9
if p(i,d)==0
plot(i,d,'o b',"MarkerSize",20)
a91x(i)=i;
a91y(i)=d;
elseif p(i,d)==8||p(i,d)==9||p(i,d)==10||p(i,d)==11||p(i,d)==12||p(i,d)==13||p(i,d)==14
if i~=c+1
plot(i-1,d,'o b',"MarkerSize",20)
break
elseif i==c+1
break
end
elseif p(i,d)==1||p(i,d)==2||p(i,d)==3||p(i,d)==4||p(i,d)==5||p(i,d)==6||p(i,d)==7
plot(i,d,'o b',"MarkerSize",20)
a91x(i)=i;
a91y(i)=d;
break
end
end
for i=c-1:-1:1
if p(i,d)==0
plot(i,d,'o b',"MarkerSize",20)
a93x(i)=i;
a93y(i)=d;
elseif p(i,d)==8||p(i,d)==9||p(i,d)==10||p(i,d)==11||p(i,d)==12||p(i,d)==13||p(i,d)==14
if i~=c-1
plot(i+1,d,'o b',"MarkerSize",20)
break
elseif i==c-1
break
end
elseif p(i,d)==1||p(i,d)==2||p(i,d)==3||p(i,d)==4||p(i,d)==5||p(i,d)==6||p(i,d)==7
plot(i,d,'o b',"MarkerSize",20)
a93x(i)=i;
a93y(i)=d;
break
end
end
for j=d+1:10
if p(c,j)==0
plot(c,j,'o b',"MarkerSize",20)
a92x(j)=c;
a92y(j)=j;
elseif p(c,j)==8||p(c,j)==9||p(c,j)==10||p(c,j)==11||p(c,j)==12||p(c,j)==13||p(c,j)==14
if j~=d+1
plot(c,j-1,'o b',"MarkerSize",20)
break
elseif j==d+1
d2=0;
break
end
elseif p(c,j)==1||p(c,j)==2||p(c,j)==3||p(c,j)==4||p(c,j)==5||p(c,j)==6||p(c,j)==7
plot(c,j,'o b',"MarkerSize",20)
a92x(j)=c;
a92y(j)=j;
break
end
end
for j=d-1:-1:1
if p(c,j)==0
plot(c,j,'o b',"MarkerSize",20)
a94x(j)=c;
a94y(j)=j;
elseif p(c,j)==8||p(c,j)==9||p(c,j)==10||p(c,j)==11||p(c,j)==12||p(c,j)==13||p(c,j)==14
if j~=d-1
plot(c,j+1,'o b',"MarkerSize",20)
break
elseif j==d-1
break
end
elseif p(c,j)==1||p(c,j)==2||p(c,j)==3||p(c,j)==4||p(c,j)==5||p(c,j)==6||p(c,j)==7
plot(c,j,'o b',"MarkerSize",20)
a94x(j)=c;
a94y(j)=j;
break
end
end
while(1)
[e,f]=ginput(1);
g=round(e);
h=round(f);
if g>=1&&h>=1
break
end
end
for i=1:length(a91x)
if g==a91x(i)&&h==a91y(i)
p(c,d)=0;
p(g,h)=9;
player=0;
else
continue
end
end
for i=1:length(a92x)
if g==a92x(i)&&h==a92y(i)
p(c,d)=0;
p(g,h)=9;
player=0;
else
continue
end
end
for i=1:length(a93x)
if g==a93x(i)&&h==a93y(i)
p(c,d)=0;
p(g,h)=9;
player=0;
else
continue
end
end
for i=1:length(a94x)
if g==a94x(i)&&h==a94y(i)
p(c,d)=0;
p(g,h)=9;
player=0;
else
continue
end
end
case 10
a101=[c+2,d+1];
a102=[c+1,d+2];
a103=[c-1,d+2];
a104=[c-2,d+1];
a105=[c-2,d-1];
a106=[c-1,d-2];
a107=[c+1,d-2];
a108=[c+2,d-1];
if c==9||c==8
a101=[0 0];
elseif d==10
a101=[0 0];
elseif p(c+1,d)~=0
a101=[0 0];
elseif p(c+2,d+1)==8||p(c+2,d+1)==9||p(c+2,d+1)==10||p(c+2,d+1)==11||p(c+2,d+1)==12||p(c+2,d+1)==13||p(c+2,d+1)==14
a101=[0 0];
else
plot(c+2,d+1,'o b',"MarkerSize",20)
end
if c==9
a102=[0 0];
elseif d==10||d==9
a102=[0 0];
elseif p(c,d+1)~=0
a102=[0 0];
elseif p(c+1,d+2)==8||p(c+1,d+2)==9||p(c+1,d+2)==10||p(c+1,d+2)==11||p(c+1,d+2)==12||p(c+1,d+2)==13||p(c+1,d+2)==14
a102=[0 0];
else
plot(c+1,d+2,'o b',"MarkerSize",20)
end
if c==1
a103=[0 0];
elseif d==10||d==9
a103=[0 0];
elseif p(c,d+1)~=0
a103=[0 0];
elseif p(c-1,d+2)==8||p(c-1,d+2)==9||p(c-1,d+2)==10||p(c-1,d+2)==11||p(c-1,d+2)==12||p(c-1,d+2)==13||p(c-1,d+2)==14
a103=[0 0];
else
plot(c-1,d+2,'o b',"MarkerSize",20)
end
if c==1||c==2
a104=[0 0];
elseif d==10
a104=[0 0];
elseif p(c-1,d)~=0
a104=[0 0];
elseif p(c-2,d+1)==8||p(c-2,d+1)==9||p(c-2,d+1)==10||p(c-2,d+1)==11||p(c-2,d+1)==12||p(c-2,d+1)==13||p(c-2,d+1)==14
a104=[0 0];
else
plot(c-2,d+1,'o b',"MarkerSize",20)
end
if c==1||c==2
a105=[0 0];
elseif d==1
a105=[0 0];
elseif p(c-1,d)~=0
a105=[0 0];
elseif p(c-2,d-1)==8||p(c-2,d-1)==9||p(c-2,d-1)==10||p(c-2,d-1)==11||p(c-2,d-1)==12||p(c-2,d-1)==13||p(c-2,d-1)==14
a105=[0 0];
else
plot(c-2,d-1,'o b',"MarkerSize",20)
end
if c==1
a106=[0 0];
elseif d==1||d==2
a106=[0 0];
elseif p(c,d-1)~=0
a106=[0 0];
elseif p(c-1,d-2)==8||p(c-1,d-2)==9||p(c-1,d-2)==10||p(c-1,d-2)==11||p(c-1,d-2)==12||p(c-1,d-2)==13||p(c-1,d-2)==14
a106=[0 0];
else
plot(c-1,d-2,'o b',"MarkerSize",20)
end
if c==9
a107=[0 0];
elseif d==1||d==2
a107=[0 0];
elseif p(c,d-1)~=0
a107=[0 0];
elseif p(c+1,d-2)==8||p(c+1,d-2)==9||p(c+1,d-2)==10||p(c+1,d-2)==11||p(c+1,d-2)==12||p(c+1,d-2)==13||p(c+1,d-2)==14
a107=[0 0];
else
plot(c+1,d-2,'o b',"MarkerSize",20)
end
if c==9||c==8
a108=[0 0];
elseif d==1
a108=[0 0];
elseif p(c+1,d)~=0
a108=[0 0];
elseif p(c+2,d-1)==8||p(c+2,d-1)==9||p(c+2,d-1)==10||p(c+2,d-1)==11||p(c+2,d-1)==12||p(c+2,d-1)==13||p(c+2,d-1)==14
a108=[0 0];
else
plot(c+2,d-1,'o b',"MarkerSize",20)
end
while(1)
[e,f]=ginput(1);
g=round(e);
h=round(f);
if g>=1&&h>=1
break
end
end
if (g==a101(1)&&h==a101(2))||(g==a102(1)&&h==a102(2))||(g==a103(1)&&h==a103(2))||(g==a104(1)&&h==a104(2))||(g==a105(1)&&h==a105(2))||(g==a106(1)&&h==a106(2))||(g==a107(1)&&h==a107(2))||(g==a108(1)&&h==a108(2))
p(c,d)=0;
p(g,h)=10;
player=0;
else
continue
end
case 11
if c==3&&d==10
if p(2,9)==0
if p(1,8)==8||p(1,8)==9||p(1,8)==10||p(1,8)==11||p(1,8)==12||p(1,8)==13||p(1,8)==14
else
a113=[1 8];
plot(1,8,'o b',"MarkerSize",20)
end
else
end
if p(4,9)==0
if p(5,8)==8||p(5,8)==9||p(5,8)==10||p(5,8)==11||p(5,8)==12||p(5,8)==13||p(5,8)==14
else
a114=[5 8];
plot(5,8,'o b',"MarkerSize",20)
end
end
elseif c==7&&d==10
if p(6,9)==0
if p(5,8)==8||p(5,8)==9||p(5,8)==10||p(5,8)==11||p(5,8)==12||p(5,8)==13||p(5,8)==14
else
a113=[5 8];
plot(5,8,'o b',"MarkerSize",20)
end
else
end
if p(8,9)==0
if p(9,8)==8||p(9,8)==9||p(9,8)==10||p(9,8)==11||p(9,8)==12||p(9,8)==13||p(9,8)==14
else
a114=[9 8];
plot(9,8,'o b',"MarkerSize",20)
end
else
end
elseif c==1&&d==8
if p(2,9)==0
if p(3,10)==8||p(3,10)==9||p(3,10)==10||p(3,10)==11||p(3,10)==12||p(3,10)==13||p(3,10)==14
else
a111=[3 10];
plot(3,10,'o b',"MarkerSize",20)
end
else
end
if p(2,7)==0
if p(3,6)==8||p(3,6)==9||p(3,6)==10||p(3,6)==11||p(3,6)==12||p(3,6)==13||p(3,6)==14
else
a114=[3,6];
plot(3,6,'o b',"MarkerSize",20)
end
else
end
elseif c==5&&d==8
if p(6,9)==0
if p(7,10)==8||p(7,10)==9||p(7,10)==10||p(7,10)==11||p(7,10)==12||p(7,10)==13||p(7,10)==14
else
a111=[7 10];
plot(7,10,'o b',"MarkerSize",20)
end
else
end
if p(4,9)==0
if p(3,10)==8||p(3,10)==9||p(3,10)==10||p(3,10)==11||p(3,10)==12||p(3,10)==13||p(3,10)==14
else
a112=[3 10];
plot(3,10,'o b',"MarkerSize",20)
end
else
end
if p(4,7)==0
if p(3,6)==8||p(3,6)==9||p(3,6)==10||p(3,6)==11||p(3,6)==12||p(3,6)==13||p(3,6)==14
else
a113=[3 6];
plot(3,6,'o b',"MarkerSize",20)
end
else
end
if p(6,7)==0
if p(7,6)==8||p(7,6)==9||p(7,6)==10||p(7,6)==11||p(7,6)==12||p(7,6)==13||p(7,6)==14
else
a114=[7 6];
plot(7,6,'o b',"MarkerSize",20)
end
else
end
elseif c==9&&d==8
if p(8,9)==0
if p(7,10)==8||p(7,10)==9||p(7,10)==10||p(7,10)==11||p(7,10)==12||p(7,10)==13||p(7,10)==14
else
a112=[7 10];
plot(7,10,'o b',"MarkerSize",20)
end
else
end
if p(8,7)==0
if p(7,6)==8||p(7,6)==9||p(7,6)==10||p(7,6)==11||p(7,6)==12||p(7,6)==13||p(7,6)==14
else
a113=[7 6];
plot(7,6,'o b',"MarkerSize",20)
end
else
end
elseif c==3&&d==6
if p(4,7)==0
if p(5,8)==8||p(5,8)==9||p(5,8)==10||p(5,8)==11||p(5,8)==12||p(5,8)==13||p(5,8)==14
else
a111=[5 8];
plot(5,8,'o b',"MarkerSize",20)
end
else
end
if p(2,7)==0
if p(1,8)==8||p(1,8)==9||p(1,8)==10||p(1,8)==11||p(1,8)==12||p(1,8)==13||p(1,8)==14
else
a112=[1 8];
plot(1,8,'o b',"MarkerSize",20)
end
else
end
elseif c==7&&d==6
if p(8,7)==0
if p(9,8)==8||p(9,8)==9||p(9,8)==10||p(9,8)==11||p(9,8)==12||p(9,8)==13||p(9,8)==14
else
a111=[9 8];
plot(9,8,'o b',"MarkerSize",20)
end
else
end
if p(6,7)==0
if p(5,8)==8||p(5,8)==9||p(5,8)==10||p(5,8)==11||p(5,8)==12||p(5,8)==13||p(5,8)==14
else
a112=[5 8];
plot(5,8,'o b',"MarkerSize",20)
end
else
end
end
while(1)
[e,f]=ginput(1);
g=round(e);
h=round(f);
if g>=1&&h>=1
break
end
end
if (g==a111(1)&&h==a111(2))||(g==a112(1)&&h==a112(2))||(g==a113(1)&&h==a113(2))||(g==a114(1)&&h==a114(2))
p(c,d)=0;
p(g,h)=11;
player=0;
else
end
case 12
if c==4&&d==10
if p(5,9)==8||p(5,9)==9||p(5,9)==10||p(5,9)==11||p(5,9)==12||p(5,9)==13||p(5,9)==14
else
a124=[5 9];
plot(5,9,'o b',"MarkerSize",20)
end
elseif c==6&&d==10
if p(5,9)==8||p(5,9)==9||p(5,9)==10||p(5,9)==11||p(5,9)==12||p(5,9)==13||p(5,9)==14
else
a123=[5 9];
plot(5,9,'o b',"MarkerSize",20)
end
elseif c==5&&d==9
if p(6,10)==8||p(6,10)==9||p(6,10)==10||p(6,10)==11||p(6,10)==12||p(6,10)==13||p(6,10)==14
else
a121=[6 10];
plot(6,10,'o b',"MarkerSize",20)
end
if p(4,10)==8||p(4,10)==9||p(4,10)==10||p(4,10)==11||p(4,10)==12||p(4,10)==13||p(4,10)==14
else
a122=[4 10];
plot(4,10,'o b',"MarkerSize",20)
end
if p(4,8)==8||p(4,8)==9||p(4,8)==10||p(4,8)==11||p(4,8)==12||p(4,8)==13||p(4,8)==14
else
a123=[4 8];
plot(4,8,'o b',"MarkerSize",20)
end
if p(6,8)==8||p(6,8)==9||p(6,8)==10||p(6,8)==11||p(6,8)==12||p(6,8)==13||p(6,8)==14
else
a124=[6 8];
plot(6,8,'o b',"MarkerSize",20)
end
elseif c==4&&d==8
if p(5,9)==8||p(5,9)==9||p(5,9)==10||p(5,9)==11||p(5,9)==12||p(5,9)==13||p(5,9)==14
else
a121=[5 9];
plot(5,9,'o b',"MarkerSize",20)
end
elseif c==6&&d==8
if p(5,9)==8||p(5,9)==9||p(5,9)==10||p(5,9)==11||p(5,9)==12||p(5,9)==13||p(5,9)==14
else
a122=[5 9];
plot(5,9,'o b',"MarkerSize",20)
end
end
while(1)
[e,f]=ginput(1);
g=round(e);
h=round(f);
if g>=1&&h>=1
break
end
end
if (g==a121(1)&&h==a121(2))||(g==a122(1)&&h==a122(2))||(g==a123(1)&&h==a123(2))||(g==a124(1)&&h==a124(2))
p(c,d)=0;
p(g,h)=12;
player=0;
else
end
case 13
if c==4&&d==10
if p(5,10)==8||p(5,10)==9||p(5,10)==10||p(5,10)==11||p(5,10)==12||p(5,10)==13||p(5,10)==14
else
a131=[5,10];
plot(5,10,'o b',"MarkerSize",20)
end
if p(4,9)==8||p(4,9)==9||p(4,9)==10||p(4,9)==11||p(4,9)==12||p(4,9)==13||p(4,9)==14
else
a134=[4 9];
plot(4,9,'o b',"MarkerSize",20)
end
elseif c==5&&d==10
if p(6,10)==8||p(6,10)==9||p(6,10)==10||p(6,10)==11||p(6,10)==12||p(6,10)==13||p(6,10)==14
else
a131=[6 10];
plot(6,10,'o b',"MarkerSize",20)
end
if p(4,10)==8||p(4,10)==9||p(4,10)==10||p(4,10)==11||p(4,10)==12||p(4,10)==13||p(4,10)==14
else
a133=[4 10];
plot(4,10,'o b',"MarkerSize",20)
end
if p(5,9)==8||p(5,9)==9||p(5,9)==10||p(5,9)==11||p(5,9)==12||p(5,9)==13||p(5,9)==14
else
a134=[5 9];
plot(5,9,'o b',"MarkerSize",20)
end
elseif c==6&&d==10
if p(5,10)==8||p(5,10)==9||p(5,10)==10||p(5,10)==11||p(5,10)==12||p(5,10)==13||p(5,10)==14
else
a133=[5,10];
plot(5,10,'o b',"MarkerSize",20)
end
if p(6,9)==8||p(6,9)==9||p(6,9)==10||p(6,9)==11||p(6,9)==12||p(6,9)==13||p(6,9)==14
else
a134=[6 9];
plot(6,9,'o b',"MarkerSize",20)
end
elseif c==4&&d==9
if p(5,9)==8||p(5,9)==9||p(5,9)==10||p(5,9)==11||p(5,9)==12||p(5,9)==13||p(5,9)==14
else
a131=[5 9];
plot(5,9,'o b',"MarkerSize",20)
end
if p(4,10)==8||p(4,10)==9||p(4,10)==10||p(4,10)==11||p(4,10)==12||p(4,10)==13||p(4,10)==14
else
a132=[4 10];
plot(4,10,'o b',"MarkerSize",20)
end
if p(4,8)==8||p(4,8)==9||p(4,8)==10||p(4,8)==11||p(4,8)==12||p(4,8)==13||p(4,8)==14
else
a134=[4 8];
plot(4,8,'o b',"MarkerSize",20)
end
elseif c==5&&d==9
if p(6,9)==8||p(6,9)==9||p(6,9)==10||p(6,9)==11||p(6,9)==12||p(6,9)==13||p(6,9)==14
else
a131=[6 9];
plot(6,9,'o b',"MarkerSize",20)
end
if p(5,10)==8||p(5,10)==9||p(5,10)==10||p(5,10)==11||p(5,10)==12||p(5,10)==13||p(5,10)==14
else
a132=[5,10];
plot(5,10,'o b',"MarkerSize",20)
end
if p(4,9)==8||p(4,9)==9||p(4,9)==10||p(4,9)==11||p(4,9)==12||p(4,9)==13||p(4,9)==14
else
a133=[4 9];
plot(4,9,'o b',"MarkerSize",20)
end
if p(5,8)==8||p(5,8)==9||p(5,8)==10||p(5,8)==11||p(5,8)==12||p(5,8)==13||p(5,8)==14
else
a134=[5 8];
plot(5,8,'o b',"MarkerSize",20)
end
elseif c==6&&d==9
if p(6,10)==8||p(6,10)==9||p(6,10)==10||p(6,10)==11||p(6,10)==12||p(6,10)==13||p(6,10)==14
else
a132=[6 10];
plot(6,10,'o b',"MarkerSize",20)
end
if p(5,9)==8||p(5,9)==9||p(5,9)==10||p(5,9)==11||p(5,9)==12||p(5,9)==13||p(5,9)==14
else
a133=[5 9];
plot(5,9,'o b',"MarkerSize",20)
end
if p(6,8)==8||p(6,8)==9||p(6,8)==10||p(6,8)==11||p(6,8)==12||p(6,8)==13||p(6,8)==14
else
a134=[6 8];
plot(6,8,'o b',"MarkerSize",20)
end
elseif c==4&&d==8
if p(5,8)==8||p(5,8)==9||p(5,8)==10||p(5,8)==11||p(5,8)==12||p(5,8)==13||p(5,8)==14
else
a131=[5 8];
plot(5,8,'o b',"MarkerSize",20)
end
if p(4,9)==8||p(4,9)==9||p(4,9)==10||p(4,9)==11||p(4,9)==12||p(4,9)==13||p(4,9)==14
else
a132=[4 9];
plot(4,9,'o b',"MarkerSize",20)
end
elseif c==5&&d==8
if p(6,8)==8||p(6,8)==9||p(6,8)==10||p(6,8)==11||p(6,8)==12||p(6,8)==13||p(6,8)==14
else
a131=[6 8];
plot(6,8,'o b',"MarkerSize",20)
end
if p(5,9)==8||p(5,9)==9||p(5,9)==10||p(5,9)==11||p(5,9)==12||p(5,9)==13||p(5,9)==14
else
a132=[5 9];
plot(5,9,'o b',"MarkerSize",20)
end
if p(4,8)==8||p(4,8)==9||p(4,8)==10||p(4,8)==11||p(4,8)==12||p(4,8)==13||p(4,8)==14
else
a133=[4 8];
plot(4,8,'o b',"MarkerSize",20)
end
elseif c==6&&d==8
if p(6,9)==8||p(6,9)==9||p(6,9)==10||p(6,9)==11||p(6,9)==12||p(6,9)==13||p(6,9)==14
else
a132=[6 9];
plot(6,9,'o b',"MarkerSize",20)
end
if p(5,8)==8||p(5,8)==9||p(5,8)==10||p(5,8)==11||p(5,8)==12||p(5,8)==13||p(5,8)==14
else
a133=[5 8];
plot(5,8,'o b',"MarkerSize",20)
end
end
while(1)
[e,f]=ginput(1);
g=round(e);
h=round(f);
if g>=1&&h>=1
break
end
end
if (g==a131(1)&&h==a131(2))||(g==a132(1)&&h==a132(2))||(g==a133(1)&&h==a133(2))||(g==a134(1)&&h==a134(2))
p(c,d)=0;
p(g,h)=13;
player=0;
else
end
case 14
for i=c+1:9
if p(i,d)==0
plot(i,d,'o b',"MarkerSize",20)
a141x(i)=i;
a141y(i)=d;
continue
elseif p(i,d)~=0
tiao1(1)=i;
tiao1(2)=d;
break
end
end
for i=tiao1(1)+1:9
if p(i,d)==0
continue
elseif p(i,d)==8||p(i,d)==9||p(i,d)==10||p(i,d)==11||p(i,d)==12||p(i,d)==13||p(i,d)==14
if i~=c+1
break
elseif i==c+1
break
end
elseif p(i,d)==1||p(i,d)==2||p(i,d)==3||p(i,d)==4||p(i,d)==5||p(i,d)==6||p(i,d)==7
plot(i,d,'o b',"MarkerSize",20)
a141x(i)=i;
a141y(i)=d;
break
end
end
for j=d+1:10
if p(c,j)==0
plot(c,j,'o b',"MarkerSize",20)
a142x(j)=c;
a142y(j)=j;
continue
elseif p(c,j)~=0
tiao2(1)=c;
tiao2(2)=j;
break
end
end
for j=tiao2(2)+1:10
if p(c,j)==0
continue
elseif p(c,j)==8||p(c,j)==9||p(c,j)==10||p(c,j)==11||p(c,j)==12||p(c,j)==13||p(c,j)==14
if j~=d+1
break
elseif j==d+1
break
end
elseif p(c,j)==1||p(c,j)==2||p(c,j)==3||p(c,j)==4||p(c,j)==5||p(c,j)==6||p(c,j)==7
plot(c,j,'o b',"MarkerSize",20)
a142x(j)=c;
a142y(j)=j;
break
end
end
for i=c-1:-1:1
if p(i,d)==0
plot(i,d,'o b',"MarkerSize",20)
a143x(i)=i;
a143y(i)=d;
continue
elseif p(i,d)~=0
tiao3(1)=i;
tiao3(2)=d;
break
end
end
for i=tiao3(1)-1:-1:1
if p(i,d)==0
continue
elseif p(i,d)==8||p(i,d)==9||p(i,d)==10||p(i,d)==11||p(i,d)==12||p(i,d)==13||p(i,d)==14
if i~=c+1
break
elseif i==c+1
break
end
elseif p(i,d)==1||p(i,d)==2||p(i,d)==3||p(i,d)==4||p(i,d)==5||p(i,d)==6||p(i,d)==7
plot(i,d,'o b',"MarkerSize",20)
a143x(i)=i;
a143y(i)=d;
break
end
end
for j=d-1:-1:1
if p(c,j)==0
plot(c,j,'o b',"MarkerSize",20)
a144x(j)=c;
a144y(j)=j;
continue
elseif p(c,j)~=0
tiao4(1)=c;
tiao4(2)=j;
break
end
end
for j=tiao4(2)-1:-1:1
if p(c,j)==0
continue
elseif p(c,j)==8||p(c,j)==9||p(c,j)==10||p(c,j)==11||p(c,j)==12||p(c,j)==13||p(c,j)==14
if j~=d-1
break
elseif j==d+1
break
end
elseif p(c,j)==1||p(c,j)==2||p(c,j)==3||p(c,j)==4||p(c,j)==5||p(c,j)==6||p(c,j)==7
plot(c,j,'o b',"MarkerSize",20)
a144x(j)=c;
a144y(j)=j;
break
end
end
while(1)
[e,f]=ginput(1);
g=round(e);
h=round(f);
if g>=1&&h>=1
break
end
end
for i=1:length(a141x)
if g==a141x(i)&&h==a141y(i)
p(c,d)=0;
p(g,h)=14;
player=0;
else
continue
end
end
for i=1:length(a142x)
if g==a142x(i)&&h==a142y(i)
p(c,d)=0;
p(g,h)=14;
player=0;
else
continue
end
end
for i=1:length(a143x)
if g==a143x(i)&&h==a143y(i)
p(c,d)=0;
p(g,h)=14;
player=0;
else
continue
end
end
for i=1:length(a144x)
if g==a144x(i)&&h==a144y(i)
p(c,d)=0;
p(g,h)=14;
player=0;
else
continue
end
end
end
end
clf %落子后重新绘制一次棋盘和棋子
hold on
axis([1,9,1,10]);
axis square;
x=1:9;
y=1:10;
shu1=linspace(10,10,9);
shu2=linspace(6,6,9);
shu3=[10,5,5,5,5,5,5,5,10];
stem(x,shu1,'- . k',"MarkerSize",0.001);
stem(x,shu2,'- . w',"MarkerSize",0.001);
stem(x,shu3,'- . k',"MarkerSize",0.001);
xie1x=[4,5,6,5,6,5,4];
xie1y=[1,2,1,2,3,2,3];
xie2x=[4,5,6,5,6,5,4];
xie2y=[10,9,10,9,8,9,8];
for i=1:10
for j=1:9
heng(i,j)=11-i;
end
plot(x,heng(i,:),'k-')
end
plot(xie1x,xie1y,'k')
plot(xie2x,xie2y,'k')
for i=1:9
for j=1:10
switch p(i,j)
case 1
plot(i,j,'o r',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'兵',"Color",[1 0 0])
case 2
plot(i,j,'o r',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'车',"Color",[1 0 0])
case 3
plot(i,j,'o r',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'马',"Color",[1 0 0])
case 4
plot(i,j,'o r',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'象',"Color",[1 0 0])
case 5
plot(i,j,'o r',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'士',"Color",[1 0 0])
case 6
plot(i,j,'o r',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'帅',"Color",[1 0 0])
case 7
plot(i,j,'o r',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'炮',"Color",[1 0 0])
case 8
plot(i,j,'o k',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'兵',"Color",[0 0 0])
case 9
plot(i,j,'o k',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'车',"Color",[0 0 0])
case 10
plot(i,j,'o k',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'马',"Color",[0 0 0])
case 11
plot(i,j,'o k',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'象',"Color",[0 0 0])
case 12
plot(i,j,'o k',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'士',"Color",[0 0 0])
case 13
plot(i,j,'o k',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'帅',"Color",[0 0 0])
case 14
plot(i,j,'o k',"MarkerSize",20)
plot(i,j,'. w',"MarkerSize",65)
text(i-0.1,j,'炮',"Color",[0 0 0])
otherwise
continue
end
end
end
hongshuai=0; %初始化红方帅状态
heishuai=0; %初始化黑方帅状态
for i=1:9 %更新红方帅状态
for j=1:10
if p(i,j)==6
hongshuai=1;
p6(1)=i;
p6(2)=j;
break
else
end
end
end
for i=1:9 %更新黑方帅状态
for j=1:10
if p(i,j)==13
heishuai=1;
p13(1)=i;
p13(2)=j;
break
else
continue
end
end
end
if p6(1)==p13(1) %判定将帅是否碰面
for j=p6(2)+1:p13(2)
if p(p6(1),j)==0||p(p6(1),j)==13
zhishuai=1;
continue
else
zhishuai=0;
break
end
end
end
if (hongshuai==1&&heishuai==1) %判断游戏是否结束
if zhishuai==0
continue
elseif zhishuai==1
return
end
else
return
end
end
后记
棋子的判定都是用的最基础的判定语句和遍历,导致代码多、繁杂,运行效率低下,以后技术好了尽量改进一下