matlab迷宫游戏
时间: 2023-12-21 15:05:04 浏览: 99
以下是使用Matlab实现迷宫游戏的示例代码:
```matlab
% 创建迷宫地图
map = [1 1 1 1 1 1 1 1 1 1;
1 0 0 0 1 0 0 0 0 1;
1 1 1 0 1 0 1 1 0 1;
1 0 0 0 0 0 0 0 0 1;
1 0 1 1 1 1 1 1 0 1;
1 0 0 0 0 0 0 0 0 1;
1 1 1 1 1 1 1 1 1 1];
% 设置起点和终点
startPos = [2, 2];
endPos = [6, 9];
% 创建游戏窗口
figure('Name', '迷宫游戏', 'NumberTitle', 'off', 'MenuBar', 'none', 'ToolBar', 'none');
% 绘制迷宫地图
for i = 1:size(map, 1)
for j = 1:size(map, 2)
if map(i, j) == 1
rectangle('Position', [j-1, size(map, 1)-i, 1, 1], 'FaceColor', 'k');
end
end
end
% 设置玩家初始位置
playerPos = startPos;
% 创建玩家图标
playerIcon = rectangle('Position', [playerPos(2)-1, size(map, 1)-playerPos(1), 1, 1], 'FaceColor', 'r');
% 创建按钮
startButton = uicontrol('Style', 'pushbutton', 'String', '开始游戏', 'Position', [20, 20, 80, 30], 'Callback', @startGame);
restartButton = uicontrol('Style', 'pushbutton', 'String', '重新开始', 'Position', [120, 20, 80, 30], 'Callback', @restartGame);
quitButton = uicontrol('Style', 'pushbutton', 'String', '退出游戏', 'Position', [220, 20, 80, 30], 'Callback', @quitGame);
% 开始游戏函数
function startGame(~, ~)
set(startButton, 'Enable', 'off'); % 禁用开始游戏按钮
set(restartButton, 'Enable', 'on'); % 启用重新开始按钮
% 监听键盘事件
set(gcf, 'KeyPressFcn', @movePlayer);
end
% 重新开始游戏函数
function restartGame(~, ~)
set(restartButton, 'Enable', 'off'); % 禁用重新开始按钮
set(startButton, 'Enable', 'on'); % 启用开始游戏按钮
% 重置玩家位置
playerPos = startPos;
set(playerIcon, 'Position', [playerPos(2)-1, size(map, 1)-playerPos(1), 1, 1]);
% 清除之前的路径
delete(findobj(gca, 'Color', 'y'));
% 监听键盘事件
set(gcf, 'KeyPressFcn', '');
end
% 退出游戏函数
function quitGame(~, ~)
close(gcf); % 关闭游戏窗口
end
% 移动玩家函数
function movePlayer(~, event)
switch event.Key
case 'uparrow'
newPos = playerPos - [1, 0];
case 'downarrow'
newPos = playerPos + [1, 0];
case 'leftarrow'
newPos = playerPos - [0, 1];
case 'rightarrow'
newPos = playerPos + [0, 1];
otherwise
return;
end
% 判断新位置是否合法
if map(newPos(1), newPos(2)) == 0
% 更新玩家位置
playerPos = newPos;
set(playerIcon, 'Position', [playerPos(2)-1, size(map, 1)-playerPos(1), 1, 1]);
% 判断是否到达终点
if isequal(playerPos, endPos)
msgbox('恭喜你,成功到达终点!', '游戏结束');
set(restartButton, 'Enable', 'off'); % 禁用重新开始按钮
set(startButton, 'Enable', 'on'); % 启用开始游戏按钮
% 清除之前的路径
delete(findobj(gca, 'Color', 'y'));
end
% 绘制路径
rectangle('Position', [playerPos(2)-1, size(map, 1)-playerPos(1), 1, 1], 'FaceColor', 'y');
end
end
```
阅读全文