贪吃蛇matlab程序代码
时间: 2024-03-06 12:44:28 浏览: 82
贪吃蛇MATLAB代码
当然可以!下面是一个简单的贪吃蛇的MATLAB程序代码示例:
```matlab
function SnakeGame()
% 初始化游戏界面
fig = figure('KeyPressFcn',@keyDown);
axis off;
axis equal;
hold on;
% 设置游戏参数
gridSize = 20; % 网格大小
numGrids = 30; % 网格数量
snakeColor = 'g'; % 蛇的颜色
foodColor = 'r'; % 食物的颜色
% 初始化蛇和食物位置
snake = [2,2];
food = generateFood();
% 绘制蛇和食物
snakePlot = plot(snake(:,1),snake(:,2),snakeColor,'LineWidth',2);
foodPlot = plot(food(1),food(2),foodColor,'Marker','o','MarkerSize',10);
% 设置游戏循环
while true
% 获取键盘输入
key = get(fig,'CurrentKey');
% 根据键盘输入移动蛇
switch key
case 'uparrow'
snake = moveSnake(snake, [0,1]);
case 'downarrow'
snake = moveSnake(snake, [0,-1]);
case 'rightarrow'
snake = moveSnake(snake, [1,0]);
case 'leftarrow'
snake = moveSnake(snake, [-1,0]);
end
% 判断是否吃到食物
if isequal(snake(1,:),food)
snake(end+1,:) = snake(end,:);
food = generateFood();
set(foodPlot,'XData',food(1),'YData',food(2));
end
% 更新蛇的位置
set(snakePlot,'XData',snake(:,1),'YData',snake(:,2));
% 判断游戏是否结束
if isGameOver(snake, numGrids)
break;
end
% 控制游戏速度
pause(0.1);
end
% 游戏结束提示
text(numGrids/2,numGrids/2,'Game Over','FontSize',20,'HorizontalAlignment','center');
% 键盘输入回调函数
function keyDown(~,event)
key = event.Key;
end
% 移动蛇
function newSnake = moveSnake(oldSnake, direction)
newSnake = [oldSnake(1,:)+direction; oldSnake(1:end-1,:)];
end
% 生成食物
function food = generateFood()
food = randi([1,numGrids],1,2);
end
% 判断游戏是否结束
function gameOver = isGameOver(snake, numGrids)
head = snake(1,:);
body = snake(2:end,:);
% 判断是否撞墙
if any(head < 1) || any(head > numGrids)
gameOver = true;
return;
end
% 判断是否撞到自己的身体
if any(ismember(body,head,'rows'))
gameOver = true;
return;
end
gameOver = false;
end
end
```
这个程序使用MATLAB编写,实现了一个简单的贪吃蛇游戏。你可以在MATLAB中运行这个程序,通过方向键控制蛇的移动,目标是吃到食物并避免撞墙或撞到自己的身体。
阅读全文