基于HarmonyOS的的声明式应用开发全解析:凡人修仙历练游戏
项目演示




1. 项目概述
凡人修仙历练游戏是一款基于HarmonyOS平台开发的沉浸式修仙体验游戏。玩家将扮演一名初入修仙界的凡人,通过选择不同的修炼方式,体验丰富多彩的修仙人生。游戏以"选择决定命运"为核心主题,展现因果轮回、天道酬勤的传统哲学思想。
1.1 技术栈
本项目采用HarmonyOS最新的开发技术:
| 分类 | 技术 | 版本 |
|---|---|---|
| 开发框架 | ArkUI | API Level 24 |
| 编程语言 | ETS (TypeScript) | ES6+ |
| 构建工具 | Hvigor | 最新版本 |
| UI组件 | ArkUI Components | API Level 24 |
1.2 项目结构
e:\MyApplication15\
├── AppScope/
│ └── resources/
├── entry/
│ ├── src/main/ets/
│ │ ├── entryability/
│ │ │ └── EntryAbility.ets
│ │ ├── entrybackupability/
│ │ │ └── EntryBackupAbility.ets
│ │ └── pages/
│ │ ├── Index.ets
│ │ └── AIChatService.ets
│ ├── src/main/resources/
│ ├── build-profile.json5
│ └── hvigorfile.ts
├── hvigor/
├── build-profile.json5
└── hvigorfile.ts
2. 游戏设计理念
2.1 核心主题
游戏的核心主题是"选择决定命运"。在修仙道路上,每个选择都至关重要,不同的修炼方式会带来截然不同的人生轨迹。
2.2 五种修炼方式
游戏设计了五种修炼方式,代表五种不同的人生哲学:
2.2.1 潜心打坐修炼
代表哲学:天道酬勤
选择潜心打坐修炼,如同细水长流。虽然进展缓慢,但根基稳固,每一步都扎实可靠。这种方式适合心性沉稳的修士,虽然不会有大起大落,但最终能稳步达到更高境界。
2.2.2 下山历练闯荡
代表哲学:机遇挑战
选择下山历练闯荡,机遇与风险并存。行走江湖可以遇到各种机缘巧合,获得稀世珍宝和传承功法,但也可能遇到危险。这种方式适合胆大心细、善于把握机会的修士。
2.2.3 争夺秘境宝物
代表哲学:强者生存
选择争夺秘境宝物,必然卷入宗门纷争。秘境之中藏有无数天材地宝,但也是各方势力争夺的焦点。虽然可能获得强大的宝物,但也可能成为众矢之的。
2.2.4 结交门派道友
代表哲学:合作共赢
选择结交门派道友,互帮互助共同进步。修仙之路孤独寂寞,但有同道中人互相扶持,可以事半功倍。这种方式适合注重人脉、善于合作的修士。
2.2.5 贪图捷径丹药
代表哲学:急功近利
选择贪图捷径丹药,看似快速提升,实则后患无穷。丹药虽能短期内增强修为,但会损伤根基,甚至导致走火入魔。这种方式是修仙大忌。
2.3 因果系统
游戏的因果系统是核心玩法之一,每个选择都会导致相应的结局:
| 修炼方式 | 修炼结局 |
|---|---|
| 潜心打坐修炼 | 修为稳步提升 |
| 下山历练闯荡 | 机缘不断突破 |
| 争夺秘境宝物 | 卷入宗门纷争 |
| 结交门派道友 | 互相借力飞升 |
| 贪图捷径丹药 | 走火入魔修为尽失 |
2.4 界面设计风格
游戏采用深色修仙风格主题:
- 深邃的紫色背景(#1a1a2e),营造神秘的修仙氛围
- 金色文字点缀(#ffd700),彰显修仙的尊贵感
- 蓝色按钮和边框(#4a90d9),突出交互元素
- 简洁的卡片式布局,信息层次分明
3. 技术架构
3.1 分层架构
本项目采用分层架构设计:
┌─────────────────────────────────────┐
│ 表现层 (UI Layer) │
│ Index.ets (游戏页面) │
├─────────────────────────────────────┤
│ 业务层 (Service Layer) │
│ AIChatService.ets (游戏逻辑) │
├─────────────────────────────────────┤
│ 数据层 (Data Layer) │
│ GameResponse (数据接口) │
├─────────────────────────────────────┤
│ 基础设施层 (Infrastructure) │
│ HarmonyOS ArkUI Framework │
└─────────────────────────────────────┘
3.2 核心模块
| 模块 | 职责 | 文件位置 |
|---|---|---|
| Index.ets | 游戏界面展示、用户交互 | entry/src/main/ets/pages/Index.ets |
| AIChatService.ets | 游戏逻辑处理 | entry/src/main/ets/pages/AIChatService.ets |
4. API Level 24 适配
4.1 API Level 24 特性
HarmonyOS API Level 24是HarmonyOS 4.0版本的API级别,包含了许多新特性:
- 新UI组件:RichText、Web等
- 增强动画能力:支持更复杂的动画效果
- 改进状态管理:更灵活的状态管理方式
- 增强权限管理:更精细的权限控制
4.2 关键API使用
4.2.1 组件装饰器
@Entry // 页面入口
@Component // 组件声明
@State // 状态管理
@Builder // 构建函数
4.2.2 布局组件
Column() // 垂直布局
Flex() // 弹性布局
4.2.3 布局属性
FlexWrap.Wrap // 换行布局
FlexAlign.Center // 居中对齐
HorizontalAlign.Center // 水平居中
4.2.4 文本属性
FontWeight.Bold // 粗体
FontWeight.Medium // 中等粗细
TextAlign.Center // 文本居中
4.2.5 样式属性
.width('100%') // 宽度
.height('100%') // 高度
.backgroundColor() // 背景颜色
.fontColor() // 文字颜色
.fontSize() // 字体大小
.margin() // 外边距
.padding() // 内边距
.borderRadius() // 圆角
.onClick() // 点击事件
5. 核心代码详解
5.1 Index.ets 主页面
5.1.1 状态定义
@State gameStarted: boolean = false
@State showResult: boolean = false
@State userChoice: string = ''
@State guidance: string = ''
@State analysis: string = ''
@State summary: string = ''
@State outcome: string = ''
@State isLoading: boolean = false
5.1.2 界面切换逻辑
build() {
Column() {
if (!this.gameStarted) {
this.startScreen()
} else if (!this.showResult) {
this.choiceScreen()
} else {
this.resultScreen()
}
}
.width('100%')
.height('100%')
.backgroundColor('#1a1a2e')
.padding(20)
}
5.1.3 开始界面
@Builder
startScreen() {
Column() {
Text('凡人修仙')
.fontSize(48)
.fontWeight(FontWeight.Bold)
.fontColor('#ffd700')
.margin({ bottom: 20 })
Text('历练之路')
.fontSize(32)
.fontWeight(FontWeight.Medium)
.fontColor('#ffffff')
.margin({ bottom: 40 })
Text('你本是一介凡人,偶然踏入修仙之路。\n前方迷雾重重,选择在你手中...')
.fontSize(18)
.fontColor('#aaaaaa')
.textAlign(TextAlign.Center)
.margin({ bottom: 60 })
Button('开始修仙')
.width(200)
.height(60)
.fontSize(24)
.fontWeight(FontWeight.Bold)
.backgroundColor('#4a90d9')
.borderRadius(30)
.onClick(() => {
this.gameStarted = true
})
}
.width('100%')
.height('100%')
.justifyContent(FlexAlign.Center)
.alignItems(HorizontalAlign.Center)
}
5.1.4 选择界面
@Builder
choiceScreen() {
Column() {
Text('选择修炼方式')
.fontSize(32)
.fontWeight(FontWeight.Bold)
.fontColor('#ffd700')
.margin({ bottom: 10 })
Text('修行路上如何选择修炼方式得道成仙?\n请根据你的道心做出选择')
.fontSize(16)
.fontColor('#aaaaaa')
.textAlign(TextAlign.Center)
.margin({ bottom: 30 })
Flex({ wrap: FlexWrap.Wrap, justifyContent: FlexAlign.Center }) {
ForEach(this.choices, (choice: string) => {
Button(choice)
.width(150)
.height(80)
.fontSize(16)
.backgroundColor('#2d3436')
.borderColor('#4a90d9')
.borderWidth(2)
.borderRadius(10)
.margin(10)
.onClick(() => {
this.handleChoice(choice)
})
})
}
}
.width('100%')
.height('100%')
.justifyContent(FlexAlign.Center)
.alignItems(HorizontalAlign.Center)
}
5.1.5 结果界面
@Builder
resultScreen() {
Column() {
if (this.isLoading) {
Column() {
Text('正在推演因果...')
.fontSize(20)
.fontColor('#ffd700')
}
.width('100%')
.height('100%')
.justifyContent(FlexAlign.Center)
.alignItems(HorizontalAlign.Center)
} else {
Column() {
Text('修炼结局')
.fontSize(32)
.fontWeight(FontWeight.Bold)
.fontColor('#ffd700')
.margin({ bottom: 10 })
Text(this.outcome)
.fontSize(24)
.fontWeight(FontWeight.Medium)
.fontColor('#ffffff')
.margin({ bottom: 30 })
Column() {
Text('因果分析')
.fontSize(20)
.fontWeight(FontWeight.Bold)
.fontColor('#4a90d9')
.margin({ bottom: 10 })
Text(this.analysis)
.fontSize(16)
.fontColor('#aaaaaa')
.textAlign(TextAlign.Center)
}
.width('100%')
.backgroundColor('#2d3436')
.padding(20)
.borderRadius(10)
.margin({ bottom: 20 })
Column() {
Text('修仙历程')
.fontSize(20)
.fontWeight(FontWeight.Bold)
.fontColor('#4a90d9')
.margin({ bottom: 10 })
Text(this.summary)
.fontSize(16)
.fontColor('#ffffff')
.textAlign(TextAlign.Center)
}
.width('100%')
.backgroundColor('#2d3436')
.padding(20)
.borderRadius(10)
.margin({ bottom: 30 })
Button('重新开始')
.width(150)
.height(50)
.fontSize(20)
.fontWeight(FontWeight.Bold)
.backgroundColor('#4a90d9')
.borderRadius(25)
.onClick(() => {
this.resetGame()
})
}
.width('100%')
.height('100%')
.justifyContent(FlexAlign.Center)
.alignItems(HorizontalAlign.Center)
}
}
.width('100%')
.height('100%')
.justifyContent(FlexAlign.Center)
.alignItems(HorizontalAlign.Center)
}
5.1.6 选择处理方法
async handleChoice(choice: string) {
this.userChoice = choice
this.showResult = true
this.isLoading = true
await new Promise<void>((resolve: () => void) => {
setTimeout(resolve, 1500)
})
const response = await this.chatService.getGameResponse(choice)
this.guidance = response.guidance
this.analysis = response.analysis
this.summary = response.summary
const outcomeIndex = response.choices.indexOf(choice)
if (outcomeIndex >= 0) {
this.outcome = response.outcomes[outcomeIndex]
} else {
this.outcome = response.outcomes[0]
}
this.isLoading = false
}
5.2 AIChatService.ets 服务类
5.2.1 数据接口
export interface GameResponse {
guidance: string
choices: string[]
outcomes: string[]
analysis: string
summary: string
}
5.2.2 服务类实现
export class AIChatService {
private systemPrompt: string = `你是一个凡人修仙历练游戏的AI助手...`
private choices: string[] = ['潜心打坐修炼', '下山历练闯荡', '争夺秘境宝物', '结交门派道友', '贪图捷径丹药']
private outcomes: string[] = ['修为稳步提升', '机缘不断突破', '卷入宗门纷争', '互相借力飞升', '走火入魔修为尽失']
async getGameResponse(userChoice: string): Promise<GameResponse> {
let analysis: string = ''
let summary: string = ''
const choiceIndex: number = this.choices.indexOf(userChoice)
switch (choiceIndex) {
case 0:
analysis = '选择潜心打坐修炼,如同细水长流...'
summary = '你选择了潜心打坐修炼,日复一日...'
break
case 1:
analysis = '选择下山历练闯荡,机遇与风险并存...'
summary = '你选择了下山历练闯荡,一路斩妖除魔...'
break
case 2:
analysis = '选择争夺秘境宝物,必然卷入宗门纷争...'
summary = '你选择了争夺秘境宝物,卷入了各大宗门的纷争之中...'
break
case 3:
analysis = '选择结交门派道友,互帮互助共同进步...'
summary = '你选择了结交门派道友,广结善缘...'
break
case 4:
analysis = '选择贪图捷径丹药,看似快速提升,实则后患无穷...'
summary = '你选择了贪图捷径丹药,初期修为暴涨...'
break
default:
analysis = '修仙之路,选择至关重要...'
summary = '修仙之路漫漫,需历经重重考验...'
}
return {
guidance: '修行路上,选择修炼方式至关重要...',
choices: this.choices,
outcomes: this.outcomes,
analysis: analysis,
summary: summary
}
}
}
6. 游戏玩法详解
6.1 游戏流程
- 进入游戏:打开应用,看到开始界面
- 开始游戏:点击"开始修仙"按钮
- 选择修炼方式:从五种修炼方式中选择一种
- 查看结果:系统推演因果,显示修炼结局
- 重新开始:点击"重新开始"按钮
6.2 各修炼方式详细说明
6.2.1 潜心打坐修炼
修炼特点:
- 如同细水长流,进展缓慢但根基稳固
- 适合心性沉稳的修士
- 没有大起大落,稳步提升
修炼结局:修为稳步提升
因果分析:
选择潜心打坐修炼,如同细水长流。虽然进展缓慢,但根基稳固,每一步都扎实可靠。这种方式适合心性沉稳的修士,虽然不会有大起大落,但最终能稳步达到更高境界。
修仙历程:
你选择了潜心打坐修炼,日复一日,年复一年。虽然没有惊天动地的奇遇,但你的修为如同涓涓细流汇聚成江海。历经千年苦修,终于功德圆满,渡劫飞升成仙!
6.2.2 下山历练闯荡
修炼特点:
- 机遇与风险并存
- 可以遇到各种机缘巧合
- 获得稀世珍宝和传承功法
修炼结局:机缘不断突破
因果分析:
选择下山历练闯荡,机遇与风险并存。行走江湖可以遇到各种机缘巧合,获得稀世珍宝和传承功法,但也可能遇到危险。这种方式适合胆大心细、善于把握机会的修士。
修仙历程:
你选择了下山历练闯荡,一路斩妖除魔,奇遇不断。在一次次生死考验中,你的修为突飞猛进。最终在秘境中获得上古传承,一举突破瓶颈,渡劫飞升成仙!
6.2.3 争夺秘境宝物
修炼特点:
- 必然卷入宗门纷争
- 秘境之中藏有无数天材地宝
- 各方势力争夺的焦点
修炼结局:卷入宗门纷争
因果分析:
选择争夺秘境宝物,必然卷入宗门纷争。秘境之中藏有无数天材地宝,但也是各方势力争夺的焦点。虽然可能获得强大的宝物,但也可能成为众矢之的。
修仙历程:
你选择了争夺秘境宝物,卷入了各大宗门的纷争之中。在血雨腥风中,你凭借实力和智慧脱颖而出,成为一代枭雄。最终超脱凡尘,渡劫飞升成仙!
6.2.4 结交门派道友
修炼特点:
- 互帮互助共同进步
- 修仙之路不再孤独
- 可以事半功倍
修炼结局:互相借力飞升
因果分析:
选择结交门派道友,互帮互助共同进步。修仙之路孤独寂寞,但有同道中人互相扶持,可以事半功倍。这种方式适合注重人脉、善于合作的修士。
修仙历程:
你选择了结交门派道友,广结善缘,与志同道合的伙伴一起修行。在众人的帮助下,你度过了一个又一个难关。最终与道友们一同渡劫,携手飞升成仙!
6.2.5 贪图捷径丹药
修炼特点:
- 短期内快速提升修为
- 损伤根基
- 可能导致走火入魔
修炼结局:走火入魔修为尽失
因果分析:
选择贪图捷径丹药,看似快速提升,实则后患无穷。丹药虽能短期内增强修为,但会损伤根基,甚至导致走火入魔。这种方式是修仙大忌。
修仙历程:
你选择了贪图捷径丹药,初期修为暴涨,风光无限。但好景不长,丹药的副作用逐渐显现,最终走火入魔,修为尽失。切记修仙无捷径,唯有脚踏实地才能成就大道!
7. 构建与运行
7.1 环境要求
- DevEco Studio:4.0及以上版本
- HarmonyOS SDK:API Level 24及以上
- Node.js:18.0及以上版本
- JDK:11.0及以上版本
7.2 构建步骤
- 打开DevEco Studio,配置SDK路径
- 同步项目(Sync Project with Gradle Files)
- 构建项目(Build > Build HAP(s))
7.3 运行项目
- 创建或选择模拟器(API Level 24及以上)
- 点击Run按钮或使用快捷键Shift+F10
- 等待应用安装并启动
8. 未来扩展方向
8.1 功能扩展
- 修炼等级系统:凡人→炼气→筑基→金丹→元婴→化神→渡劫→飞升
- 资源系统:灵石、丹药、功法、法宝
- 战斗系统:与妖兽战斗、与其他修士切磋
- 社交系统:门派系统、好友系统、交易系统
8.2 技术扩展
- 数据持久化:使用Preferences或数据库保存进度
- 网络功能:排行榜、在线对战、云存档
- 动画效果:修炼动画、战斗动画、等级提升动画
8.3 内容扩展
- 更多修炼方式:炼丹、炼器、阵法、符篆
- 更多结局:成为散仙、堕入魔道、转世重修
- 剧情故事:主线剧情、支线任务、NPC互动
9. 附录
9.1 资源文件
颜色资源(color.json):
{
"color": [
{
"name": "start_window_background",
"value": "#ffffff"
}
]
}
字符串资源(string.json):
{
"string": [
{
"name": "module_desc",
"value": "entry module description"
},
{
"name": "EntryAbility_label",
"value": "凡人修仙"
}
]
}
9.2 配置文件
module.json5:定义应用基本配置,包括模块名称、设备类型、页面路由等。
build-profile.json5:定义构建配置,包括API类型、资源选项、构建选项集等。
9.3 API Level 24 新增特性
- 新UI组件:RichText、Web等
- 增强动画能力:支持更复杂的动画效果
- 改进状态管理:更灵活的状态管理方式
- 增强权限管理:更精细的权限控制
结语
凡人修仙历练游戏通过简洁的界面和丰富的内容,为玩家提供了一个沉浸式的修仙体验。游戏的核心玩法是通过选择不同的修炼方式,体验不同的修仙人生,领悟因果轮回的道理。
本项目采用了现代化的ArkUI框架和ETS语言,充分利用了HarmonyOS API Level 24的新特性,为用户打造了一个视觉效果出色、交互流畅的游戏界面。
希望玩家能够在游戏中找到属于自己的修仙之路,体验修仙的乐趣和人生的道理!
更多推荐


所有评论(0)