自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

大坡3D软件开发

自主操作系统和CPU--用软件和芯片来改变世界

  • 博客(2953)
  • 资源 (44)
  • 收藏
  • 关注

原创 鸿蒙OS应用开发之索引列表选择

前面学习了文本选择列表组件,这个组件可以根据需要把有限的几个字符串进行列表显示,并供用户进行挑选。比如我们来设计中国所有省份里的城市进行选择时,就会发现所有城市全部写到一个列表里,让用户使用起来就会比较麻烦。这时候就需要采用新的设计方法来实现用户的选择了,不能采用前面的文本列表方式来实现。比如先把省份列出来当作一个索引,当用户把省份选择之后,再把这个省份的城市列表出来。这样就可以快速到找到对应的城市。返回值:索引对应的字符串数组,此字符串数组在弹窗中竖排显示,字符串列表最多显示5个,超出部分可以滑动显示。

2024-01-08 11:00:38 1672

原创 鸿蒙OS应用开发之文本选择

前面学习了时间和日期选择组件,这样可以选择时间和日期了,但是那些非时间或日期的选择呢,又需要采用什么样的方式来解决呢?其实就是日期选择也有一些非连续的日期选择,对于这种日期不能采用前面学习过的选择组件,只能采用一种集合式的选择组件,这样更加方便用户来选择。本文将要学习文本选择组件,这个组件就是定义一个文本集合,然后就可以把这个集合的数据进行显示出来,并供用户进行选取。因此这个组件适合比较短小的集合元素,比如课程的选择,节气日期选择,一般种类的选择。在这个函数里输入的参数是第一项的高度,或者文本的高度。

2024-01-05 11:52:26 538

原创 鸿蒙OS应用开发之日期选择

前面学习了时间选择组件,实现了时间的选择,这样非常方便用户进行时间的输入,通过手动就可以输入时间,比直接文本输入要省不少时间,特别对于手机这样单手操作的设备,更加重要了。因此,日期的输入工作也不能落后,本文将要学习日期选择组件,这样就可以实现日期通过手上下移动的方式来对日历进行输入。还有中国人的节气,也是根据农历来看的,所以日历的设计上,就会有两种显示方式。此函数当用户选择一次日期之后,就会调用一次这里设置的回调函数,我们把代码写在回调函数里,就可以获得参数输入的日期,就是当前用户设置的日期value。

2024-01-05 10:22:19 908

原创 鸿蒙OS应用开发之时间选择

如果没有设置,就默认为当前系统时间。这两种方式都有用户使用,至于用户是使用那一种方式,我们并没有决定权,所以我们需要采用一种方式让用户进行选择。前面解决了时间显示的方式问题了,接着下来就是当用户选择时间之后,怎么样获取用户选择的时间呢?这样我们就学会怎么样使用时间选择组件,一个是12或24小时制的问题,一个是时间初始化的问题,最后一个是获取用户选择的时间并进行处理的问题。使用这个时间,就会在时间选择组件上显示为8点的时间。在这里获取时间之后,又设置到上面初始化的时间变量,这样才能同步下一次更新界面的时间。

2024-01-04 10:29:04 1014

原创 鸿蒙OS应用开发之文本时钟

比如你正在开发一个阅读电子书的软件,由于是全屏进行显示,就看不到系统时间,这时就可以在界面上显示一个系统时间,这样让看书的人快速地知道当前的时间,也不用切换回到系统里查看时间,这是一个比较方便的功能。对横跨国际日界线的国家或地区,用-13(UTC+13)和-14(UTC+14)来保证整个国家或者区域处在相同的时间,当设置的值不在取值范围内时,将使用当前系统的时区偏移量。在这里显示了文本的时间,然后再添加两个按钮,一个按钮是用来启动计时,一个按钮是用来停止计时。日期间隔符固定为"/",时间间隔符为":"。

2024-01-03 12:45:13 1151

原创 鸿蒙OS应用开发之文本计时器

比如每天定时起床的闹钟,比如定时的工作时间,又比如小孩子做作业的定时计算。由于这是一个文本显示的定时器,所以需要设置文本显示内容的格式,这是通过函数format()来设置,它采用自定义格式,需至少包含一个HH、mm、ss、SS中的关键字。如果是倒计时类型,表示开始倒计时的开始数字,它的单位为毫秒,比如30000表示为30秒计时。这里的this.format是定义在前面的变量,它的内容是'mm:ss.SS',表示分钟:秒.毫秒 的方式。有了上面的基本知识,就可能构造一个计时器的应用了。

2024-01-02 10:41:23 1298

原创 鸿蒙OS应用开发之菜单

前面学习了弹出式气泡提示,可以达到内容提示和交互,但是如果需要更多的选择,就不合适使用它来选择。这时应该采用菜单的方式,就可以达到更多的选择和设置,并且对于用户来说也是比较友好,因为它是采用一种清单列表的方式,而且有子菜单分类,分层显示。这是第一个菜单项,菜单显示名称由value来设置,所以这里显示为'菜单项1',接着定义菜单的事件响应函数action,这与前面气泡提示的响应是一样的。Menu()函数,作为菜单的固定容器,无参数。如果前面标准的菜单项不满足设计的要求,就需要采用自定义格式的菜单了。

2024-01-02 09:41:26 668

原创 鸿蒙OS应用开发之气泡提示

这种方式跟自定义的方式比较接近了,并且还有按钮选择,可以设置用户选择那一种按钮的响应,这是一种方便用户简单地设置的方式。最后的一种方式,也支持自定义的气泡提示,开发者可以使用构建器CustomPopupOptions创建自定义气泡,@Builder中可以放自定义的内容。在这里看到设置这个函数时,设置了两个参数,第一个参数this.handlePopup,用来控制弹窗是否显示,第二个参数{ message: '这是气泡提示的一种方式',},用来设置提示的文本。在后面的参数设置里,也是比较复杂的形式。

2023-12-29 10:43:09 1753

原创 鸿蒙OS应用开发之自定义弹窗

在上面参数里,定义我们自己定义的窗口页面CustomDialogExample,同时设置了自定义窗口的回调函数cancel和confirm,当在自定义窗口里点击对应的按钮时,就会调用外面父窗口的函数处理。要显示弹出窗口,我们需要来定义一个弹窗口的布局和显示内容,这些与普通的窗口是没有区别的,只是需要添加一个装饰器@CustomDialog。可见自定义弹窗主要有两个内容,一个是定义弹出窗口的内容和回调函数,另一个是构造一个控制对象。有了自定义窗口,还不行,需要一个事件来触发弹出这个弹式窗口。

2023-12-27 12:49:18 1404

原创 鸿蒙OS应用开发之文本显示

由于应用设计时,并不知道用户要查看的文本有多少长度,如果文本超出了文本框的显示范围,一般有两种设计,一种是采用滚动条的方式,可以让用户翻页查看;前面使用比较多显示文本输出,但是一直没有认真学习过,其实文本显示是最常用的组件,使用的地方也是非常多的,毕竟它是手机输出的基础,也是与人类交互的基础。这里使用的属性是textAlign(TextAlign.End),针对报表显示,就比较适合使用这个,因为它的设计原则是文本靠左,数字靠右对齐。参数content是可选参数,可以是字符串文本,也可以是资源文件。

2023-12-26 10:51:06 951

原创 鸿蒙OS应用开发之进度条

之所以要这样,是因为计算机是一个复杂的系统,其中软件更是复杂的系统,已经超过数千万行代码,经历数十年的积累而来。但是手机上还是4G网络或5G网络,目前来看只是相当于以前有线网络的速度,所以下载的速度还是很慢,这时候就需要有进度条来表示当前传送的进度,这是当前环境所需要的。通过上面的学习,我们明白了创建进度条的方法,以及类型,最后还学会了动态地更新进度条的方法。另外现在安装的APP应用也是越来越大,安装的时间也越来越长,需要进度条来表示安装过程,也是不可缺少的。后面只要我们更新此值,就可以改变进度条的值了。

2023-12-22 11:04:36 1011

原创 鸿蒙OS应用开发之切换按钮

前面学习很多按钮,可以满足基本的使用,但是很多情况下,只有二选一的需求,这时采用切换按钮,就会让程序更加直观,并且切换按钮可以显示比较大一点,在手机上操作会更加方便。输入一个可选的参数options,它是定义为一个集合对象,第一个元素定义了切换按钮的类型,第二个参数定义了切换按钮处于哪一个状态。如果按钮是Switch样式,那么还可以改变上面按钮的颜色,它是使用函数switchPointColor来改变。来定义切换按钮,说明切换按钮是采用复选按钮的形式,接着下来就是定义响应函数。//CheckBox方式。

2023-12-21 10:20:52 1303

原创 鸿蒙OS应用开发之多选按钮

前面学习了复选按钮,可以给用户自行地选择各个选项,并且也可以不选,这是比较合理的。比如后面有10多项选项,一开始是默认全选,当用户只要其中一项时,就需要把所有已经选上的选项一项一项地去掉,这是很麻烦的,是考验人性的。在这里第一项是全选,或者全部不选,第二级是复选,用户可以一个一个地选择,也可以一个一个地不选。这样当用户点击这个按钮时,就会把这个组名里所有复选按钮全部选中,如果取消时,就会把所有选中按钮取消选中状态。要实现这种界面,需要使用前面学习的复选按钮,再加上一个多选按钮,才能实现。

2023-12-20 11:54:06 777

原创 鸿蒙OS应用开发之单选和复选按钮

前面学习了文本的输入,以及普通的按钮输入,但是现在的界面设计,已经非常标准化,还需要有单选按钮和复选按钮。因为不同的客户对于糖的接受程度会不一样,大多数人会喜欢5分糖,但是有人喜欢甜一些,就会10分糖,但又有一些人不喜欢糖,就会选择无糖。面对这种需求,我们就可以采用单选按钮来设计实现,让用户只选择一个,不可能既选无糖,又要10分糖的需求。在软件开发里,能让用户选择的选项,就不要让用户输入。同样,一个点餐APP里也有多个一起选的,比如一杯奶茶里可以选择加芋泥,还可以选择加波波珠,还可以添加红米。

2023-12-20 10:30:52 550

原创 鸿蒙OS应用开发之多行文本输入

但是也有一些例外,比如需要用户备注一段说明自己的简历,那么使用一行文本,要把情况写出来,就有点强人所难,毕竟不是所有人都能这么好的总结能力,因此要使用多行的文本组件,这样让所有用户适应。因为多行输入之后,偶尔要移动光标到某一个位置进行添加或修改,如果没有光标的定位功能,就会比较让人作急,要么全部删除再写,这是多么浪费时间。只要你仔细地查看一下,就会发现跟单行文本输入框的定义是一样的,所以前面学习的内容是完全适合这里的,按样子使用就可以了,特别事件响应函数都是一样的。,这个跟单行组件是一样的。

2023-12-19 10:28:23 1032

原创 鸿蒙OS应用开发之正则表达式检查

前面学习了数字、邮件地址的输入,说明了输入检查的重要性,但是这两类的检查,都是满足日常的简单的应用,如果需要一些复杂的检查,就无能为力了。随着手机的普及,手机号码已经成为人们日常生活中必不可少的一部分,但在开发过程中,我们需要对手机号进行格式验证,以确保用户输入的数据符合我们的要求。所以很复杂的输入检查,都可以采用正则表达式对象RegExp来处理,更多的正则表达式的写法,需要自己努力去补课了。在这里只能进行简单的过滤检查,更复杂的表达式可能会出错,并不能处理,估计这个地方需要系统添加完善它。

2023-12-18 17:50:05 1865

原创 鸿蒙OS应用开发之数字、邮件地址输入

比如一个注册帐号,当你输入七八个页面后,在最后提交时,才提出来不合法,那么用户就需要一个一个返回去重新查看,这样来回折腾,非常让人生气的。另外还有一种,没有检测到,导致输入非法的字符,再到SQL语句处理也不严格,那么就会导致SQL语句执行出错,如果出错又没有处理,整个系统就会崩溃。这样才能正确地处理正确的数据,限制用户犯错,才是软件智能的体现。在鸿蒙应用里,也不会例外,所以文本输入组件,可以所有内容的文本,也可以限制只输入数字,还有限制输入符合邮件的相应字符,还有更加复杂的,就是添加正则表达式来处理。

2023-12-18 10:42:17 271

原创 鸿蒙OS应用开发之登录界面

在前面学习了输入文本组件和按钮组件,可以使用这两种组件来实现一些常用的功能,比如登录界面,这种界面是每个程序员经常会到遇到的,比如让用户输入用户名称和密码。在这里又由于需要获取界面输入的值,需要响应事件onChange,把用户输入的内容保存在this.username里,以便后面使用。在上面界面里,第一个文本框用来输入用户名称,第二个用来输入用户密码,当用户输入完成之后,就可以点击后面的按钮进行登录。这样在onClick事件里就可以使用用户名称和用户密码,这样就可以向远程服务器进行请求登录验证。

2023-12-14 18:48:16 524

原创 鸿蒙OS应用开发之文本输入组件

前面学习了按钮组件的输入方式,它只能响应触摸输入,或者点击输入,而不能实现文本的输入,虽然它是主流的操作方式,但是很多时候还是需要文本的输入。在输入组件里定义了输入事件onChange,这个事件就是用来获取输入内容的,其它事件可以不关心,但是这个事件必须要处理,否则获取不到用户输入内容。这是我们开发人员需要关心的问题,就是用户输入文本之后,我们怎么样从这个控件里获取到刚刚输入的内容,其实它是通过事件响应来获取内容的。用来提示用户输入的内容格式,这样对于用户来说更加友好,不会忘记输入内容的方式。

2023-12-14 10:16:07 260

原创 鸿蒙OS应用开发之按钮组件(2)

前面学习了简单的按钮添加到程序里,并且使用了简单的布局排列来放置。其实按钮还有很多种形式,会在不同的场合来使用。默认的按钮外形,跟前面例子的程序是一样的:包含着图片的按钮:不同外形的按钮:还可以自己定义外形:按钮组件定义如下:Button(label?: string, options?: { type?: ButtonType, stateEffect?: boolean })第一个参数label,是一个可选参数,它是表示按钮的显示名称,第二个参数options是一个对象类型,这个对象又包含了两个参数,一

2023-12-13 09:55:05 255

原创 鸿蒙OS应用开发之按钮组件(1)

要想在手机屏幕放置按钮,那么就得考虑怎么样布局,怎么样摆放才符合用户的操作习惯,因此这些都是需要设计经验,以及参考同行的设计习惯。在这里先学习一下简单的布局,比如我们可以在屏幕上面显示文本,后面显示一个按钮。在前面学习了点击事件,这是通过文本显示框来实现的,但是大多数的应用,都会明确地使用按钮来提示用户点击,这样方便用户进行交互,降低了应用的使用难度,人们已经养成了看到按钮就点击的习惯。Button是按钮组件,通常用于响应用户的点击操作,其类型包括胶囊按钮、圆形按钮、普通按钮。

2023-12-12 10:09:58 230

原创 鸿蒙OS应用开发之点击事件

在这之前我们先来学习一下Text组件的点击事件,这样让我们的应用具备基本的交互能力,可以让应用响应点击输入,并作出反应,这样更方便我们后面学习新的内容。通过上面的例子,就可以看到自己代码里编写的内容运行的界面显示,并且进行输入点击,就可以看到代码响应输出,实现输出和输入功能。这个函数没有输入参数,因为目前不关心它的输入事件,如果需要可以带有参数的。在前面我们学习了开发工具的使用,数据类型,运算符,语句和函数,已经具备了基本的编程能力,当然还有很多内容需要学习,比如类、类的继承、接口等等。

2023-12-11 21:55:29 612

原创 鸿蒙OS应用开发之函数

要解决代码复用的问题,拷贝和粘贴是一个简单爆力的方法,这样是可以解决的,不过代码会越来越长,以及越来越容易出错,修改起来也越来越麻烦。在这个例子里,先定义了一个函数类型trigFunc,然后用它在函数参数里声明f变量,最后在函数体里调用f函数。但是这个f函数是不指定做什么样的功能,可以给它不同的函数,这样就可以实现不同函数的调用了,也是一种宽泛程序设计。函数的最后一个参数可以是rest参数。在上面的例子里,会保持count这个变量的值,每次调用函数都会使用前面的数值,这个地方需要比较留意的地方。

2023-12-11 11:59:57 345

原创 鸿蒙OS应用开发之语句

在程序开发中,已经有上面的运算符和数据类型了,可以满足了大部的需求,但是这些程序还是比较简单的计算和逻辑运算,如果需要复杂的计算和逻辑处理,就需要采用复杂逻辑程序块来处理了,也就是复杂条件语句才能解决。通过if-else语句,就可以执行复杂的逻辑语句,因为每一个大括号里都是一块更加复杂的语句,这样就可以不断一层一层判断,就可以解决更多的逻辑处理问题。它还可以使用在循环里,可以提前跳出循环,比如循环执行一半,再判断满足了条件,如果没有break语句,就没有办法提前退出循环了。2、 计算condition。

2023-12-10 22:22:14 178

原创 鸿蒙OS应用开发之运算符

前面学习了程序语言的基本表达,有了这些声明变量之后,就需要进行运算,才能产生我们需要的结果。数据类型是相当于保存了什么种类内容,而运算是把内容进行变换,才能产生我们需要的输出,这是CPU正要干的事情。复合赋值运算符列举如下:+=、-=、*=、/=、%=、=、>>>=、&=、|=、^=。复合赋值运算符将赋值与运算符组合在一起,其中x op = y等于x = x op y。上面就是ArkTS的基本运算符,这些内容都需要熟悉,并且牢记,才能进行下一步的学习。一元运算符为-、+、--、++。

2023-12-10 12:13:00 265

原创 鸿蒙OS应用开发之数据类型

前面学习了一个简单的例子,这是多年来学习应用程序开发的经典路径,在这里也是这种待遇,通过这样的学习明白了一个简单应用是怎么样构成的,知道它是怎么运行输出的。在函数内编写自己学习最新的知识,在上面定义了三个变量,这三个变量都是没有关键字在前面声明,跟js不一样的地方,这点要牢记。array,即数组,是由可赋值给数组声明中指定的元素类型的数据组成的对象。数组的长度由数组中元素的个数来确定。这种形式是局部变量的声明,第一个是关键let,变量名称叫做msg, 变量类型是string,赋值符号为等号,后面赋值内容。

2023-12-10 12:03:08 412

原创 鸿蒙OS应用开发之最简单的程序

接着下来,就是build()方法,它是一个系统定义组件的方法,这个方法必须要实现,相当于自定义组件的虚函数,如果不实现这个方法,就会编译失败。从开发界面来看,左边就是工程文件的树形显示,如果刚从这里来看,是比较复杂的,无论是谁也不能一下子就搞懂它们,所以先放下来,知道它是构成工程文件即可,主要来看右边窗口的文件,在这里显示的是Index.ets文件,这个文件才是我们主要关心的,它是后面修改界面和改变显示内容的关键代码。如果第一眼看这些代码,也是搞不懂的它的,因为它是一种特殊的方式,与以往的开发语言不一样。

2023-12-08 11:36:18 585

原创 C#开发的OpenRA游戏之属性SelectionDecorations(14)

构造函数,传入物品对象actor,显示内容区域大小decorationBounds,是否显示健康状态条displayHealth,是否显示额外信息displayExtra。这个函数后面有两个参数,displayHealth是判断是否显示生命值,displayExtra是判断是否显示额外状态。通过这里分析,就理解了怎么样在角色选中时显示健康状态条和额外信息状态条。计算状态条的边框颜色和状态条中间颜色,以及边框相对位置。如果显示值与角色生命值不一样,进行入这里显示状态条。这个函数主要用来显示额外信息的状态条。

2023-11-30 11:11:09 301

原创 C#开发的OpenRA游戏之属性SelectionDecorations(13)

autoBounds一般只会保存一个对象,比如物品对象就是使用WithSpriteBody类对象,因此这里的调用s.AutoMouseoverBounds函数,其实就是调用WithSpriteBody类对象的函数,主要实现物品大小变换到屏幕坐标里的大小和位置。在这里最重要的就是两个属性:Bounds和DecorationBounds,Bounds属性提供了这个物品的外形大小,占用地图空间大小,以及物理碰撞检测等等。如果用户有定义对象的大小,就使用用户定义的,如果没有就使用物品固有区域大小。

2023-11-29 17:56:41 507

原创 C#开发的OpenRA游戏之属性SelectionDecorations(12)

在a.Trait.RenderAnnotations(a.Actor, this)调用里,就是调用了前面的接口RenderAnnotations函数。DrawDecorations函数先判断这个物品是否被选中,如果包含选中的列表中,那么就可以进行下一步的动作,就是调用函数RenderSelectionBox,也就是SelectionDecorations类的函数,这个函数是重写了基类SelectionDecorationsBase的函数RenderSelectionBox。里调用,主要参数是角色对象。

2023-11-28 12:05:59 321

原创 C#开发的OpenRA游戏之属性SelectionDecorations(11)

然后,函数遍历所有相邻的点对,计算每个线段的顶点坐标,并使用parent.DrawRGBAVertices方法绘制线段。这行代码里,就是批量把顶点坐标vertices进行绘制,绘制的方式是按PrimitiveType.TriangleList的方式。不过隐藏在这个函数后面,会有更加复杂的内容。上面语句里可以使用三个坐标来画线,还有线的宽度和颜色,最后的那个参数是连接在一起的意思。如果线段闭合,则需要计算与前一个顶点相交的点,以便正确地绘制闭合的线段。函数首先检查输入的点的数量,如果少于2个,则不进行绘制。

2023-11-28 11:14:19 202

原创 C#开发的OpenRA游戏之属性SelectionDecorations(10)

这段代码定义了一个名为SelectionBoxAnnotationRenderable的类,该类这段代码定义了一个名为SelectionBoxAnnotationRenderable的类,该类实现了IRenderable和IFinalizedRenderable接口。当用玩家选择地图上一个物品,或者士兵,或者坦克时,就会在周边画上一些指示标记,并且有一个状态条。前面分析了选择属性,继续分析前面的内容,不过这里不再是选择,而是选择相关的属性。AsDecoration():返回当前对象,不改变任何属性。

2023-11-27 12:40:29 291

原创 C#开发的OpenRA游戏之属性Selectable(9)

这段代码定义了一个名为Selectable的类,该类继承自Interactable类并实现了ISelectable接口。Selectable类包含一个只读的字符串属性selectionClass和一个只读的SelectableInfo类型的属性Info, SelectableInfo类就是前面定义的信息类。在构造函数中,首先判断传入的info.Class是否为空或者为null,如果是,则将selectionClass设置为self.Info.Name,否则将其设置为info.Class。

2023-11-23 10:00:53 599

原创 C#开发的OpenRA游戏之属性RenderSprites(8)

本文开始学习RenderSprites属性,这个属性是跟渲染有关的,因此它就摄及颜色相关的内容,所以我们先来学习一下调色板,这是旧游戏的图片文件保存的格式,如果放在现代来看,不会再采用这种方法,毕竟现在存储空间变大,便宜了,并且内存空间也便宜了。就是保存在后面这两字典里面,如果后面遇到要使用调色板,只需要通过名称就可以在这里找到调色板的数据,因此调色板的名称是一个很重要的数据。在这里类里,还定义上面的函数来先获取派系的图片来显示,如果没有定义派系的图片,就直接采用角色名称默认的图片来显示。

2023-11-22 18:36:10 305

原创 C#开发的OpenRA游戏之属性QuantizeFacingsFromSequence(7)

通过特性字典就会找到IQuantizeBodyOrientationInfo接口,因此就可以调用上面的类QuantizeFacingsFromSequence,因为它是继承接口IQuantizeBodyOrientationInfo的,这样就可以通过它来找到角色的方向。这个类继承了ConditionalTraitInfo接口,IQuantizeBodyOrientationInfo接口,以及RenderSpritesInfo接口,它是用来描述显示角色动画的信息。这个类用来从动画序列来找到角色的方向。

2023-11-20 11:38:12 284

原创 C#开发的OpenRA游戏之属性BodyOrientation(6)

SpriteActor是用来定义角色的基本属性,它的第一个属性就是BodyOrientation,这个属性主要用来描述角色的身体的方向。这个函数是计算角色方向,它是通过orientation.Yaw角度和角色拥有多少个朝向来决定采用哪一个朝向。这个主要保存了使用哪一个方向来角色方向。这里保存摄像机的角度,默认是偏移40度的方向来投影。这个函数采用延时方向来计算角色的朝向问题。这个函数是根据旋转角度和朝向来决定方向。根据角度和多个朝向来选择合适的朝向。这里保存方向的信息类对象。根据角度来找到合适的朝向。

2023-11-17 19:40:33 352

原创 C#开发的OpenRA游戏之世界存在的属性RenderDebugState(5)

前面分析过一个调试的属性,在这里分析另外一个属性,这个属性就是RenderDebugState,它就是用来显示渲染的信息。从上图可以看到,采矿车被玩家选中之后,就会显示一串红色的文本,第一行是这个物品的名称和ID号,第二行是行动的名称和状态。如果这个角色有当前的行动,就把行动的内容添加到后面显示,中间采用句号分隔。如果调试模块不存,或者没有调试参数没有设置,都不进行显示角色的标签。跟前面的分析规则可知,属性都是有一个信息类和操作类组成。这个类主要用来在地图上显示Actor的类型和ID名称。

2023-11-15 19:19:12 327

原创 C#开发的OpenRA游戏之世界存在的属性GivesExperience(4)

又有于它被杀之后会有经验值,所以它要继承INotifyKilled,这样才能响应被杀的事件。在这个函数首先获取经验值,经验值主要有两个来源,一个是从用户里设置的YAML文件,一个是没有设置,直接从创建物品的花费来计算。最后是从IGivesExperienceModifier来获取经验的修改器,可以使用一个修改器来改变所有经验的计算。如果没有经验,或者没有攻击者,又或是对象自己卖掉的,都不要计算经验值。这里就实现了经验属性的分析,如果还有别的问题,可以在留言里提问。这里提供修改器,可以定制自己的规则。

2023-11-14 17:47:45 217

原创 C#开发的OpenRA游戏之世界存在的属性CombatDebugOverlay(3)

比如一个士兵要向这些建筑物开火,怎么样知道他在这个射程范围之内,就是计算他的中心点与这些点的长度是否在武器的射程范围之内,如果在这个范围之内,才能进行射击,不在范围就不能射击。这个类继承接口IRenderAnnotations,这个接口主要用来实现RenderAnnotations(Actor self, WorldRenderer wr)函数,这个函数用来显示炮口、命中区域的标注。这里保存了调可视化的全局变量,因为它是附在world对象,这是一个全局变量,所有地方都可以访问。

2023-11-10 12:24:29 653

原创 C#开发的OpenRA游戏之延时初始化Lazy<T> 类

Lazy 是一个类,用于实现延时加载(Lazy Initialization)。延时加载是指对象的创建被推迟,直到第一次被使用时。Lazy 允许你在第一次访问对象时进行初始化,这对于大型或资源密集型对象的性能优化非常有用。你可以通过提供一个委托(Delegate)来延迟初始化对象,Lazy 确保所有线程使用同一个延时加载对象的实例,并且丢弃未使用的实例,从而优化内存使用。

2023-11-09 11:36:47 317

python抓取天气并分析 实例源码

Python代码抓取获取天气预报信息源码讲解。这是一个用Python编写抓取天气预报的代码示例,用python写天气查询软件程序很简单。这段代码可以获取当地的天气和、任意城市的天气预报,原理是根据url找到网站截取相应的数据展现。 python抓取广州天气并分析 实例源码

2017-08-28

wix3.11版本安装工具

wix3.11版本安装工具

2017-06-19

WiX3.10版本安装工具

WiX3.10版本安装工具

2017-06-19

GOOGLE的TPU论文

GOOGLE公开TPU的论文

2017-04-06

深度强化学习论文

DQN的论文

2017-03-17

书《深度学习》

2015年,深度学习三大牛Yann LeCun、Yoshua Bengio和Geoffrey Hinton在最新的《Nature》杂志首次合作的发表综述文章《Deep Learning》。本文为该综述文章的中文译文,深入浅出地介绍了深度学习的基本原理,核心优势和未来展望。

2017-03-13

手写识别的训练数据

MNIST训练数据

2017-03-10

俄罗斯方块游戏开发

俄罗斯方块游戏开发培训里的可执行文件,让大家可以查看相关的结果。以便是否参加培训。

2016-11-30

duilib界面库20161116

更新为VC2015编译的duilib,持续重构代码,使用最新的C++14的语法。

2016-11-16

duilib界面库20161017

duilib 界面库

2016-10-17

duilib界面库

duilib界面库,长期维护的界面库,在WIN10和VS2012上编译和开发、测试通过。

2016-10-10

国产8051模拟器

一款国产的8051模拟器(全部源代码) 本软件是一款8051模拟器,他的特点是可以模拟多处理器平台,在简单的多工作区间的界面上可以很方便的模拟8051处理器, 最重要的是这个单片机系统可以完全由你自己订制,你甚至可以随意创建自己的多单片机系统,什么SMP 基于串行总线的分布式系统,集群式系统,只要你能想到的,都可以办到,充分发挥你的想象力。现在1.0版本已经基本体现出了这种思想,在以后的版本中将使这一特性变的 更加强大!

2016-09-10

mysql开发管理工具

mysql数据库的开发管理工具。

2016-07-12

mysql-5.5.50-64

windows下的64位MYSQL的版本。

2016-07-10

python-3.4.4

python 3.4的32位的windows版本

2016-07-01

tinyxml2配套源码

在软件开发过程中,为了使软件有灵活的配置,特别像界面这样的配置,同时为了减轻重复开发的任务,需要把客户的个性化需求可以通过配置文件来修改,比如像界面的颜色配置,就可通过配置文件来修改,这时就可以采用XML文件来保存和修改这些参数配置。在不同软件之间进行通讯时,也可以采用XML协议来进行数据交换,特别像WEB服务的调用时,采用传送XML格式是基本的数据交换方式。基于这些任务的需求,需要软件开发人员会在C++里使用xml格式。

2016-06-27

protoc2.5执行文件

protoc执行文件

2016-06-24

protobuf 2.5

protobuf 2.5库代码和工具

2016-06-24

selenium的浏览器驱动

目前有很多的银行网站,还是以IE为标准的浏览器,因此这里主要采用IE为测试的例子,在这里可以下载不同版本的浏览器驱动,可以是32位的,也可以是64位的,根据自己的需要下载不同的版本。在本文章里,下载的是2.35.3版本:IEDriverServer.exe,把它放在目录f:\temp\里面。

2016-06-14

WIX制作C#应用程序安装包

WIX制作C#应用程序安装包

2016-05-26

开源鸿蒙4.0不能进入桌面的补丁

系统启动后进入不到桌面 当前系统有 bug,当出现此种问题时,需要执行 killall com.ohos.launcher。 里面的hap文件替换applications\standard\hap\下的同名文件。 目录 oh/applications/standard/hap

2024-03-17

开源鸿蒙 4.0 RK3566开发板配置

开源鸿蒙 4.0 RK3566开发板配置 https://mysoft.blog.csdn.net/article/details/136779805

2024-03-17

使用WeifenLuo.WinFormsUI.Docking的简单例子

使用WeifenLuo.WinFormsUI.Docking的简单例子,演示了简单地使用这个窗口布局库。

2021-12-10

hui_test_form.rar

H-ui.admin_v3.1.3.1的学习和测试例子,前端代码的经典。

2021-08-17

python_example.rar

pybind11的安装和编译的例子,可以快速地生成安装包。

2021-06-24

Mysql_20210615_1.rar

演示访问Mysql库的C++类库QTL

2021-06-15

TestSel1.rar

爬虫日记(28):scrapy使用中间件调用浏览器 相关代码

2021-03-29

ItemDemo_ua.rar

爬虫日记(25):Scrapy 中设置随机 User-Agent 二 的配套代码

2021-03-26

爬虫日记 Imgfn1.rar

爬虫日记(23):用scrapy快速地爬取蜂鸟网图片 相关的项目代码

2021-03-24

ImgDemo1.rar

爬虫日记(22):最简单地抓取图片,仅5行代码 相关配套代码。

2021-03-23

ItemDemo3.rar

爬虫日记(21):使用Pipeline模块写入文件二 的配套代码。

2021-03-23

ItemDemo2.rar

爬虫日记(20):使用Pipeline模块写入文件 的例子

2021-03-22

ItemDemo.rar

实例使用Item对象,适用初学者,《爬虫日记》配套源码。

2021-03-21

svm_hog_data.rar

使用到LineSVC里进行机器学习的训练数据,用来训练手写识别。 配套专栏文章使用,https://blog.csdn.net/caimouse/article/details/104599920。

2020-03-02

实现numpy的C++库扩展

使用C++来扩展numpy里的数据计算,这时就需要使用numpy的扩展库功能了,下面就来提供一个使用C++编写numpy扩展库的模板,这样大家就要减少很多弯路,减少跌入坑里的成本。这个扩展库的模板是从mahotas库里抽取出来的,经过最大化的简化,这样更加容易理解,更方便学习。

2019-11-24

STM32F407VET6工程模板

玩转STM32里文章配置的代码,这里学习的第一个工程代码,可以作为后继开发的模板工程。

2019-03-14

python web py入门配套源代码

python web py入门- 实现论坛,开发技术:后端采用Python+web.py+MySQL,前端采用HTML+CSS+JavaScript+jQuery+RequireJS。

2018-02-23

webpy演示例子1

webpy演示例子1, 用于配套文章相关资源。python web py入门(9)- 论坛首页的模板中模板 前面已经提到一个模板中可以套用另外一个模板,现在就来看看这个论坛基本布局模板是怎么样的?

2018-02-21

胶囊模型的代码

胶囊模型的代码在以下论文中使用: “Dynamic Routing between Capsules” by Sara Sabour, Nickolas Frosst, Geoffrey E. Hinton. 要求 TensorFlow ( 访问 http://www.tensorflow.org 了解如何安装和升级) NumPy (详见http://www.numpy.org/) GPU

2018-02-02

C++读写json文件

https://github.com/nlohmann/json 最好用的C++读写json库

2017-12-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除