matlab游戏编程实例《华容道》

matlab游戏编程实例《华容道》

ID:20576652

大小:89.00 KB

页数:12页

时间:2018-10-13

matlab游戏编程实例《华容道》_第1页
matlab游戏编程实例《华容道》_第2页
matlab游戏编程实例《华容道》_第3页
matlab游戏编程实例《华容道》_第4页
matlab游戏编程实例《华容道》_第5页
资源描述:

《matlab游戏编程实例《华容道》》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、MATLAB游戏编程实例《华容道》华容道是著名的中国游戏,通过移动棋子,帮助曹操移到下方中间的出口处。本程序用MATLAB实现,局势可通过编辑矩阵A得到,1代表曹操,占四个方格,2代表黄忠,占两个竖格,3代表张飞,占两个竖格,4代表马超,占两个竖格,5代表赵云,占两个竖格,6代表关羽,占两个横格,7代表小卒,占一个方格。本游戏用鼠标玩,点击方格移动棋子,如果有多种可能的移动方式,会跳出一个对话框让游戏者选择(这个比较麻烦)。本游戏没有版权,可以以任何方式传播,可以用于商用,家用,民用,军用,当然,本人只是用来娱乐而已。如有问题,可以与slqinyi@1

2、63联系。另附游戏效果图:functionhuarongdao()A=[2113;2113;4665;4775;7007];drawmap(A)while1ifA(5,2)==1&A(5,3)==1ch=menu('曹操成功逃出华容道!如果要继续玩,按“是”,否则按“否”','是','否');switchchcase1huarongdao();case2returnendend[xpos,ypos]=ginput(1);col=ceil(xpos);row=5-ceil(ypos)+1;juese=A(row,col);switchjuesecase1

3、%点击了曹操[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%判断是否能向下移ifr

4、n>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)endcase2%点击了黄忠[I,J]=find(A==2);rm=max(I);rn=min(I);lm=max(J);ln=min(J);%判断是否能向左移ifln>1

5、&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)endifrn>1&A(rn-1,ln)==0ifrm<5&A(rm+1,ln)==0%如果又能上移又能下移,则要点击的部位ch=menu('请选择移到的方向:','上','下')swi

6、tchchcase1%上移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)endelse%只能上移A(rn-1,ln)=2;A(rn+1,ln)=0;drawmap(A)endelseifrm<5&A(rm+1,ln)==0A(rm+1,ln)=2;A(rm-1,ln)=0;drawmap(A)endcase3%张飞[I,J]=find(A==3);rm=max(I);rn=min(I);lm=max(J);ln=min(J);%判断是否能向

7、左移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)endifrn>1&A(rn-1,ln)==0ifrm<5&A(rm+1,ln)==0%如果又能上移又能下移,则要点击的部位ch=menu('请选择移到的方向:','上'

8、,'下')switchchcase1%上移A(rn-1,ln)=3;A(rn+1,ln)=0;

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。