有趣的MATLAB 1游戏程序.docx
- 文档编号:18176222
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:65
- 大小:27.50KB
有趣的MATLAB 1游戏程序.docx
《有趣的MATLAB 1游戏程序.docx》由会员分享,可在线阅读,更多相关《有趣的MATLAB 1游戏程序.docx(65页珍藏版)》请在冰点文库上搜索。
有趣的MATLAB1游戏程序
MATLAB游戏程序
1.空格游戏
functionpintu1()
A=gen();
G=[123;456;780];
drawmap(A);
while1
[xpos,ypos]=ginput
(1);
col=ceil(xpos);
row=3-ceil(ypos)+1;
num=A(row,col);
ifrow>1&A(row-1,col)==0
A(row-1,col)=num;
A(row,col)=0;
end
ifrow<3&A(row+1,col)==0
A(row+1,col)=num;
A(row,col)=0;
end
ifcol>1&A(row,col-1)==0
A(row,col-1)=num;
A(row,col)=0;
end
ifcol<3&A(row,col+1)==0
A(row,col+1)=num;
A(row,col)=0;
end
drawmap(A)
zt=abs(A-G);
ifsum(zt(:
))==0
msgbox('恭喜您成功完成!
')
break
end
end
functiondrawmap(A)
clf;
holdon
line([03],[00],'linewidth',4);
line([33],[03],'linewidth',4);
line([03],[33],'linewidth',4);
line([00],[03],'linewidth',4);
fori=1:
3
forj=1:
3
drawrect([j-13-i],[j3-i],[j3-i+1],[j-13-i+1],'y',A(i,j));
end
end
axisequal
axisoff
functiondrawrect(x1,x2,x3,x4,color,num)
x=[x1
(1)x2
(1)x3
(1)x4
(1)];
y=[x1
(2)x2
(2)x3
(2)x4
(2)];
fill(x,y,color)
ifnum==0
text(0.5*(x1
(1)+x2
(1)),0.5*(x1
(2)+x4
(2)),'','fontsize',24)
else
text(0.5*(x1
(1)+x2
(1))-0.05,0.5*(x1
(2)+x4
(2)),num2str(num),'fontsize',24)
end
functiony=gen()
y=inf*ones(1,9);
fori=1:
9
while1
a=randint(1,1,9);
ifisempty(find(y==a))
y(i)=a;
break
end
end
end
y=reshape(y,3,3);
2.华容道
functionhuarongdao()
A=[2113;
2113;
4665;
4775;
7007];
drawmap(A)
while1
ifA(5,2)==1&A(5,3)==1
ch=menu('曹操成功逃出华容道!
如果要继续玩,按“是”,否则按“否”','是','否');
switchch
case1
huarongdao();
case2
return
end
end
[xpos,ypos]=ginput
(1);
col=ceil(xpos);
row=5-ceil(ypos)+1;
juese=A(row,col);
switchjuese
case1%点击了曹操
[I,J]=find(A==1);
rm=max(I);
rn=min(I);
lm=max(J);
ln=min(J);
%判断是否能向左移
ifln>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
%判断是否能向右移
iflm<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
%判断是否能向下移
ifrn>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
%判断是否能向上移
ifrm<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
case2%点击了黄忠
[I,J]=find(A==2);
rm=max(I);
rn=min(I);
lm=max(J);
ln=min(J);
%判断是否能向左移
ifln>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
%判断是否能向右移
iflm<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
ifrn>1&A(rn-1,ln)==0
ifrm<5&A(rm+1,ln)==0%如果又能上移又能下移,则要点击的部位
ch=menu('请选择移到的方向:
','上','下')
switchch
case1%上移
A(rn-1,ln)=2;
A(rn+1,ln)=0;
drawmap(A)
case2%下移
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
elseifrm<5&A(rm+1,ln)==0
A(rm+1,ln)=2;
A(rm-1,ln)=0;
drawmap(A)
end
case3%张飞
[I,J]=find(A==3);
rm=max(I);
rn=min(I);
lm=max(J);
ln=min(J);
%判断是否能向左移
ifln>1&isequalm(A([rn,rm],ln-1),[0;0])
A([rn,rm],ln-1)=[3;3];
A([rn,rm],lm)=[0;0];
drawmap(A)
end
%判断是否能向右移
iflm<4&isequalm(A([rn,rm],lm+1),[0;0])
A([rn,rm],lm+1)=[3;3];
A([rn,rm],ln)=[0;0];
drawmap(A)
end
ifrn>1&A(rn-1,ln)==0
ifrm<5&A(rm+1,ln)==0%如果又能上移又能下移,则要点击的部位
ch=menu('请选择移到的方向:
','上','下')
switchch
case1%上移
A(rn-1,ln)=3;
A(rn+1,ln)=0;
drawmap(A)
case2%下移
A(rm+1,ln)=3;
A(rm-1,ln)=0;
drawmap(A)
end
else%只能上移
A(rn-1,ln)=3;
A(rn+1,ln)=0;
drawmap(A)
end
elseifrm<5&A(rm+1,ln)==0
A(rm+1,ln)=3;
A(rm-1,ln)=0;
drawmap(A)
end
case4%马超
[I,J]=find(A==4);
rm=max(I);
rn=min(I);
lm=max(J);
ln=min(J);
%判断是否能向左移
ifln>1&isequalm(A([rn,rm],ln-1),[0;0])
A([rn,rm],ln-1)=[4;4];
A([rn,rm],lm)=[0;0];
drawmap(A)
end
%判断是否能向右移
iflm<4&isequalm(A([rn,rm],lm+1),[0;0])
A([rn,rm],lm+1)=[4;4];
A([rn,rm],ln)=[0;0];
drawmap(A)
end
ifrn>1&A(rn-1,ln)==0
ifrm<5&A(rm+1,ln)==0%如果又能上移又能下移,则要点击的部位
ch=menu('请选择移到的方向:
','上','下')
switchch
case1%上移
A(rn-1,ln)=4;
A(rn+1,ln)=0;
drawmap(A)
case2%下移
A(rm+1,ln)=4;
A(rm-1,ln)=0;
drawmap(A)
end
else%只能上移
A(rn-1,ln)=4;
A(rn+1,ln)=0;
drawmap(A)
end
elseifrm<5&A(rm+1,ln)==0
A(rm+1,ln)=4;
A(rm-1,ln)=0;
drawmap(A)
end
case5%赵云
[I,J]=find(A==5);
rm=max(I);
rn=min(I);
lm=max(J);
ln=min(J);
%判断是否能向左移
ifln>1&isequalm(A([rn,rm],ln-1),[0;0])
A([rn,rm],ln-1)=[5;5];
A([rn,rm],lm)=[0;0];
drawmap(A)
end
%判断是否能向右移
iflm<4&isequalm(A([rn,rm],lm+1),[0;0])
A([rn,rm],lm+1)=[5;5];
A([rn,rm],ln)=[0;0];
drawmap(A)
end
ifrn>1&A(rn-1,ln)==0
ifrm<5&A(rm+1,ln)==0%如果又能上移又能下移,则要点击的部位
ch=menu('请选择移到的方向:
','上','下')
switchch
case1%上移
A(rn-1,ln)=5;
A(rn+1,ln)=0;
drawmap(A)
case2%下移
A(rm+1,ln)=5;
A(rm-1,ln)=0;
drawmap(A)
end
else%只能上移
A(rn-1,ln)=5;
A(rn+1,ln)=0;
drawmap(A)
end
elseifrm<5&A(rm+1,ln)==0
A(rm+1,ln)=5;
A(rm-1,ln)=0;
drawmap(A)
end
case6%关羽
[I,J]=find(A==6);
rm=max(I);
rn=min(I);
lm=max(J);
ln=min(J);
%判断是否能向上移
ifrn>1&isequalm(A(rn-1,[ln,lm]),[0,0])
A(rn-1,[ln,lm])=[6,6];
A(rn,[ln,lm])=[0,0];
drawmap(A)
end
%判断是否能向下移
ifrm<5&isequalm(A(rm+1,[ln,lm]),[0,0])
A(rm+1,[ln,lm])=[6,6];
A(rm,[ln,lm])=[0,0];
drawmap(A)
end
ifln>1&A(rn,ln-1)==0
iflm<4&A(rm,lm+1)==0%如果又能左移又能右移,则要点击的部位
ch=menu('请选择移到的方向:
','左','右')
switchch
case1%左移
A(rm,ln-1)=6;
A(rm,ln+1)=0;
drawmap(A)
case2%右移
A(rm,lm+1)=6;
A(rm,lm-1)=0;
drawmap(A)
end
else%只能左移
A(rm,ln-1)=6;
A(rm,ln+1)=0;
drawmap(A)
end
elseiflm<4&A(rm,lm+1)==0
A(rm,lm+1)=6;
A(rm,lm-1)=0;
drawmap(A)
end
case7%小卒
ifrow>1&A(row-1,col)==0%上
ifcol>1&A(row,col-1)==0%左
ch=menu('请选择移到的方向:
','上','左')
switchch
case1
A(row-1,col)=7;
A(row,col)=0;
drawmap(A)
case2
A(row,col-1)=7;
A(row,col)=0;
drawmap(A)
end
elseifrow<5&A(row+1,col)==0%下
ch=menu('请选择移到的方向:
','上','下')
switchch
case1
A(row-1,col)=7;
A(row,col)=0;
drawmap(A)
case2
A(row+1,col)=7;
A(row,col)=0;
drawmap(A)
end
elseifcol<4&A(row,col+1)==0%右
ch=menu('请选择移到的方向:
','上','右')
switchch
case1
A(row-1,col)=7;
A(row,col)=0;
drawmap(A)
case2
A(row,col+1)=7;
A(row,col)=0;
drawmap(A)
end
else%只能向上
A(row-1,col)=7;
A(row,col)=0;
drawmap(A)
end
elseifcol>1&A(row,col-1)==0%左
ifrow<5&A(row+1,col)==0%下
ch=menu('请选择移到的方向:
','左','下')
switchch
case1
A(row,col-1)=7;
A(row,col)=0;
drawmap(A)
case2
A(row+1,col)=7;
A(row,col)=0;
drawmap(A)
end
elseifcol<4&A(row,col+1)==0%右
ch=menu('请选择移到的方向:
','左','右')
switchch
case1
A(row,col-1)=7;
A(row,col)=0;
drawmap(A)
case2
A(row,col+1)=7;
A(row,col)=0;
drawmap(A)
end
else%只能向左
A(row,col-1)=7;
A(row,col)=0;
drawmap(A)
end
elseifrow<5&A(row+1,col)==0%下
ifcol<4&A(row,col+1)==0%右
ch=menu('请选择移到的方向:
','下','右')
switchch
case1
A(row+1,col)=7;
A(row,col)=0;
drawmap(A)
case2
A(row,col+1)=7;
A(row,col)=0;
drawmap(A)
end
else%只能向下
A(row+1,col)=7;
A(row,col)=0;
drawmap(A)
end
elseifcol<4&A(row,col+1)==0%只能向右
A(row,col+1)=7;
A(row,col)=0;
drawmap(A)
end
end
end
functiondrawmap(A)
clf
holdon
%曹操
[IJ]=find(A==1);
x1=min(J)-1;
x2=max(J);
y1=5-(min(I)-1);
y2=5-max(I);
drawrect([x1,y1],[x2,y1],[x2,y2],[x1,y2],'r')
text(0.5*(x1+x2)-0.5,0.5*(y1+y2),'曹操','fontsize',28)
%黄忠
[I,J]=find(A==2);
x1=min(J)-1;
x2=max(J);
y1=5-(min(I)-1);
y2=5-max(I);
drawrect([x1,y1],[x2,y1],[x2,y2],[x1,y2],'y')
text(0.5*(x1+x2)-0.26,0.5*(0.5*(y1+y2)+y1),'黄','fontsize',28)
text(0.5*(x1+x2)-0.26,0.5*(0.5*(y1+y2)+y2),'忠','fontsize',28)
%张飞
[I,J]=find(A==3);
x1=min(J)-1;
x2=max(J);
y1=5-(min(I)-1);
y2=5-max(I);
drawrect([x1,y1],[x2,y1],[x2,y2],[x1,y2],'y')
text(0.5*(x1+x2)-0.26,0.5*(0.5*(y1+y2)+y1),'张','fontsize',28)
text(0.5*(x1+x2)-0.26,0.5*(0.5*(y1+y2)+y2),'飞','fontsize',28)
%马超
[I,J]=find(A==4);
x1=min(J)-1;
x2=max(J);
y1=5-(min(I)-1);
y2=5-max(I);
drawrect([x1,y1],[x2,y1],[x2,y2],[x1,y2],'y')
text(0.5*(x1+x2)-0.26,0.5*(0.5*(y1+y2)+y1),'马','fontsize',28)
text(0.5*(x1+x2)-0.26,0.5*(0.5*(y1+y2)+y2),'超','fontsize',28)
%赵云
[I,J]=find(A==5);
x1=min(J)-1;
x2=max(J);
y1=5-(min(I)-1);
y2=5-max(I);
drawrect([x1,y1],[x2,y1],[x2,y2],[x1,y2],'y')
text(0.5*(x1+x2)-0.26,0.5*(0.5*(y1+y2)+y1),'赵','fontsize',28)
text(0.5*(x1+x2)-0.26,0.5*(0.5*(y1+y2)+y2),'云','fontsize',28)
%关羽
[I,J]=find(A==6);
x1=min(J)-1;
x2=max(J);
y1=5-(min(I)-1);
y2=5-max(I);
drawrect([x1,y1],[x2,y1],[x2,y2],[x1,y2],'y')
text(0.5*(x1+0.5*(x1+x2))-0.26,0.5*(y1+y2),'关','fontsize',28)
text(0.5*(0.5*(x1+x2)+x2)-0.26,0.5*(y1+y2),'羽','fontsize',28)
%小卒
[I,J]=find(A==7);
fori=1:
length(I)
x1=J(i)-1;
x2=J(i);
y1=5-(I(i)-1);
y2=5-I(i);
drawrect([x1,y1],[x2,y1],[x2,y2],[x1,y2],'g')
text(0.5*(x1+x2)-0.26,0.5*(y1+y2),'卒','fontsize',28)
end
%画背景
line([04],[00],'color','b','linewidth',4)
line([04],[55],'color','b','linewidth',4)
line([00],[05],'color','b','linewidth',4)
line([44],[05],'color','b','linewidth',4)
fori=1:
4
line([04],[ii],'color','b','linestyle','--')
end
fori=1:
3
line([ii],[05],'color','b','linestyle','--')
end
axisequal
axis([0405])
axisoff
functiondrawrect(x1,x2,x3,x4,color)
x=[x1
(1)x2
(1)x3
(1)x4
(1)];
y=[x1
(2)x2
(2)x3
(2)x4
(2)];
fill(x,y,color)
3.凑五子棋
function[]=five()
globalahm1n1m2n2th1h2h3colorscorehschas
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 有趣的MATLAB 1游戏程序 有趣 MATLAB 游戏 程序