MATLAB贪吃蛇游戏代码:完整可运行的实现
以下是一个简单的贪吃蛇小游戏的MATLAB代码,可以直接运行:
function SnakeGame()
% 初始化游戏参数
gridSize = 20; % 网格大小
gameSpeed = 0.1; % 游戏速度
snakeLength = 3; % 蛇的初始长度
% 创建游戏界面
figure('KeyPressFcn',@keyPressCallback);
axis off;
axis equal;
xlim([0, gridSize]);
ylim([0, gridSize]);
% 初始化蛇的位置和方向
snakePos = [ceil(gridSize/2), ceil(gridSize/2)];
snakeDirection = [0, 1]; % 初始方向向右
% 生成食物的位置
foodPos = generateFood(gridSize);
% 避免蛇初始时与食物重叠
while isequal(snakePos, foodPos)
foodPos = generateFood(gridSize);
end
% 开始游戏循环
while true
% 更新蛇的位置
snakePos = [snakePos(1) + snakeDirection(1), snakePos(2) + snakeDirection(2)];
% 判断蛇是否撞墙或撞到自己
if snakePos(1) < 1 || snakePos(1) > gridSize || snakePos(2) < 1 || snakePos(2) > gridSize || isSnakeBody(snakePos)
break;
end
% 判断蛇是否吃到食物
if isequal(snakePos, foodPos)
snakeLength = snakeLength + 1;
foodPos = generateFood(gridSize);
% 避免新生成的食物与蛇身重叠
while isSnakeBody(foodPos)
foodPos = generateFood(gridSize);
end
end
% 更新游戏界面
cla;
hold on;
plot(foodPos(1), foodPos(2), 'r.', 'MarkerSize', 20);
plot(snakePos(1), snakePos(2), 'b.', 'MarkerSize', 20);
for i = 1:length(snakePos)-1
plot(snakePos(i,1), snakePos(i,2), 'k.', 'MarkerSize', 20);
end
xlim([0, gridSize]);
ylim([0, gridSize]);
pause(gameSpeed);
% 更新蛇的身体
snakePos = [snakePos; snakePos(end-1:end,:)];
if length(snakePos) > snakeLength
snakePos = snakePos(2:end,:);
end
end
% 游戏结束
msgbox(['Game Over! Your Score: ' num2str(snakeLength-3)], 'Game Over', 'modal');
% 键盘事件回调函数
function keyPressCallback(~, event)
switch event.Key
case 'uparrow'
if ~isequal(snakeDirection, [0, -1])
snakeDirection = [0, 1];
end
case 'downarrow'
if ~isequal(snakeDirection, [0, 1])
snakeDirection = [0, -1];
end
case 'leftarrow'
if ~isequal(snakeDirection, [1, 0])
snakeDirection = [-1, 0];
end
case 'rightarrow'
if ~isequal(snakeDirection, [-1, 0])
snakeDirection = [1, 0];
end
end
end
% 生成食物的位置
function foodPos = generateFood(gridSize)
foodPos = [randi(gridSize), randi(gridSize)];
end
% 判断位置是否在蛇身上
function isBody = isSnakeBody(position)
isBody = false;
for i = 1:length(snakePos)-1
if isequal(position, snakePos(i,:))
isBody = true;
break;
end
end
end
end
你可以将以上代码复制到MATLAB中并运行SnakeGame函数来开始游戏。在游戏中,你可以使用方向键控制蛇的移动方向,目标是尽可能吃到食物并避免撞到墙壁或自己的身体。游戏结束后会弹出一个消息框显示你的得分。
游戏说明:
- 方向键控制: 使用方向键(上、下、左、右)控制蛇的移动方向。
- 食物: 屏幕上会随机出现食物,蛇吃到食物会变长。
- 游戏结束: 当蛇撞到墙壁或自己的身体时游戏结束。
- 得分: 游戏结束后会显示你的得分,分数为蛇的长度减去初始长度 3。
运行方法:
- 将代码复制到MATLAB编辑器中。
- 在命令行窗口输入
SnakeGame并回车。 - 游戏窗口将会弹出,开始你的贪吃蛇之旅!
原文地址: https://www.cveoy.top/t/topic/psxs 著作权归作者所有。请勿转载和采集!