以下是一个基于MATLAB的简单贪吃蛇游戏代码,可以直接运行:\n\nmatlab\nfunction SnakeGame()\n\n% 游戏设置\ngridSize = 20; % 网格大小\nsnakeColor = 'g'; % 蛇的颜色\nfoodColor = 'r'; % 食物的颜色\n\n% 初始化游戏界面\nfigure('KeyPressFcn', @keyPressCallback); % 设置键盘按键回调函数\naxis off; % 关闭坐标轴\naxis equal; % 设置坐标轴比例一致\nxlim([1 gridSize]);\nylim([1 gridSize]);\nhold on;\n\n% 初始化蛇和食物\nsnake = [5 5]; % 蛇的初始位置\nfood = generateFood(); % 食物的初始位置\ndirection = 'right'; % 蛇的初始移动方向\n\n% 游戏循环\nwhile true\n % 更新蛇的位置\nsnake = updateSnake(snake, direction);\n\n % 判断蛇是否吃到食物\n if isequal(snake(1,:), food)\n % 蛇吃到食物,增加蛇的长度\nsnake = [snake; snake(end, :)];\n % 重新生成食物\n food = generateFood();\n end\n\n % 判断蛇是否撞到自己或撞到边界\n if isColliding(snake) || isOutsideGrid(snake, gridSize)\n % 游戏结束\n break;\n end\n\n % 清空游戏界面\n cla;\n\n % 绘制蛇和食物\n plot(snake(:,1), snake(:,2), snakeColor, 'LineWidth', 2);\n plot(food(1), food(2), foodColor, 'Marker', 'o', 'MarkerSize', 10);\n\n % 设置绘图延时,控制游戏速度\n pause(0.1);\nend\n\n% 游戏结束提示\ntitle('Game Over!', 'FontSize', 20, 'FontWeight', 'bold', 'Color', 'r');\ntext(gridSize/2, gridSize/2, 'Press any key to exit...', 'FontSize', 16, 'HorizontalAlignment', 'center');\n\n% 键盘按键回调函数\nfunction keyPressCallback(~, event)\n switch event.Key\n case 'uparrow'\n if ~isequal(direction, 'down') % 防止蛇倒退\n direction = 'up';\n end\n case 'downarrow'\n if ~isequal(direction, 'up')\n direction = 'down';\n end\n case 'leftarrow'\n if ~isequal(direction, 'right')\n direction = 'left';\n end\n case 'rightarrow'\n if ~isequal(direction, 'left')\n direction = 'right';\n end\n end\nend\n\n% 更新蛇的位置\nfunction newSnake = updateSnake(oldSnake, dir)\n newHead = oldSnake(1, :);\n switch dir\n case 'up'\n newHead(2) = newHead(2) + 1;\n case 'down'\n newHead(2) = newHead(2) - 1;\n case 'left'\n newHead(1) = newHead(1) - 1;\n case 'right'\n newHead(1) = newHead(1) + 1;\n end\n newSnake = [newHead; oldSnake(1:end-1, :)];\nend\n\n% 生成食物的位置\nfunction food = generateFood()\n food = randi(gridSize, 1, 2);\nend\n\n% 判断蛇是否撞到自己\nfunction collision = isColliding(snake)\n collision = false;\n if size(unique(snake, 'rows'), 1) < size(snake, 1)\n collision = true;\n end\nend\n\n% 判断蛇是否撞到边界\nfunction outside = isOutsideGrid(snake, gridSize)\n outside = any(snake(:) < 1) || any(snake(:) > gridSize);\nend\n\nend\n\n\n要运行这个代码,只需在MATLAB命令窗口中输入SnakeGame()即可开始游戏。请注意,这只是一个简单的贪吃蛇游戏示例,可能还有一些改进的空间,例如增加分数计算、难度级别等。\n\n


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

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