最高分:{_devecostudio写简单的app">
当前位置:   article > 正文

从零开始使用华为DevEco Studio编写2048小游戏_devecostudio写简单的app

devecostudio写简单的app

写在前面

本文由我和@WiKiBeta共同完成,也是我们第一次接触HarmonyOS,对OS了解的越多,越觉得开发OS是一件不简单的事,开发APP只是其中的一部分,背后的工程实在是有点超出想象。这次我们通过对张荣超老师课程(课程链接)的学习,我们对如何使用IDE开发HOS中的APP有了一定的理解,以下是我们学习完成后写下的笔记,如果有纰漏,希望各位谅解并指出。

概述

本次课程目标是开发能在鸿蒙设备上运行的经典小游戏2048,本次学习实现的功能主要有:1.实现页面布局 2.在画布上显示所有的格子以及格子里的数字 3. 页面初始化时随机选择两个格子,并放入2或4。本次课程中,未完整实现的响应滑动事件功能将在以后的学习笔记中进行补充。(课程使用的开发软件为DevEco Studio, 语言为JavaScript).

准备工作

开发工具

华为HarmonyOS的应用开发工具DevEco Studio下载地址
node.js下载地址

编写位置

在这里插入图片描述

文件用途

在这里插入图片描述

具体流程

1.	实现页面布局
  • 1

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

效果如下
在这里插入图片描述

  1. 在画布上显示所有的格子以及格子里的数字
    在这里插入图片描述
    在这里插入图片描述

效果如下
在这里插入图片描述

  1. 页面初始化时随机选择两个格子,并放入2或4
    页面初始化:
    在这里插入图片描述
    在这里插入图片描述

随机选择两个格子,并放入2或4:
在这里插入图片描述

效果如下:在这里插入图片描述

源代码(详解)

                              hml
  • 1
<div class="container">
    <text class="scores">
        最高分:{
   {
   bestScores}}//将bestScores与最高分动态绑定,即bestScores可变
    </text>
    <text class="scores">
        当前分:{
   {
   currentScores}}//cunrrentScores与最高分动态绑定,即bestScores可变

    </text>
    <stack class="stack">
        <canvas class="canvas" ref="canvas" onswipe="swipeGrids">
        //定义canvas组件,类为canvas,ref指向canvas对象实例,onswipe指向“滑动”这一事件
        </canvas>
        <div class="subcontainer" show="{
   {isShow}}">
            <text class="gameover">
                游戏结束
            </text>
        </div>
    </stack>
    <input type="button" value="重新开始" class="btn" onclick="restartGame"/>//输入一个组件input,定义种类为button以显示一个按钮,value即按钮上将显示的文本,类定义为btn
</div>//以上就定义了我们有哪些组件
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
                              css 
  • 1
.container {
   //整个界面的基本布局
    flex-direction: column;//将界面中的组件竖向排列
    width: 454px;
    height: 454px;
    justify-content: center;//justify-content 用于设置或检索弹性盒子元素在主轴(横轴)方向上的对齐方式,使其中心化
    align-items: center;//align-content 属性对齐交叉轴上的各项(垂直),这里使其中心化
}
.scores {
   
    width: 300px;
    height:20px;
    font-size: 18px;
    text-align: center;
    letter-spacing: 0px;//使类为scores的元素排列的更加紧凑
    margin-top: 10px;//在类为scores的元素周围设置10px的外边距
}
.stack{
   
    width: 305px;
    height: 305px;
    margin-top: 10px;
}
.canvas{
   
    width:305px;
    height:305px;
    background-color: #BBADA0;//背景色,16进制
}
.subcontainer {
   
    width: 305px;
    height: 305px;
    justify-content: center;
    align-items: center;
    background-color: transparent;
}
.gameover {
   
    font-size: 38px;
    color: black;
}
.btn{
   
    width:150px;
    height:30px;
    background-color: #AD9D8F;
    font-size: 24px;
    margin-top: 10px;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
                             js
  • 1
var grids;//设置变量grids
var context;
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/265752
推荐阅读
相关标签