第一次发现 原来可以用matlab做个小游戏,借用了一个华容道的模板,希望各位大佬给小弟点意见。如有错误的地方,见谅。各位大佬有没有很好的游戏推荐?
function huarongdao()
A = [2 1 1 3;2 1 1 3;
4 6 6 5;
4 7 7 5;
7 0 0 7];
drawmap(A)
while 1
if A(5,2)==1&A(5,3)==1
ch = menu('曹操成功逃出华容道!如果要继续玩,按“是”,否则按“否”','是','否');
switch ch
case 1
huarongdao();
case 2
return
end
end
[xpos,ypos] = ginput(1);
col = ceil(xpos);
row = 5-ceil(ypos)+1;
juese = A(row,col);
switch juese
case 1%点击了曹操
[I,J] = find(A==1);
rm = max(I);
rn = min(I);
lm = max(J);
ln = min(J);
%判断是否能向左移
if ln>1&isequalm(A([rn,rm],ln-1),[0;0])
A([rn,rm],ln-1)=[1;1];
A([rn,rm],lm)=[0;0];
drawmap(A)
end
%判断是否能向右移
if lm<4&isequalm(A([rn,rm],lm+1),[0;0])
A([rn,rm],lm+1)=[1;1];
A([rn,rm],ln)=[0;0];
drawmap(A)
end
%判断是否能向下移
if rn>1&isequalm(A(rn-1,[ln,lm]),[0,0])
A(rn-1,[ln,lm])=[1,1];
A(rn+1,[ln,lm])=[0,0];
drawmap(A)
end
%判断是否能向上移
if rm<5&isequalm(A(rm+1,[ln,lm]),[0,0])
A(rm+1,[ln,lm])=[1,1];
A(rm-1,[ln,lm])=[0,0];
drawmap(A)
end
case 2% 点击了黄忠
[I,J] = find(A==2);
rm = max(I);
rn = min(I);
lm = max(J);
ln = min(J);
%判断是否能向左移
if ln>1&isequalm(A([rn,rm],ln-1),[0;0])
A([rn,rm],ln-1)=[2;2];
A([rn,rm],lm)=[0;0];
drawmap(A)
end
%判断是否能向右移
if lm<4&isequalm(A([rn,rm],lm+1),[0;0])
A([rn,rm],lm+1)=[2;2];
A([rn,rm],ln)=[0;0];
drawmap(A)
end
if rn>1&A(rn-1,ln)==0
if rm<5&A(rm+1,ln)==0%如果又能上移又能下移,则要点击的部位
ch = menu('请选择移到的方向:','上','下')
switch ch
case 1%上移
A(rn-1,ln) = 2;
A(rn+1,ln) = 0;
drawmap(A)
case 2%下移
A(rm+1,ln) = 2;
A(rm-1,ln) = 0;
drawmap(A)
end
else%只能上移
A(rn-1,ln) = 2;
A(rn+1,ln) = 0;
drawmap(A)
end
elseif rm<5&A(rm+1,ln)==0
A(rm+1,ln) = 2;
A(rm-1,ln) = 0;
drawmap(A)