当前位置: 首页 > article >正文

leetcode付费题 353. 贪吃蛇游戏解题思路

贪吃蛇游戏试玩:https://patorjk.com/games/snake/

img

问题描述

设计一个贪吃蛇游戏,要求实现以下功能:

  • 初始化游戏:给定网格宽度、高度和食物位置序列
  • 移动操作:根据指令(上、下、左、右)移动蛇头
  • 规则:
    1. 蛇头碰到边界或自身身体时游戏结束(返回-1)
    2. 吃到食物时蛇身长度增加
    3. 未吃到食物时正常移动(蛇头前进,蛇尾收缩)
核心思路
  1. 网格坐标转换
    • 使用一维坐标表示位置:x + y * 宽度
    • 简化位置计算和存储(0 表示 (0,0),1 表示 (1,0) 等)
  2. 蛇身存储
    • 使用队列(LinkedList)存储蛇身位置
    • 队首(头部)是最早加入的位置(蛇尾)
    • 队尾(尾部)是最新加入的位置(蛇头)
  3. 移动处理
    • 根据方向更新蛇头坐标
    • 边界检查:超出网格边界立即结束游戏
    • 碰撞检测:通过位置队列判断是否撞到自身
  4. 食物机制
    • 按顺序检查当前食物是否被吃
    • 吃到食物:不移除蛇尾,蛇身增长
    • 未吃到食物:移除蛇尾,保持长度
关键算法步骤
  1. 初始化

    public SnakeGame(int width, int height, int[][] food) {this.W = width;  // 网格宽度this.H = height; // 网格高度this.FOOD = food; // 食物序列this.queue.offer(0); // 初始位置(0,0)
    }
    
  2. 移动操作

    public int move(String direction) {// 1. 更新蛇头坐标switch (direction.charAt(0)) {case 'U'
http://www.lryc.cn/news/2395984.html

相关文章:

  • CCPC dongbei 2025 I
  • 系统性学习C语言-第十三讲-深入理解指针(3)
  • 代理模式核心概念
  • uni-app学习笔记十五-vue3页面生命周期(二)
  • 贪心算法实战篇2
  • Java 大视界 -- Java 大数据机器学习模型在元宇宙虚拟场景智能交互中的关键技术(239)
  • Flask中关于app.url_map属性的用法
  • 高速串行接口
  • 学习STC51单片机23(芯片为STC89C52RCRC)
  • 一个完整的日志收集方案:Elasticsearch + Logstash + Kibana+Filebeat (一)
  • 网络系统中安全漏洞扫描为何重要?扫描啥?咋扫描?
  • HiveSQL语法全解析与实战指南
  • 【conda报错】InvalidArchiveError
  • Socket 编程 TCP
  • Redis-6.2.9 Sentinel 哨兵配置
  • 基于TMC5160堵转检测技术的夹紧力控制系统设计与实现
  • 从零开始搞个简易分布式部署环境
  • XCTF-web-fileclude
  • OpenShift AI - 启用过时版本的 Notebook 镜像
  • Redis 缓存穿透、缓存击穿、缓存雪崩详解与解决方案
  • sass高阶应用
  • docker docker-ce docker.io
  • DQN和DDQN(进阶版)
  • 【组件】翻牌器效果
  • CentOS 7 环境中部署 LNMP(Linux + Nginx + MySQL 5.7 + PHP)
  • NX811NX816美光颗粒固态NX840NX845
  • 捋捋wireshark
  • c++学习之---模版
  • MyBatis-Flex 全面指南:下一代轻量级持久层框架实战入门
  • 第十六章 EMQX黑名单与连接抖动检测