贪吃蛇游戏设计-4.按键控制
4.按键控制/**04_Control - 按键控制项目这是贪吃蛇游戏教学系列的第四个项目,在03_Snake基础上添加了:游戏状态控制(开始、暂停)方向键控制蛇的移动定时器驱动的游戏循环学习目标:理解定时器setInterval的使用学习游戏状态管理(isPaused、timerId)掌握按钮点击事件处理理解蛇的移动算法(身体跟随头部)学习防止反向移动的逻辑*/@Entry @Component struct ParentComp { // Canvas渲染设置,开启抗锯齿 private settings: RenderingContextSettings = new RenderingContextSettings(true) // Canvas绘图上下文 private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) // 游戏画布尺寸 @State canvasSize: number = 300 // 定时器ID(-1表示未启动) @State timerId: number = -1 // 游戏是否暂停 @State isPaused: boolean = false // 当前分数 @State score: number = 0 // 每个方格的宽度 @State rectWidth: number = 15 // 蛇的移动方向(1=上, 2=下, 3=左, 4=右) @State rectDir: number = 4 // 蛇的长度(初始4节) @State snakeLength: number = 4 // 蛇身体各节的X坐标数组 @State snakeX: number[] = [0, 1, 2, 3] // 蛇身体各节的Y坐标数组 @State snakeY: number[] = [0, 0, 0, 0] // 食物的X坐标 @State foodX: number = 4 // 食物的Y坐标 @State foodY: number = 4 // 画布是否准备就绪 @State isCanvasReady: boolean = false /** * 组件即将出现时初始化画布尺寸 */ /** * 构建UI界面 * 在03_Snake基础上,添加了按钮点击事件和动态按钮文本 */ build() { Column() { // ========== 标题区域 ========== Text(