关于matlab中交互输入的问题??
本人刚刚学习matlab,正在编写一个扫雷的程序,还不会gui,是基于字符的,可以自己玩,也可以让电脑来自动扫!不过在input上遇到了问题,每次运行到input 语句的时候显示如下:
??? Index exceeds matrix dimensions.
Error in ==> minesweeper at 11
xx=input('Please input x!');
希望大家帮个忙!!
程序如下(未完成):
function step=minesweeper(x,y,input)%falied!
tag=input('1-Play by yourself!2-Play by AI!');
matrix=minemap(x,y,input);
matrix1=zeros(x,y);
matrix1=matrix1-100;%Matrix1 is the matrix that you can see on screen!
disp(matrix1);
have=0;
if tag==1
while check(have,matrix1,matrix)~=input
have=check(have,matrix1,matrix);
xx=input('Please input x!');
yy=input('Please input y!');
ju=input('please input judgement:1 0r 0!');
matrix1=returnmap(matrix,xx,yy,ju);
end
if have==input
disp('You have successed!!');
else
disp('To be continued.......');
end
elseif tag==2
step=autoplay(matrix);
return;
end
function step=autoplay(inmatrix)%failed!
step=1;
=size(inmatrix);
x=round(rand*(m-1))+1;
y=round(rand*(n-1))+1;
mat=returnmap(inmatrix,x,y);
if mat==0
step='Failed';
return;
end
while mat~=0 %?????
end
function outmatrix=minemap(x,y,input)%successful!
%First,we have to make the out!
totol=x*y;
out(1,1)=round(rand*(totol-1))+1;
for i=2:1:input
long=length(out);tapp=1;
while tapp==1
tap=1;
number=round(rand*(totol-1))+1;
for j=1:1:long
if out(1,j)==number
tap=0;
break;
end
end
if tap==1
out(1,i)=number;
tapp=0;
end
end
end
%The out has been finished successfully!
outmatrix=zeros(x,y);
long=length(out);
for i=1:1:long
outmatrix(out(i))=-20;
end
xx=zeros(1,y);yy=zeros(x+2,1);
temp=;
outsecond=;
for i=2:1:x+1
for j=2:1:y+1
ifoutsecond(i,j)<0
outsecond(i-1,j)=outsecond(i-1,j)+1;
outsecond(i+1,j)=outsecond(i+1,j)+1;
outsecond(i,j-1)=outsecond(i,j-1)+1;
outsecond(i,j+1)=outsecond(i,j+1)+1;
outsecond(i-1,j-1)=outsecond(i-1,j-1)+1;
outsecond(i-1,j+1)=outsecond(i-1,j+1)+1;
outsecond(i+1,j-1)=outsecond(i+1,j-1)+1;
outsecond(i+1,j+1)=outsecond(i+1,j+1)+1;
end
end
end
outmatrix=outsecond(2:x+1,2:y+1);
function outmatrix=returnmap(mat,x,y,ju)%failed!
%x and y are coordinates,but ju is a judgement,one means yes but means no!
outmatrix=mat;
if mat(x,y)<0&&ju==0
outmatrix=0;
return;% You have failed!
elseif mat(x,y)>0&&ju==0
%100 means having known but -100 means unknown,88 means maybe a bomb!
outmatrix(x,y)=100;
outmatrix=inmloop(mat,x,y);
elseif mat(x,y)>0&&ju==1
outmatrix(x,y)=88;
elseif mat(x,y)<0&&ju==1
outmatrix(x,y)=88;
end
%to be continued!
functionoutmatrix=loop(mat,x,y)%failed!
% function of loop is a recursion!
inmat=mat;
tempx=;
tempy=;
for i=1:1:8
while tempx(i)>0&&tempy(i)>0
%100 means having known but -100 means unknown!
ifinmat(tempx(i),tempy(i))==0
temp1=temp(i)-x;temp2=temp(i)-y;
for j=1:1:8
inmat(tempx(j)+temp1,tempy(j)+temp2)=100;%?????
end
inmat=loop(inmat,tempx(i),tempy(i));
else
inmat(tempx(i),tempy(i))=-100;
end
end
end
outmatrix=inmat;
functionsuccess=check(have,inmat,matrix)
success=have;
=size(inmat);
for i=1:1:x
for j=1:1:y
if inmat(x,y)==100&&matrix(x,y)<0
success=success+1;
end
end
end xx=input('Please input x!');
你希望输入的是什么东西 问题解决!
谢谢大家!!
页:
[1]