《uni-app》一个非canvas的飞机对战小游戏实现(一)准备

news/2024/5/7 8:17:53/文章来源:https://blog.csdn.net/zy21131437/article/details/127185461

在这里插入图片描述

这是一个没有套路的前端博主,热衷各种前端向的骚操作,经常想到哪就写到哪,如果有感兴趣的技术和前端效果可以留言~博主看到后会去代替大家踩坑的~接下来的几篇都是uni-app的小实战,有助于我们更好的去学习uni-app~
主页: oliver尹的主页
格言: 跌倒了爬起来就好~

《uni-app》一个非canvas的飞机对战小游戏实现(一)准备

  • 一. 前言
  • 二. 阅读对象与难度
  • 三. 系统介绍
    • 3.1 UI界面
    • 3.2 逻辑操作
    • 3.3 积分系统
    • 3.4 音效系统
  • 4. 开发工具
    • 4.1 下载安装
    • 4.2 插件安装
    • 4.3 创建项目
  • 五. npm安装
    • 5.1 初始化npm
    • 5.2 安装lodash
  • 六. 小结

一. 前言

最近分享的都是关于uni-app相关的文章,接下来的几篇依旧是uni-app,不过这次打算 写一个稍微完整一些的demo项目,加上之前有小伙伴问了一些相关问题,虽然当时回答了,但回过头来感觉不是太好,因此打算在这系列中从头开始将这些问题贯穿起来以便更好的理解与反思~

这次分享的demo项目是:一个非canvas的飞机对战小游戏,为什么要强调是 非canvas,因为,理论上canvas实现的性能最佳,这个毫无疑问的,那 本文为什么不用canvas,有两个原因:第一个,主要的原因是因为本篇的 目的是为了更好的理解与学习uni-app,而不是canvas,某种程度上讲,其实canvas已经属于前端领域中的另外一门学科了,我一直觉得它应该算是图形算法领域的东西,只是在JavaScript这里借了个壳…第二个,canvas我也不大会,写不出来,啊哈哈…开个玩笑,不要介意~
耐心看完,或许你会所有收获~

二. 阅读对象与难度

本文难度属于:初级,适合有对uni-app并不大了解的新人,本文的主要为这个项目代码的一些 前期准备,通过文本你可以大致了解到一下内容

  • 飞机大战大致要实现什么功能模块
  • 开发工具以及如何新建一个uni-app项目
  • uni-app如何使用npm以及如何安装lodash

具体内容可以参考以下的思维导图:
在这里插入图片描述

三. 系统介绍

我们要实现的这个小游戏 虽然是一个demo,或者说演示版本,但是功能必须是齐全的,只是说某些功能可能略微有些简陋需要后期的改造,不过简陋归简陋,并不影响我们学习,本demo预计包含以下几个大功能,大致思维导图如下(因为是前期计划,可能不准,不过应该不会出现更本性的变化):
在这里插入图片描述
当然,在第一阶段我们 只考虑功能的实现并不考虑模块化以及功能的可扩展性等等,在这个阶段所有的模块代码的划分可能没有那么清晰,各个系统之间的代码会相互穿插、相对比较乱,当全部实现了之后我们再考虑优化…

3.1 UI界面

本demo的图片资源来自于百度等一些 资源网站的下载,好不容易凑齐了一套,如侵权请联系博主,立刻替换或者删除…这个项目中UI主要有:

  • 游戏启动界面:通过启动界面开启飞机大战的战斗界面;
  • 游戏结束界面:触发结束游戏后的游戏界面,结束条件为我发飞机模型被摧毁(该项待定);
  • 我方飞机模型:我方可以操控的飞机模型,包含飞机被摧毁时触发的毁坏动画;
  • 敌方飞机模型:敌方的飞机模型,这个模型分为两种,一种是小飞机,一种是大飞机,以及该两种模型被摧毁时的动画;
  • 子弹模型:我方飞机可操控发射子弹;

3.2 逻辑操作

逻辑操作算是这个项目比较麻烦的部分了吧,逻辑操作部分主要实现的包括:

  • 我方飞机:操控飞机的前后左右运动以及发射子弹的操作;
  • 敌方飞机:随机生成敌方飞机类型,敌方飞机运动动画;
  • 子弹模型:子弹模型的创建以及创建后的运动轨迹;
  • 碰撞检测:检测子弹与敌机的碰撞,检测敌方飞机与我方飞机的碰撞;

3.3 积分系统

这部分主要的作为用计算得分,比如敌方飞机的类型一共有2种,大飞机被摧毁时得分10分,小飞机被摧毁时得分5分,并且这个系统后期还可以扩展,比如排名啥的~当然在这里算是简单实现了,仅计算最终得分~

3.4 音效系统

这个模块主要的作用是音效,毕竟不带音乐的游戏有点奇怪,当然demo也不可能会去搞什么特别好的,因此到时候随便在网上下载一些音乐资源来代表不同结局的音效吧~

4. 开发工具

由于这是一个uni-app的项目,因此开发工具我们还是选择:HBuilderX,这是uni-app官方提供的IDE,别的不敢说,在开发uni-app上 HBuilderX 比vscode什么的都要方便;

4.1 下载安装

打开官网:https://www.dcloud.io/hbuilderx.html,根据自己的电脑版本下载对应的安装包,这里选择 正式版 即可,测试版对于我们这种一般的开发人员个人感觉用不上;
在这里插入图片描述
安装的过程是傻瓜式的,只需要下一步下一步即可;

4.2 插件安装

安装完成的 HBuilderX 相当于一个裸IDE,这点和VSCode有点类似,需要安装一些插件,这些插件将帮助我们更好的进行代码的编写,首先打开 插件市场,路径是:工具 -> 插件安装,
在这里插入图片描述
选择 “前往插件市场安装”,点击后会通过浏览器一个网页,这个网页就是uni-app官方提供的插件市场,差不多是这样的:
在这里插入图片描述
在这个市场中可以搜索到需要安装的插件,这里推荐几个:

  • less编译:这个是可以在项目中使用less这个CSS与处理器;
  • scss/sass编译:同上,可以在项目中使用scss/sass这个CSS与处理器;
  • prettier:代码的格式化工具,很好用在vscode中用的也是这个,强烈推荐;

更多的插件还是自己根据自己的习惯即可,很多在vscode上使用的插件基本在这里也能找到或者找到类似的~

4.3 创建项目

打开 HBuilderX 这个IDE,点击左上方“文件”,选择“新建”->“项目”
在这里插入图片描述
输入项目名称,选择项目路径,模版的话这里我们选择 默认模版 即可,uni-app官方内置了好些模版,这些模版可以协助我们快速的搭建UI布局,Vue的版本我们选择Vue2,虽然Vue3已经有一些普及,但是在插件这些生态上还需要一段时间来完善,vue2的话毕竟这么多年了,生态也已经很完善了~

五. npm安装

关于npm的安装可以参考博主的另外一篇博文《npm详解及在uni-app中对npm的支持》,在这篇中其实已经详细介绍了,这边只是简单说明一下

5.1 初始化npm

始化的过程其实也非常简单,一共两步,当然,初始化的前提是电脑必须安装nodeJS的环境,如果没有安装nodeJS,前往nodeJS官网,自行选择安装包进行下载,nodeJS官网地址如下:NodeJS官网地址,下载完后,进行双击安装即可,安装步骤还是非常傻瓜式的~
话说回来,初始化npm的过程一共分为两步

  • 第一步:cd到需要运行初始化命令的项目目录,我们需要在这个项目的根目录执行初始化命令;
  • 第二步:执行初始化命令:npm init

第一步就不多说了,主要是第二步,当在控制台执行完

npm init

之后,它会在控制台让你输入一些选项,这些选项无非就是让你确认一下项目名、版本号等等,对于不确定的都可以不管,因为这些值都 可以在最终的package.json里进行修改,初始化时的示例图大致如下:
在这里插入图片描述
当初始化完成后,node会在当前路径下生成一个package.json文件,具体如示例图所示:
在这里插入图片描述

这个文件生成即代表npm初始化成功~

5.2 安装lodash

在当前项目目录下,也就是 和package.json这个目录同级 的路径执行命令:

// 安装lodash
npm install lodash --save

运行命令后,会在终端中执行下载lodash相关的代码,当安装成功后,打开package.json文件,会在其内显示如下图的字段:
在这里插入图片描述

这样就代表lodash安装成功了~

六. 小结

本文主要概述了接下来我们这个飞机大战小游戏的主要功能,主要功能有四个,分别是:UI,逻辑操作,积分系统以及音效系统,接着为了方便能接下来的分享,特此简单的说明了我们选择的IDE,使用的是HBuilderX,并且介绍了HBuilderX是如何下载安装以及其使用的插件,最后由于我们的项目预计会使用到lodash,还介绍了在HBuilderX中如何初始化npm、安装lodash;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_19523.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【论文阅读】Multitask Prompted Training Enables Zero-shot Task Generalization

文章目录AbstractIntroductionMeasuring generalization to held-out tasksA unfied prompt formatExperimental setupResultsConclusionAbstract 大模型在多种任务上学习提高了 zero-shot 泛化能力,有人假设这是语言模型在隐式多任务学习的结果。 zero-shot 泛化…

【C++】类和对象(上篇)——类的定义,访问限定符与this指针

前言 C 语言和 C 最大的区别就是一个面向过程,一个面向对象。而提到面向对象就不得部提到类,这一篇文章,我们主要探讨一下 C 中类的定义以及一些基本的权限。 目录 一、类的引入 二、类的定义 三、访问限定符 3.1 public 3.2 private / …

PTA - 数据库合集11

目录 10-74 修改学生选课成绩 10-75 添加成绩等级rank字段 10-77 删除成绩为空的学生选课记录 10-74 修改学生选课成绩 分数 5 全屏浏览题目 切换布局 作者 张庆 单位 集美大学 本题目要求编写UPDATE语句, 在SC表中修改‘C001’课程的成绩,若成绩小…

【自学】利用python进行数据分析 LESSON6 <pandas入门——pandas数据结构介绍2>

目录 前言 一、DataFrame 1. 列的选取 2. 行的选取 3. 列的修改 4. 列的删除 5. 嵌套字典赋给DataFrame 总结 前言 继续上一节的内容。往期内容如下: 【自学】利用python进行数据分析 LESSON5 <pandas入门——pandas数据结构介绍1>_…

数据结构初阶 顺序表补充

一. 题目的要求 写出三种链表的接口函数 它们的功能分别是 1 查找数的位置 2 在pos位置插入值 3 在pos位置删除值 二. 实现pos 这个其实很简单 找到一步步遍历 找到这个数字就返回 找不到就提示用户下 这 个数字不存在 int SeqListFind(SL* ps,int x) {int i;for ( i …

Red Hat Enterprise Linux release 8.0 (Ootpa)-性能调优工具Tuned

一、Tuned简介Tuned是Red Hat Linux操作系统自带的性能调优工具,通过针对特定应用场景提供配置来改善系统性能,自Red Hat Enterprise Linux/CentOS的6.3版本开始出现,包括两部分tuned和tuned-adm,其中tuned是服务端程序,用来监控和收集系统各个组件的数据,并依据数据提供…

SpringBoot二十六课大纲和目录

目录 ​​ 即使是在憎恨和杀戮中,仍然有些东西值得人们为之活下去。一次美丽的相遇,或是为了美丽事物的存在。我们描绘憎恨,是为了描写更重要的东西。我们描绘诅咒,是为了描写解放后的喜悦。 SpringBoot《第一课》_星辰镜的博客…

clickhouse常见部署图及LowCardinality低基数类型优缺点

clickhouse使用jdbc进行查询插入数据操作的部署图 一.读sql的核心是 读分布式表的数据(分布式表可以读取互为副本的本地表的数据,起到容灾的目的),然后使用nginx作为负载均衡器和反向代理,代理后端clickhouse的分布式…

什么是低代码

文章目录no code / low code / pro code按适用范围的维度来分类低代码的技术意义与商业价值技术意义商业价值行业状态速读平台分类不同的实现方式不同的使用群体不同的使用方式优秀开源项目推荐no code / low code / pro code no code:自己编程给自己用&#xff0c…

Yao‘s GC 的通信最优解:Half Gate

参考文献: Bellare M, Hoang V T, Rogaway P. Foundations of garbled circuits[C]//Proceedings of the 2012 ACM conference on Computer and communications security. 2012: 784-796.Zahur S, Rosulek M, Evans D. Two halves make a whole[C]//Annual Interna…

MyBatisPlus入门宝典(二)CRUD

目录 一.添加 二.相关注解 三.修改 四.删除 五.查询 六.条件构造器 七.分页查询 八.全局配置 一.添加 1.配置文件开启SQL日志打印 # 开启SQL日志 mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 2.测试添加方法: …

Unity URP 色彩之旅

Unity URP 色彩之旅 这一切只是色彩科学的冰山一角… 文章目录Unity URP 色彩之旅1 我们是如何感知世界的?1.1 首先要有光!1.2 人眼响应1.3 奇怪的大脑2 我们是如何描述颜色的?2.1 CIE 1931 RGB Color Space2.2 CIE 1931 XYZ Color Space2.3 …

JavaScript高级学习笔记:数据_变量_内存

1. 什么是数据? 2. 什么是内存? 3. 什么是变量? 4. 内存,数据, 变量三者之间的关系 变量保存的是内存中存储的地址值,而变量赋值就是将一个变量保存的内容拷贝一份到另一个变量中 这里面的.就是找obj对应地址值,中内存保存的相应数据 那么是不是所有…

SRv6----报文转发流程

按照下图路径,报文需要从主机H1转发到主机H2,H1将报文发送给节点A处理。节点A、B、D和F均为支持SRv6的设备,节点C和节点E为不支持SRv6的设备。 我们在SRv6源节点A上进行了网络编程,希望报文经过B-C和D-E这两条链路,然后送达节点F&…

华为面向5G的室内覆盖数字化概述

概述 数字化技术催生各行业的不断创新:ICT、媒体、金融、保险在数字化发展 曲线中已经独占鳌头,零售、汽车、油气化工、健康、矿业、农业等也在加速 其进程。促进数字化进程的关键技术包括软件定义设备、大数据、云计算、区 块链、网络安全、时延敏感网…

(附源码)SSM医疗垃圾管理系统JAVA计算机毕业设计项目

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

美团java一面面经

目录1.了解static吗,static数据存在哪?生命周期什么样的2.了解final吗,讲讲下面这段代码的结果3.讲讲volatile吧4.讲讲两个锁的区别(reentrantlock和synchronized)5.讲讲线程池里线程的创建与销毁,核心线程可以销毁吗?…

.NET 开源项目推荐之 直播控制台解决方案 Macro Deck

在直播圈有个很受欢迎的直播控制台程序Macro Deck, 它是基于Apache 2.0协议开源的.NET 应用。流媒体是一个吸引数亿万玩家的严肃行业。 最受欢迎的游戏锦标赛的转播获得了数百万的观看次数,从商业角度来看,这也使游戏行业变得有趣。在直播圈有个很受欢迎的直播控制台程序Mac…

牛客网专项练习30天Pytnon篇第07天

1.在Python中,使用open方法打开文件,语法如下:open(文件名,访问模式),如果以二进制格式打开一个文件用于追加,则访问模式为:(C) A.rb B.wb C.ab D.a 解析: "r",&q…

看完这篇 教你玩转渗透测试靶机vulnhub——hackableII

Vulnhub靶机hackableII渗透测试详解Vulnhub靶机介绍:Vulnhub靶机下载:Vulnhub靶机安装:Vulnhub靶机漏洞详解:①:信息收集:②:FTP匿名登录:③:回弹shell:④&am…