HarmonyOS鸿蒙Next中0基础学习ArkTS编程,一点不会的可以来看一下,可以编小游戏,一些小知识的分享,也许很简单,简单到爆炸,但这是我一个月的学习成果了。
HarmonyOS鸿蒙Next中0基础学习ArkTS编程,一点不会的可以来看一下,可以编小游戏,一些小知识的分享,也许很简单,简单到爆炸,但这是我一个月的学习成果了。 十一月下旬的某一天,我刷手机的时候突然看到了纯血鸿蒙的相关信息,抱着试试看的态度,我开始了Arkts语言的学习,首先说明一点,我是一个中年人,有自己的工作,学这个主要是因为好奇和那一点点的爱国心吧.在网上相关的消息太乱了,我要亲自验证一下.
首先,要学程序你得有一点点的数学基础,怎么也得初中毕业的水平吧,至少知道什么是函数和变量.
然后就是你得有一个目标,学会了之后拿它来做什么,如果你是想拿它来作为职业的话,最好不要看我的方法,因为这是一个中年人的学习路径.学的东西你用来找工作估计是够呛,太简单了.
学习的第一步就是看开发者学堂的资料,从第一课开始看,叶子老师长得很大气,属于耐看型的,由于是真正的0基础,我第一课就看了不下20遍,真是每个字都听得懂,但是连起来就不知道说的是什么了,看完一遍有不懂的地方九去问AI,我用的是讯飞星火的AI,我感觉他就是一个二把刀的老师,我问的都是Arkts的问题,它答的都是JV或者C++或者派森的解决方法,磕磕绊绊,看不懂.但二把刀老师也是有用的,至少一些函数和构建他给的解释还是八九不离十的,可以猜着来.
看不懂怎么办,回去再看叶子老师的视频,我本身就是一个理科老师,我认为在人的语气,表情中藏着许多的隐藏知识和信息,所以我反复观看视频,查资料,试图找到解决方法,反复练习hello world这个程序,试图入门这种语言语法.当时是满头包,不过现在看来,这是进入一门逻辑语言最有效的方法,抄,就是抄习题作业,抄的多了,自然就理解了一点点.
四天之后,我自认为第一课已经稳了,开始学第二课,首先就是变量赋值,一个布尔值就难住了我,初高中没这玩意,又是一顿查,才知道就是是与非两个逻辑组成的,脑中响起了叶子老师布尔值的声音,在不懂的时候,感觉很神秘,听得头痛,懂了之后就感觉很亲切了.
然后是字符串,在字符串这里有一个神坑坑了我好久,查了一大堆资料也没找到答案,最后不死心到API里面一组一组查例题,终于找到了解决办法,这个坑就是怎样显示可变文本,比如积分,累计数,这些东西,过程及其痛苦,我就不说的,看一下我的
做的是相当的草率了,这玩意就是一个问答器,问1+1等于多少,两个答案,一对一错,答对了就加分,中间的小红球会对应的变大,答错了就从新开始了,这个就是我这20多天的学习成果了,至于动画,语音啥的还都没弄,关键那些我不擅长啊,估计要做出来我还得慢慢学,我初步计划是用变量结合直角坐标做动画,但我感觉不太靠谱,工作量对我来说太大了,直接用像素图片的话感觉又太low,像素终将失真,矢量才是永恒啊.
可惜不会发动图,有兴趣的朋友可以下载下来玩一下,欢迎朋友反馈,我这个是做给家里小孩玩的,他的小名就叫二傻子,所以才叫这个,里面都可以改.
下面是源码
@Entry
@Component
//前面这两个只要是想开单页面小游戏就得这么写,第一行代表是入口,第二行代表后面的玩意都是一个整体页面
struct mygame {
//这一行的意思是给这个页面一个代号,我这个叫作'mygame'
timuzu: string[] = ['1+1', '1+2', '1+3', '1+4', '1+5', '1+6', '1+7', '1+8', '1+9',
'9+1', '8+1', '7+1', '6+1', '5+1', '4+1', '3+1', '2+1', '1+1',
'1+2', '2+2', '3+2', '4+2', '5+2', '6+2', '7+2', '8+2', '1+3',
'2+3', '3+3', '4+3', '5+3', '6+3', '7+3', '1+4', '2+4', '3+4',
'4+4', '5+4', '6+4', '1+5', '2+5', '3+5', '4+5', '5+5', '1+6',
'2+6', '3+6', '4+6', '1+7', '2+7', '3+7', '1+8', '2+8', '1+9']
//这是程序要用的数据,这是一个字符串型数组数据,名字叫timuzu,在后面可以引用.
daanzu1: string[] = ['2', '3', '4', '4', '6', '7', '6', '9', '10', '10', '7', '8', '7', '8', '5', '4', '6', '2', '5', '4', '5', '4', '7', '8', '7', '10', '3', '4', '6', '7', '8', '10', '10', '5', '5', '7', '8', '9', '9', '6', '7', '7', '9', '9', '7', '8', '5', '10', '8', '7', '10', '9', '8', '10']
//这是程序要用的数据,这是一个字符串型数组数据,名字叫daanzu1,在后面可以引用.
daanzu2: string[] = ['1', '4', '3', '5', '4', '5', '8', '5', '8', '2', '9', '4', '8', '6', '10', '2', '3', '5', '3', '3', '6', '6', '5', '5', '9', '8', '4', '5', '7', '8', '9', '9', '9', '7', '6', '5', '9', '8', '10', '7', '8', '8', '8', '10', '6', '7', '9', '8', '7', '9', '9', '6', '10', '9']
//这是程序要用的数据,这是一个字符串型数组数据,名字叫daanzu2,在后面可以引用.
dazuozhanpanding: boolean[] = [true, true, true, false, true, true, false, true, true, true, false, true, true, false, true, true, false, true, false, true, true, false, true, true, false, true, false, false, true, true, true, false, true, true, false, true, true, true, false, true, true, false, true, true, false, true, false, true, true, false, true, false, true, false, true, false, true,]
//这是程序要用的数据,这是一个布尔值型数组数据,名字叫dazuozhanpanding,在后面可以引用.布尔值就是来判断对或错,执行或者不执行的.
dazuozhanpanding1: boolean[] = [false, false, false, true, false, false, true, false, false, false, true, false, false, true, false, false, true, false, true, false, false, true, false, false, true, false, true, true, false, false, false, true, false, false, true, false, false, false, true, false, false, true, false, false, true, false, true, false, false, true, false, false, true, false,]
//这是程序要用的数据,这是一个布尔值型数组数据,名字叫dazuozhanpanding1,在后面可以引用.
@State inn: number = 0
@State fenshu: number =0
@State ini: number = 0
@State xxx: number = 160
@State yyy: number = 160
//这是几个变量,都是数字型的,不要看学的时候变量很多种,我感觉可能是Arkts的方舟编译器智能化比较高,掌握字符串,数字,布尔值这三种好像啥都能干了.数组当然也是必须的,数组循环和指针那些就见仁见智了,他们小年轻找工作当然得练熟,我们中年人拿他做些小应用,掌握这四种我感觉就差不多了.
build() {
Column({ space: 10}) {
Blank(20)
Text('总题数54 已回答题数'+this.ini+' 分数'+this.fenshu)
//就是这一步卡了我好多天,我终于自己把它试出来了,当然少不了大量看例题揣摩这门语言的逻辑结构和书写规律,说实话我现在体会到了,Arkts对我们这些有想法但是懒得学编程的人相当友好,已经接近高中的数学题了,就是多了一些运算符号而已.
Blank(10)
Text('傻瓜大作战')
//这里是名字
.fontSize(50)
Blank(150)
//留个空
Row({ space: 20 }) {
Circle({ width: this.fenshu+10, height: this.fenshu+10 })
//在这画了一个园,长和宽都设置为分数+10 'this.fenshu+10',因为开始的分数是0,圆就一点看不到了,分数越高,圆就会变大.
.position({ x: this.xxx, y: this.yyy })
//这句说的是圆的位置,横纵坐标,都写得变量,下面那八个按钮可以改变圆的位置,加了一点点的趣味性,后面的一行是颜色.
.fill('#E87361')
}
Divider()
Row({ space: 20 }) {
//这一行是竖排变横排的意思,
Text(this.timuzu[this.ini])
.fontSize(40)
.width(100)
.height(100);
//把题目打在上面,题目也是变量
Column({ space: 20 }) {
//横排再变竖排
Button(this.daanzu1[this.ini])
.fontSize(40)
.width(100)
.height(100)
.onClick(() => {
//这部分就是我在C语言哪里学到的条件赋值,可能有些难度,我学了好几个小时才搞懂,主要是注意一个等号是赋值,俩等号是条件,别的问题不大,已经接近自然语句的逻辑了.
if (this.ini == 54) {
this.ini = 0;
}
if (this.fenshu == 162) {
this.fenshu = 0
}
if (this.dazuozhanpanding[this.ini] == true) {
this.fenshu += 3;
this.ini++
}
//这里面前面的变量都用到了,this.ini代表第几题,this.dazuozhanpanding[this.ini]说的是这个答案是对是错,this.fenshu += 3;答对了加3分, this.ini++继续下一题.
else {
this.ini = 0;
this.fenshu = 0
}
//这句是,如果答错了,一切归零,从新开始
})
Button(this.daanzu2[this.ini])
.fontSize(40)
.width(100)
.height(100)
.onClick(() => {
if (this.ini == 54) {
this.ini = 0;
}
if (this.fenshu == 162) {
this.fenshu = 0
}
if (this.dazuozhanpanding1[this.ini] == true) {
this.fenshu += 3;
this.ini++
}
else {
this.ini = 0;
this.fenshu = 0
}
})
}
}
//跟前面一样
Row() {
Button('左上')
.stateEffect(true)
.onClick(() => {
this.yyy -= 20;
this.xxx -= 20
})
//这是按钮,可以通过控制 this.yyy -= 20; this.xxx -= 20这两个变量来控制小球移动,.stateEffect(true)这是个小参数,系统的,让点击有点反应
Button('向上')
.stateEffect(true)
.onClick(() => {
this.yyy -= 20;
})
Button('右上')
.stateEffect(true)
.onClick(() => {
this.yyy -= 20;
this.xxx += 20
})
}
Row() {
Button('向左')
.stateEffect(true)
.onClick(() => {
this.xxx -= 20;
})
Blank(60)
Button('向右')
.stateEffect(true)
.onClick(() => {
this.xxx += 20;
})
}
Row() {
Button('左下')
.stateEffect(true)
.onClick(() => {
this.yyy += 20;
this.xxx -= 20
})
Button('向下')
.stateEffect(true)
.onClick(() => {
this.yyy += 20;
})
Button('右下')
.stateEffect(true)
.onClick(() => {
this.yyy += 20;
this.xxx += 20
})
}
}
}
}
后面就一样了,我是完全没有编程基础,大学学的也不是这玩意,所以肯定有很多不足或者搞笑的地方,欢迎高手指导,更欢迎和我一样的菜鸟选手一起交流,三个臭皮匠等于一个诸葛亮,我通过这20多天的学西,别的不说,对方舟编译器的功能我是服气了,我感觉这Arkts离能够根据自然语音描述编程就差一层窗户纸了,也许还没等我们这些老家伙学会,就不用学了,你跟AI说说话,或者把逻辑图给AI看看,他就能编写出又快有完美的程序.
我自学了20多天,要是让我把这些东西教给我的学生,也许只需要两个小时,入门其实挺难的.加油吧,老兄弟们.
更多关于HarmonyOS鸿蒙Next中0基础学习ArkTS编程,一点不会的可以来看一下,可以编小游戏,一些小知识的分享,也许很简单,简单到爆炸,但这是我一个月的学习成果了。的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,ArkTS是一种基于TypeScript的编程语言,专为鸿蒙系统设计。对于0基础的学习者,ArkTS提供了简洁的语法和强大的功能,适合开发小游戏和应用。以下是一些基础知识和示例:
-
环境搭建:首先需要安装DevEco Studio,这是鸿蒙系统的官方开发工具。安装完成后,创建一个新的ArkTS项目。
-
基本语法:ArkTS的语法与TypeScript类似,支持类、接口、模块等特性。例如,定义一个类:
class Player {
name: string;
score: number;
constructor(name: string) {
this.name = name;
this.score = 0;
}
addScore(points: number): void {
this.score += points;
}
}
- UI组件:ArkTS提供了丰富的UI组件,如Button、Text、Image等。例如,创建一个按钮:
import { Button, Text } from '@ohos.arkui';
const button = new Button();
button.text = 'Click Me';
button.onClick(() => {
console.log('Button clicked');
});
- 事件处理:ArkTS支持事件处理,如点击事件、触摸事件等。例如,处理按钮点击事件:
button.onClick(() => {
console.log('Button clicked');
});
- 小游戏开发:利用ArkTS的动画和图形处理功能,可以开发简单的小游戏。例如,创建一个简单的跳跃游戏:
import { Sprite, GameLoop } from '@ohos.arkui';
const player = new Sprite('player.png');
const gameLoop = new GameLoop(() => {
player.y += 5; // 玩家下落
if (player.y > screen.height) {
gameLoop.stop();
console.log('Game Over');
}
});
gameLoop.start();
通过以上基础知识和示例,0基础的学习者可以逐步掌握ArkTS编程,并开发出简单的小游戏和应用。
更多关于HarmonyOS鸿蒙Next中0基础学习ArkTS编程,一点不会的可以来看一下,可以编小游戏,一些小知识的分享,也许很简单,简单到爆炸,但这是我一个月的学习成果了。的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
作为0基础学习ArkTS编程的入门者,首先需要了解ArkTS是HarmonyOS鸿蒙Next中的一种编程语言,基于TypeScript开发。你可以从基础语法开始,如变量、函数、条件语句和循环等。接着学习UI组件和布局,掌握如何创建简单的界面。通过实践小项目,如小游戏,可以加深理解。建议参考官方文档和社区教程,逐步提升编程能力。坚持学习和实践,你会逐渐掌握ArkTS编程。