row = 20;
col = 39;
rand('state',sum(100*clock))
[cc,rr] = meshgrid(1:col,1:row);
state = reshape([1:row*col],row,col);
id = reshape([1:row*col],row,col);
ptr_left = zeros(size(id));
ptr_up = zeros(size(id));
ptr_right = zeros(size(id));
ptr_down = zeros(size(id));
ptr_left(:,2:size(id,2)) = id(:,1:size(id,2)-1);
ptr_up(2:size(id,1),:) = id(1:size(id,1)-1,:);
ptr_right(:,1:size(id,2)-1) = id(:,2:size(id,2));
ptr_down(1:size(id,1)-1,:) = id(2:size(id,1),:);
the_maze = cat(2,reshape(id,row*col,1),reshape(rr,row*col,1),reshape(cc,row*col,1),reshape(state,row*col,1),...
the_maze = sortrows(the_maze);
id = the_maze(:,1);
rr = the_maze(:,2);
cc = the_maze(:,3);
state = the_maze(:,4);
ptr_left = the_maze(:,5);
ptr_up = the_maze(:,6);
ptr_right = the_maze(:,7);
ptr_down = the_maze(:,8);
clear the_maze;
[state, ptr_left, ptr_up, ptr_right, ptr_down]=...
f = figure('Name','迷宫'显示图形窗口的标题
标题栏中是否显示’Figure No. n’,其中n为图形窗口的编号
'Menubar','none',... %转换图形窗口菜单条的“关”
%建菜单
gameMenu = uimenu(f,'Label','游戏');
uimenu(gameMenu,'Label','新游戏','Accelerator','N','Callback',@new_game);
uimenu(gameMenu,'Label','退出','Accelerator','Q','Separator','on','Callback',@close_window);
show_maze(row, col, rr, cc, ptr_left, ptr_up, ptr_right, ptr_down,f);
% 开始
cursor_pos = [1,1];
current_id = 1;
text(cursor_pos(1),cursor_pos(2),'\\diamondsuit','HorizontalAlignment','Center','color','r');
%计时
timing = 1;
start_time = clock;
按下键盘时触发
获取方向建
记录过程
选择新游戏时触发
游戏还未结束,你确定要重新开始吗?','迷宫','确定','取消','取消');
确定')
关闭窗口时触发
游戏还未结束,你确定要退出吗?','迷宫','确定','取消','取消');
确定')
end
%显示迷宫
function show_maze(row, col, rr, cc, ptr_left, ptr_up, ptr_right, ptr_down,h)
figure(h)
line([.5,col+.5],[.5,.5]) % draw top border
line([.5,col+.5],[row+.5,row+.5]) % draw bottom border
line([.5,.5],[1.5,row+.5]) % draw left border
line([col+.5,col+.5],[.5,row-.5]) % draw right border
for ii=1:length(ptr_right)
end
axis equal
axis([.5,col+.5,.5,row+.5])
axis off
set(gca,'YDir','reverse')
end
%产生边界道路信息
function [state, ptr_left, ptr_up, ptr_right, ptr_down]=make_pattern(row,col, rr, cc, state, ptr_left, ptr_up, ptr_right, ptr_down)
while max(state) > 1