matlab写一个贪吃蛇小游戏
时间: 2023-07-20 21:17:11 浏览: 127
基于matlab的贪吃蛇游戏
5星 · 资源好评率100%
好的,以下是一个简单的贪吃蛇小游戏的MATLAB代码,希望能够帮到你:
```matlab
%% 贪吃蛇小游戏
% 初始化游戏界面
figure('KeyPressFcn',@keypress, 'Name','贪吃蛇小游戏');
axis([0 20 0 20]); axis square; axis off;
set(gca, 'position',[0 0 1 1]); hold on;
% 初始化贪吃蛇
snake = [3 1; 2 1; 1 1]; % 贪吃蛇起始位置
snake_dir = [1 0]; % 贪吃蛇的方向
plot(snake(:,1),snake(:,2),'b','LineWidth',2); % 绘制贪吃蛇
% 初始化食物
food = ceil(rand(1,2)*20); % 随机生成食物位置
plot(food(1),food(2),'r.','MarkerSize',20); % 绘制食物
% 初始化游戏参数
gameover = false; % 游戏是否结束的标志
score = 0; % 得分
% 监听键盘事件
function keypress(~,event)
switch event.Key
case 'uparrow'
snake_dir = [-1 0];
case 'downarrow'
snake_dir = [1 0];
case 'leftarrow'
snake_dir = [0 -1];
case 'rightarrow'
snake_dir = [0 1];
end
end
% 游戏循环
while ~gameover
% 移动贪吃蛇
snake_head = snake(1,:) + snake_dir;
snake = [snake_head; snake(1:end-1,:)];
% 判断是否吃到食物
if all(snake_head == food)
food = ceil(rand(1,2)*20); % 随机生成新的食物位置
plot(food(1),food(2),'r.','MarkerSize',20); % 绘制新的食物
score = score + 1; % 得分加一
end
% 判断是否游戏结束
if snake_head(1)<1 || snake_head(1)>20 || snake_head(2)<1 || snake_head(2)>20 || any(all(bsxfun(@eq,snake,snake_head),2))
gameover = true;
end
% 更新贪吃蛇的位置
set(gca,'Xlim',[0 20],'Ylim',[0 20]); axis square; axis off;
set(gca,'position',[0 0 1 1]); hold on;
plot(snake(:,1),snake(:,2),'b','LineWidth',2);
% 更新得分
title(['得分:',num2str(score)]);
% 控制游戏速度
pause(0.1);
end
% 游戏结束
title(['游戏结束,得分:',num2str(score)]);
```
这个游戏很简单,按上下左右键移动蛇去吃食物,如果碰到墙壁或自己的身体则游戏结束。你可以根据自己的需求修改和优化代码。
阅读全文