有趣的MATLAB 1游戏程序.docx

上传人:b****2 文档编号:18176222 上传时间:2023-08-13 格式:DOCX 页数:65 大小:27.50KB
下载 相关 举报
有趣的MATLAB 1游戏程序.docx_第1页
第1页 / 共65页
有趣的MATLAB 1游戏程序.docx_第2页
第2页 / 共65页
有趣的MATLAB 1游戏程序.docx_第3页
第3页 / 共65页
有趣的MATLAB 1游戏程序.docx_第4页
第4页 / 共65页
有趣的MATLAB 1游戏程序.docx_第5页
第5页 / 共65页
有趣的MATLAB 1游戏程序.docx_第6页
第6页 / 共65页
有趣的MATLAB 1游戏程序.docx_第7页
第7页 / 共65页
有趣的MATLAB 1游戏程序.docx_第8页
第8页 / 共65页
有趣的MATLAB 1游戏程序.docx_第9页
第9页 / 共65页
有趣的MATLAB 1游戏程序.docx_第10页
第10页 / 共65页
有趣的MATLAB 1游戏程序.docx_第11页
第11页 / 共65页
有趣的MATLAB 1游戏程序.docx_第12页
第12页 / 共65页
有趣的MATLAB 1游戏程序.docx_第13页
第13页 / 共65页
有趣的MATLAB 1游戏程序.docx_第14页
第14页 / 共65页
有趣的MATLAB 1游戏程序.docx_第15页
第15页 / 共65页
有趣的MATLAB 1游戏程序.docx_第16页
第16页 / 共65页
有趣的MATLAB 1游戏程序.docx_第17页
第17页 / 共65页
有趣的MATLAB 1游戏程序.docx_第18页
第18页 / 共65页
有趣的MATLAB 1游戏程序.docx_第19页
第19页 / 共65页
有趣的MATLAB 1游戏程序.docx_第20页
第20页 / 共65页
亲,该文档总共65页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

有趣的MATLAB 1游戏程序.docx

《有趣的MATLAB 1游戏程序.docx》由会员分享,可在线阅读,更多相关《有趣的MATLAB 1游戏程序.docx(65页珍藏版)》请在冰点文库上搜索。

有趣的MATLAB 1游戏程序.docx

有趣的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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2