以下是一个简单的贪吃蛇小游戏的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。

运行方法:

  1. 将代码复制到MATLAB编辑器中。
  2. 在命令行窗口输入 SnakeGame 并回车。
  3. 游戏窗口将会弹出,开始你的贪吃蛇之旅!

原文地址: https://www.cveoy.top/t/topic/psxs 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录