头像都是上网找的,如有侵权,请联系删除!
游戏名称:华容道
实现工具:matlab
实现功能:华容道基本功能+五种开局模式+重新开始+关于+步数显示;所有功能符合逻辑并通过自测。
难点:兵的对角移动判断
实现思路:武将和兵都为按键型控件,移动通过鼠标按键按下的位置判断,过程中生成一个5*4的矩阵,用于游戏逻辑判断。
完成日期:2018.06.27
function huarongdao %主函数
global everyHandle wjposition mode step stepHandle %全局变量 everyHandle为控件的句柄值,wjposition是控件的位置元胞数组,mode为游戏模式,step为步数,stepHandle为步数按钮句柄值
windowHandle = figure('Name','华容道','NumberTitle','off','MenuBar','none',...
'ToolBar','none','Position',[650 350 420 560],'WindowButtonDownFcn',...
@emptyClick,'Resize','off'); %emptyClick函数为鼠标按键按下事件函数
axes(windowHandle,'Position',[0 0 0 0]) %创建坐标系,用来检测鼠标按下位置
axis off % 不显示坐标轴
mode = '横刀立马①'; %初始化游戏模式为横刀立马①
step = 0; %初始化步数为0
wjposition = {[110 310 200 200],[10 310 100 200],[310 310 100 200],...% 横刀立马①模式下武将的初始位置 顺序为: {'曹操','张飞','赵云','关羽','马超','黄忠','兵A','兵B','兵C','兵D'};
[110 210 200 100],[10 110 100 200],[310 110 100 200],...
[10 10 100 100],[110 110 100 100],[210 110 100 100],[310 10 100 100]};
wjphoto = {imread('曹操.jpg'),imread('张飞.jpg'),imread('赵云.jpg'),... % 载入武将的图片数据
imread('关羽.jpg'),imread('马超.jpg'),imread('黄忠.jpg'),...
imread('兵A.jpg'),imread('兵B.jpg'),imread('兵C.jpg'),imread('兵D.jpg'),};
for ix = 1:10
uicontrol('parent',windowHandle,'Style','pushbutton',...
'Position',wjposition{ix},'FontSize',30,'Callback',@checked,'CData',wjphoto{ix}) % 生成游戏界面控件
end
everyHandle = flip(findall(gcf,'Style','pushbutton')); %找出游戏将兵的句柄值,并赋予everyHandle
stepHandle = uicontrol('parent',windowHandle,'Style','pushbutton',...
'Position',[10 515 100 45],'String','当前步数','Fontsize',10); %创建游戏步数显示按钮
option = {'选择开局','重新开始','关于'};
for ix = 0:2
uicontrol('parent',windowHandle,'Style','pushbutton',... %创建菜单选项
'Position',[ix*100+110 515 100 45],'String',option{ix+1},...
'Fontsize&#