返回

鸿蒙编程实战:3分钟打造“贪吃蛇”游戏

闲谈

鸿蒙 HarmonyOS:打造你的第一个贪吃蛇游戏

简介

作为华为推出的创新操作系统,鸿蒙 HarmonyOS 以其跨平台、分布式和高性能而闻名。它已被广泛应用于各种设备,从手机到平板电脑再到智慧屏。本文将引导你使用鸿蒙 HarmonyOS 编程基础知识,打造一个简单的贪吃蛇游戏,让你踏上学习之旅的第一步。

准备工作

在开始之前,你需要确保安装以下软件:

  • 鸿蒙 HarmonyOS 开发工具包 (JDK 11或以上版本)
  • Android Studio (版本 4.2 或以上版本)
  • Node.js (版本 12 或以上版本)
  • npm (版本 6 或以上版本)

创建项目

  1. 启动 Android Studio,选择“New Project”。
  2. 选择“Empty Activity”,点击“Next”。
  3. 在“Project Name”字段输入“贪吃蛇”,点击“Finish”。

添加依赖项

  1. 在项目根目录下打开“build.gradle”文件。

  2. 在“dependencies”部分添加以下代码:

    implementation 'com.huawei.ohos.hap:hapkit:1.0.0.602'
    
  3. 此外,添加以下代码:

    implementation 'org.apache.harmony:harmony-js-common:2.2.0.301'
    

编写代码

  1. 在项目根目录下创建“src”目录,并在其下创建“main”目录。

  2. 在“main”目录下创建“java”目录,再在其下创建“com.example.snake”目录。

  3. 在“com.example.snake”目录下创建“SnakeActivity.java”文件。

  4. 将以下代码复制到“SnakeActivity.java”文件中:

    package com.example.snake;
    
    import com.huawei.ohos.ace.Ability;
    import com.huawei.ohos.ace.AppCompatActivity;
    import com.huawei.ohos.ace.HelloWorld;
    import org.apache.harmony.javascript.rhino.v8.HarmonyV8;
    
    public class SnakeActivity extends Ability {
        @Override
        public void onStart(Intent intent) {
            super.onStart(intent);
            setContentView(R.layout.activity_snake);
    
            // 创建 HarmonyV8 引擎
            HarmonyV8 engine = new HarmonyV8();
    
            // 运行 JavaScript 代码
            engine.evalScript("console.log('Hello, world!');");
        }
    }
    
  5. 在项目根目录下创建“assets”目录,并在其下创建“js”目录。

  6. 在“js”目录下创建“snake.js”文件。

  7. 将以下代码复制到“snake.js”文件中:

    // 定义画布
    var canvas = document.getElementById("canvas");
    var context = canvas.getContext("2d");
    
    // 定义贪吃蛇
    var snake = [
        {x: 200, y: 200},
        {x: 190, y: 200},
        {x: 180, y: 200},
        {x: 170, y: 200},
        {x: 160, y: 200}
    ];
    
    // 定义食物
    var food = {x: 100, y: 100};
    
    // 定义方向
    var dx = 10;
    var dy = 0;
    
    // 定义游戏速度
    var speed = 100;
    
    // 定义游戏是否结束
    var gameOver = false;
    
    // 定义游戏循环
    function gameLoop() {
        // 清除画布
        context.clearRect(0, 0, canvas.width, canvas.height);
    
        // 绘制贪吃蛇
        for (var i = 0; i < snake.length; i++) {
            context.fillStyle = "green";
            context.fillRect(snake[i].x, snake[i].y, 10, 10);
        }
    
        // 绘制食物
        context.fillStyle = "red";
        context.fillRect(food.x, food.y, 10, 10);
    
        // 移动贪吃蛇
        var head = {
            x: snake[0].x + dx,
            y: snake[0].y + dy
        };
    
        // 如果贪吃蛇碰到食物
        if (head.x === food.x && head.y === food.y) {
            // 增长贪吃蛇
            snake.unshift(head);
    
            // 重新生成食物
            food.x = Math.floor(Math.random() * (canvas.width - 10) / 10) * 10;
            food.y = Math.floor(Math.random() * (canvas.height - 10) / 10) * 10;
        } else {
            // 移动贪吃蛇
            snake.unshift(head);
            snake.pop();
        }
    
        // 如果贪吃蛇碰到自己
        for (var i = 4; i < snake.length; i++) {
            if (head.x === snake[i].x && head.y === snake[i].y) {
                gameOver = true;
            }
        }
    
        // 如果游戏结束
        if (gameOver) {
            alert("游戏结束!");
            return;
        }
    
        // 重新开始游戏循环
        setTimeout(gameLoop, speed);
    }
    
    // 添加键盘事件监听器
    document.addEventListener("keydown", function(e) {
        if (e.keyCode === 37) {
            dx = -10;
            dy = 0;
        } else if (e.keyCode === 38) {
            dx = 0;
            dy = -10;
        } else if (e.keyCode === 39) {
            dx = 10;
            dy = 0;
        } else if (e.keyCode === 40) {
            dx = 0;
            dy = 10;
        }
    });
    
    // 启动游戏循环
    gameLoop();
    

运行项目

  1. 在 Android Studio 中,点击“Run”按钮。
  2. 选择“SnakeActivity”作为入口 Activity。
  3. 点击“OK”按钮。

常见问题解答

  • 如何控制贪吃蛇的方向?
    通过键盘上的箭头键控制贪吃蛇的方向。
  • 如何让贪吃蛇变长?
    当贪吃蛇吃到食物时,它会自动变长。
  • 如果贪吃蛇碰到自己会发生什么?
    如果贪吃蛇碰到自己,游戏将结束。
  • 如何重新开始游戏?
    如果游戏结束,可以刷新浏览器窗口或页面重新开始。
  • 可以在游戏中添加更多功能吗?
    当然,你可以添加更多功能,如暂停、加速、改变背景和音乐。

结束语

恭喜你创建了第一个贪吃蛇游戏!通过本文提供的指导,你踏出了学习鸿蒙 HarmonyOS 编程的第一步。如果你有任何问题或需要帮助,请随时留言,我们很乐意提供支持。继续探索鸿蒙 HarmonyOS 的精彩世界,打造更多创新的应用程序吧!