自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

razorEdge的博客

一块交流、一块分享,让知识可以容易接触,让理想可以随心而行。

  • 博客(67)
  • 资源 (2)
  • 收藏
  • 关注

原创 string 复杂在哪?(字符串与Unicode编码)

在编程语言中,string都比看起来要复杂,它让编程语言在设计时需要做出很多妥协,从而使编程中固有的一致性被打破。很多语言在设计string组件时,往往以。。。

2023-02-05 14:56:31 312 1

原创 qml6实现图片圆角效果

qt5有一些方便的qml类型来实现图片圆角,qt6里把这些都移除了,换成更强大的shader,代价是一个小的需求都要写shader文件,用qsb编译成qml可用的二进制格式,另外肯定会涉及到开销问题。

2022-10-04 13:16:31 677

原创 希尔排序过程详解

希尔排序过程详解博客迁移了,文章在这:https://zhumo.vivaldi.net/2021/10/31/理解希尔排序算法过程/

2021-10-31 17:50:15 375

原创 选择排序过程详解

选择排序过程详解1,引入和插入排序的插入一样,选择更多的是一种思路,使用这种思路排序的算法也有多种:这篇文章要梳理的是其中最基础的一种——简单选择排序的确足够简单,以至于我写完本篇的大纲就觉得差不多讲完了。原因在于,简单选择排序太符和我们人的做法了,让我们手动排序也莫过如此~和上面手动排稍稍有点不同,为了减少空间开销,在下面的代码中使用了交换位置,来代替另开辟一个新的数组。2,对于升序排序,选出最小值放在第一个位置,再选出第二小的放在第二个位置…选出第n-1小的放在第n-1个位置,最大

2021-09-20 22:35:33 1048

原创 插入排序过程详解

插入排序过程详解1,引入2,外层选元素,内层找位置看完此部分后再读一遍这个标题。插入3,实现3,1,C++3,2,Python4,想法5,参考

2021-09-18 22:43:32 6190

原创 冒泡排序过程详解

冒泡排序1,引入一种简单的排序算法2,比较轮数 与 每轮的比较次数比如,我们要对64 34 25 72 22 11 60这个序列升序排序。冒泡排序的思路是:将序列从左到右,每两个相邻的数都比较一次,如果前者大于后者,就交换这两个相邻数字的位置,这个过程重复多次,就可以将序列变成升序的。拿上面例子来说:想象一下,你走在回家的路上,沿途有各种价值不一的宝物,每次遇到宝物,你总会把手里的宝物和遇到的宝物比较,然后带走价值较大的那一个,当你回到家时,你带来的肯定是价值最大的那一个。这就

2021-09-14 18:09:10 4505

原创 Qt 封装一个简单的LED(指示灯)控件

Qt封装一个简单的LED(指示灯)控件1,效果~所以这个简单的LED类可以自定义大小~可以点亮或熄灭,也可以闪烁????️~闪烁的时间间隔可自定义,只需要在设置闪烁状态前调用类的setInterval(msec)函数~有几种预定义的颜色(红、绿、蓝、黄和橘色),也提供自定义颜色的函数~如果还满足不了需要,就得自己扩展了,类很小,这也很方便~工程文件中有这个例子代码,可以当作用法入门,其实只是引入头文件,定义类对象,然后当一个普通控件(如:QPushButton)来用~最简单的方法是把类

2021-08-19 19:44:18 12803 1

原创 一文搞懂Qt中的颜色渐变(QGradient Class)

Qt颜色渐变简介(QGradient Class)1, 快速开始!Qt中与颜色渐变有关的类是QGradient其中它又有三个子类:QLinearGradient、QRadialGradient、QConicalGradient分别对应三种具体的颜色渐变(后面挨个介绍)。所以它们的关系是:Qt中颜色渐变是怎么用的?它作为一种填充(fill)方式使用,比如说之前我们可以用红色、绿色这些纯色填充一个矩形,现在我们可以用一个渐变颜色(更形象的称呼是色带)来填充,从而可以绘制出更有趣的控件!先了解一下

2021-07-21 13:52:23 15505 8

原创 游戏编程 - 从Godot引擎中的lerp(...)函数到线性插值

从Godot引擎中的lerp(…)函数到线性插值1。 What’s LERP?lerp < linear interpolation < 线性插值 < LERP索引页 < 黑客词典2。lerp(…)函数做了什么?先让我们给出godot中lerp的函数签名,方便我们下面讨论:Variant lerp(from: Variant, to: Variant, weight: float)Variant是gdscript中的一种元数据,这里暂且可以理解成一种数据类

2021-01-14 01:31:40 1769 1

原创 游戏编程 - Godot引擎中控制移动的几种方式

Godot引擎中控制移动的几种方式1。我们要讲什么?本篇我们要梳理一下游戏中常见的几种角色移动的控制方式,比如:使用键盘或手柄:八个方向移动旋转(左右键控制) + 移动(上下键控制)使用鼠标:自由移动(点击位置)旋转(始终朝向鼠标) + 移动(点击位置)2。准备一个简单的演示本篇为了聚焦我们要研究的问题,我们不再给角色加入动画等其它效果,仅使用godot引擎的图标作为精灵,之后的一切控制演示都由它承担。首先建立一个以KinematicBody2D为载体的精灵,其包含的节点和

2021-01-08 11:29:26 6751 4

原创 游戏编程 - 用Godot自制Disc Room 使用PathFollow2D?

用Godot自制Disc Room 使用PathFollow2D?1。Path2D 和 PathFollow2DPath2D: Contains a Curve2D path for PathFollow2D nodes to follow.差不多是说:表示一条路径,PathFollow2D可以沿着它走。PathFollow2D: Point sampler for a Path2D.差不多是说:PathFollow2D是一个采点的,而且是专门在Path2D上采。第二句不太懂没关系,下

2021-01-04 14:12:16 879

原创 独立游戏佳作分享-001(FEZ、Braid、Super Meat Boy)

独立游戏佳作分享-001原文链接:https://mp.weixin.qq.com/s/tG2JIRwRSakjOlkz8ZNvJg后台回复:独立游戏佳作分享-001(如果觉得好玩,请支持正版,steam最近正在搞活动…)1。Braid(时空幻境)一款没有死亡的游戏如果死掉,就逆流时光吧,回到死之前的那一刻钥匙在悬崖底下?勇敢的跳下去,拿到钥匙,再逆流时间,回到没跳之前的那一刻没法一人分饰两角?大胆去做!然后逆流时间,拷贝一份自己的行为,让自己同时做两件不同的事情…steam官方

2020-12-31 10:54:54 438

原创 怎样用C/C++开发图形界面(GUI)程序——点名器示例

怎样用C/C++开发图形界面(GUI)程序——点名器示例原文链接:https://mp.weixin.qq.com/s/O9PXaibAyd__ONBBASYI_Q仍旧是Via What系列,昨天熬夜读了FLTK的文档,今天终于可以给大家介绍一下了。为什么首选这个GUI框架来介绍,个人感觉它有下面几个好处:GUI开发的急救之章对刚开始开发GUI程序的同学比较友好文档完整详实不需要依赖其它杂七杂八的东西如果你也受够了每次写出的程序只有DOS那个黑框,或是想开发自己的GUI工具,亦或是对GU

2020-12-26 00:41:33 51213 6

原创 学习编程时真正值得一读的一篇文章 与 书籍

Teach Yourself Programming in Ten Years彼得·诺维格(Peter Norvig)是美国计算机科学家。他是Google,LLC的研究总监,并曾担任Google搜索质量总监。他也是美国人工智能促进协会(AAAI)的会员和委员,与斯图尔特·罗素(Stuart Russell)共同撰写了《人工智能:现代方法》,目前是该领域的领先大学教材。他曾是NASA Ames研究中心计算科学部(现为智能系统部)的负责人。本文是他非常有名的一篇文章,也是业界公认的神文,相信大家可以从中得

2020-12-20 16:57:33 380

原创 我学了C/C++,怎样才能做出一个像样的游戏,比如贪吃蛇?

我学了C/C++,怎样才能做出一个像样的游戏,比如贪吃蛇?1。引子之前写过一个用C/C++做贪吃蛇的blog,很多同学都对此颇有兴趣,而我知道他们感兴趣的原因是,他们遇到了好多问题也问了我好多问题。为什么他们会遇到这么多麻烦?问题出在哪呢?这些凑成了写这篇blog的初衷。“给出的代码看不懂!”,这是问我最多的问题,没错,能渴求谁在开始学着写自己游戏的时候就会用DirectX的代码?哎!我只学了一些基本语法,会自己定义’贪吃蛇‘这种类型,我猜这种类型会有’生长身体’,‘拐弯’等等的函数,其它什么COM、

2020-12-20 16:00:18 3728 3

原创 Windows API SetTextAlign之我所见

一、问题是如何产生的?无论你有没有意识到,在Windows程序设计中,在消息WM_PAINT中输出文本的时,在使用SetTextAlign函数来控制文本对齐的时候,总会有些别扭,说的更直白些是对SetTextAlign函数如何控制文本对齐的原理感到疑惑。有时候为了试图搞清楚其这种控制对齐的原理,我们不惜把SetTextAlign的参数改来改去,但却造成了更多的疑惑:为何第一行总和之后的行格式不...

2019-04-05 12:15:54 1591 4

翻译 AGK之进一步认识AppGameKit2

1,文章相关在开始“进一步认识AGK2”(这里的2是第二个版本的含义)之前,先介绍一下这篇文章的内容和出处。这是篇译文,原文是 标题为“A Closer Look At AppGameKit 2”,文章的出处会在文末给出。文中通过一些简单的例子和AGK提供的工具资源入手,来对AGK2进行了概括性的讲解。通过阅读本文可以加深你对AGK2的整体把握,是学习App Game Kit2的一个不错的开端。...

2018-10-18 16:16:04 4643 4

原创 Visual Stdudio 2013配置AGK项目记录

一、引入App Game Kit(AGK)是开发C++游戏的商业编程工具,提供了支持标准游戏程序结构的编程模板。AGK是英国软件公司Game Creators开发的商业编程环境,除了能开发Windows游戏,还支持为多种智能手机和平板设备开发游戏(其中包括ios、android、Windows、MacOS、Linux、html5和树莓派,详情可以访问官网:https://www.appgame...

2018-10-13 12:33:04 931 2

原创 Windows下使用命令行编译多個C++文件

在进入正题之前先让我们把例子的工程结构梳理一下,我们会用一个最简单的类来演示,具体如下:greet.h //&amp;amp;quot;打招呼&amp;amp;quot;类的头文件greet.cpp //&amp;amp;quot;打招呼&amp;amp;quot;类的函数定义app.cpp // 主函数文件为了待会你更加理解控制台的输出,我还是决定把代码展示在下面,它们直白的可以让你一览而过:// file name: gre

2018-09-20 17:37:48 3359 1

原创 C++中的访问控制与继承

访问控制与继承在C++的继承体系中,每个类分别控制着其成员对于派生类来说是否可访问(accessible)。其中涉及到3种访控制修饰符,分别是public\protected\private,本篇文章来讨论关于C++继承中类成员可访问性的理解和判断。继承体系中两个位置的访问说明符下面首先给出一个表格清单: 从上面的表格中可以我们也可以清楚的知道,某个类对其继承而来的成员访问权限受...

2018-08-15 13:57:25 1572 1

原创 虚幻引擎(Unreal 4)中默认生成代码报错问题记录

问题描述按照虚幻4的官方文档(http://api.unrealengine.com/CHN/Programming/QuickStart/index.html),创建了一个C++项目并新建了一个C++类,正常编译运行。但是在VisualStudio2017中却存在几处错误下划线(Red underline),具体的显示如下面图片: 挺疑惑为什么报了一些语法错误,还是可以正确编译。...

2018-08-07 16:01:08 5239

原创 Android Studio新建一个Empty Activity失败问题记录

问题描述使用android studio新建一个android工程,在下图1的对话框中选择Empty Activity来创建的项目是没有问题的,但是由于android刚刚入门,想自己手动创建一个activity,此时选择图1中的Add No Activity然后通过图2所描述的过程创建一个empty activity,IDE却报错了(错误提示如图3)。 图1 图2 图3...

2018-07-25 12:11:37 6325 3

原创 Android Studio新建一个Empty Activity失败问题记录

问题描述使用android studio新建一个android工程,在下图1的对话框中选择Empty Activity来创建的项目是没有问题的,但是由于android刚刚入门,想自己手动创建一个activity,此时选择图1中的Add No Activity然后通过图2所描述的过程创建一个empty activity,IDE却报错了(错误提示如图3)。 图1 图2 图3...

2018-07-25 12:11:14 3800 1

原创 开启DXUT框架——简单的文本渲染程序

DXUT框架简介这里直接给出官方的DXUT框架的定义及其开发初衷: DXUT是Direct3D提供的一个建立在Direct3D API基础之上的应用程序框架,这里简称为DXUT框架。DXUT框架用来帮助程序员花更少的时间来解决下列问题:创建窗口、创建Direct3D设备、进行消息循环和处理设备事件。在DXUT框架基础上编写代码,可以快速高效的进行Direct3D程序设计。大多数Direct3...

2018-05-18 06:57:59 847

原创 8.3 初步理解 Texture Alpha

引入(1)上篇中学习了Alpha混合技术,其中涉及到顶点Alpha和材质Alpha两种。但是Alpha还有一种来源就是纹理(Texture)。另外,通过借助纹理的Alpha值,可以实现纹理的透明效果,这让游戏世界变得更有趣、更逼真! (2)然而,这里虽然仍是学习Alpha混合,但是涉及到的是纹理Alpha的混合方式,这使得Alpha混合变得不再单纯,并且更加复杂!因为纹理就是一个尤其复杂的主...

2018-05-10 13:48:55 1410

原创 8.2 使用Alpha混合技术

Let’s start!在介绍深度测试的时候说到过Alpha混合的作用,就是为了实现游戏或其他场景中透明物体的遮挡问题:我们需要遮挡,但是并未看不见被遮挡的物体,有时,透过一块干净的玻璃观察物体,甚至尤其的清楚! 有了使用深度测试技术的基础,在学习Alpha混合技术便轻松一些,但是二者只是在使用方法上类似,真正的原理却大不相同。例如:深度测试是发生在深度缓冲区当中,而Alpha混合则是发生在...

2018-05-09 17:01:23 2427

原创 8.1 Direct3D的深度测试

关于Direct3D的深度测试什么是深度测试?可以设想在一个比较复杂的游戏场景中,通常需要绘制多个物体,这些物体之间必然会存在遮挡关系,离观察点较远的物体会因为近处物体的遮挡而不可见或只有部分可见,Direct3D中提供深度测试功能来实现这种效果。 深度测试与Alpha混合有什么关系?其实在现实世界中遮挡也分不同的情况,如果遮挡另一个物体的物体是半透明的,那么此时在场景中观察到的被遮挡物体并...

2018-05-07 18:04:39 848

原创 使用HTML及简单的JavaScript脚本制作一个点名器

点名器吐槽昨天被点名器坑的很惨,老师用他那所谓的“点名器”,一节课我被叫起来4次,最后一次,大家会意的笑了笑。我是实在无奈,好歹也是个计算机老师,不能自己写个随机点名器吗?弄了顺序读文件,每次靠自己点鼠标的间隔来随机,好吧我承认,两次鼠标的间隔的确是个不错的随机事件,但是切换的如此之快,老师每次的点击间隔还有意无意的保持差不多,那能不每次都点到固定的几个人吗?这虽是自己切身经历的吐槽,但也很明...

2018-04-05 21:16:10 9573 1

原创 C++在一条语句中混用解引用和递增运算符

1,问题引入最近在用C++语言编程时,遇到如下问题:判断下列程序片段的输出内容。 下面是其标准输出: 很明显,以上问题的根本在于运算符(解引用和递增运算符)作用的优先级,只有弄清楚了相关运算符的优先级顺序,这个问题的解决自然水到渠成。2,递增运算符基础在这是解释文章后序问题之前,我们要知道非常关键的一点——递增运算符的运算规则。下面是运算符解释的相关引用: 引用:递增...

2018-02-14 09:47:29 601

原创 认识堆排序的排序过程

1,实用的排序算法:选择排序(1)选择排序的基本思想是:每一趟(例如第i趟,i=0,1,2,3,……n-2)在后面n-i个待排序元素中选择排序码最小的元素,作为有序元素序列的第i个元素。待到第n-2趟做完,待排序元素只剩下一个,就不用再选了。 (2)三种常用的选择排序方法 1>直接选择排序 2>锦标赛排序 3>堆排序 其中,直接排序的思路和实现都比较简单,并且相比其他排序算法,直接

2018-02-01 09:40:54 14970 1

原创 理解希尔排序的排序过程

1,有关插入排序(1)插入排序的基本方法是:每步将一个待排序的元素,按其排序码大小插入到前面已经排好序的一组元素的适当位置上去,直到元素全部插入为止。 (2)可以选择不同的方法在已经排好序的有序数据表中寻找插入位置,依据查找方法的不同,有多种插入排序方法。下面是常用的三种。 1>直接插入排序 2>折半插入排序 3>希尔排序 (3)直接插入排序基本思想:当插入第i(i>1)个元素时,前

2018-01-30 09:41:06 155388 31

原创 理解快速排序算法的排序过程

1,快速排序算法大概(1)快速排序(quick sort)也叫分区排序,是目前应用最广泛的排序算法。在标准C++类库中排序程序被称为qsort,因为快速排序是其实现中最基本的算法。 (2)排序算法的优点:好的快速排序算法在大多数计算机上运行得都比其他排序算法快,而且快速排序算法在空间上只使用一个小的辅助栈,其内部的循环也很小,另外快速排序算法也很容易实现,可以处理多种不同的输入数据,许多情况

2018-01-28 13:06:43 2644

原创 Cocos2d-x引擎与visual studio2013配置讨论

Cocos2d-x游戏引擎大概Cocos2d-x是一个开源免费移动游戏开发引擎,虽然还没有详细的接触cocos2d-x这款引擎,但是仅是对其部分源码的阅读和tests的运行,就足以感受到他的强大与魅力。下面是其经典的logo: 下面是其官方网址,可以在download里下载各个版本的引擎源码: http://www.cocos2d-x.org/在Windows平台下编写Cocos2d-x项目Co

2018-01-11 17:19:29 1511

原创 最小生成树Prim算法的理解

一、 Prim算法构造过程的数学概念1,原文引述 任意给定带权图N = {V, E},算法始终将顶点集合分成不重叠的两部分, V = V1 U (V - V1),也就是该图的一个割(cut)。其中V1是生成树的顶点集合,(V - V1)是图中不在生成树内顶点的集合。这里只考虑连通的网络(连通图),所以只要V1与(V-V1)均非空,他们之间就至少有一条边相连,称这种边为该割的一座桥(bridge)

2017-12-22 16:12:15 571 1

原创 CRT detected that the application wrote to memory after end of heap buffer

错误提示 CRT detected that the application wrote to memory after end of heap buffer……错误截图错误原因相信大家看到这个错误都会有亲切感,尤其是对内存进行操作的时候,这个错误时常发生!下面是摘自网友的一段解释:这是典型的内存溢出错误,常在内存的delete处发生,而且一般在debug版本中可能出现,release版本中可能并

2017-12-02 09:30:22 2033

原创 运用并查集与最小堆实现Kruskal算法

前言 Kruskal是在一个图(图论)中生成最小生成树的算法之一。(另外还有Prim算法,之后会涉及到)这就牵扯到了最小生成树的概念,其实就是总权值最小的一个连通无回路的子图。(结合下文的示意图不难理解)这里的代码并没有用图的存储结构(如:矩阵,邻接链表等)来处理和运用这个算法,而是最简单的三元组输入,这样会使得这个过程简化很多,至于图的存储方式,在之后总结图数据结构的时候会具体讨论。Kruska

2017-12-01 22:24:31 4269

原创 数据结构——最小堆的实现总结

堆的实用性 编程过程中,时常会遇到一种模型,我们收集到一些数据,并对其处理,但是我们需要首先处理这些数据中具有最小关键码或者最大关键码(Key:可以是根据数据的先后顺序或重要程度等给数据编的号码)的数据。我们希望有一种数据结构能够支持插入操作并能方便的从中取出具有最小或最大关键码的记录,这样的数据结构即为优先级队列,优先级队里的实现方式有多种,其中最高效的一种便是堆(heap)。堆的种类 堆有最

2017-12-01 13:54:10 12944 1

原创 并查集的理解与实现总结

并查集的应用十分广泛,包括一些算法,当应用上并查集的时候,也会更容易实现。下面总结下并查集的相关内容。 什么是并查集? 个人的理解是:并查集就是对集合三种常用操作的再一次抽象。分别是集合的合并(Union)、元素的搜索(Find)和对集合的分解。因为这3中操作非常常用并且又不囿于集合,所以就把这一组操作抽象成一个独立的数据结构。 标准定义 在一些应用问题中,需要将n个不同的元素划分成一组不相

2017-11-25 17:44:47 9237 3

转载 C++中不应该返回局部变量的地址

在Effective C++中明确指出:不应该返回局部变量的引用,原因在于:局部变量会在函数返回后被销毁,因此被返回的引用就成为了”无所指”的引用,程序会进入未知状态。如果比较理解函数局部变量的作用域和生命周期,那么这一点很好理解。在C++中,实际上引用和指针类似,都是变量的实际存储地址。既然不能返回局部变量的引用,如下所示,这样做是不合理的:int &getRefer() { int

2017-11-24 19:20:15 2297

原创 C位字段简单总结

About… C里面的位字段十分有用和强大,想位操作符一样,也是一种直接对数据位operator的一种方法。在《C Primer Plus》一书中,对位字段的解释十分具体和彻底。这里主要对书中内容做一些摘要和总结。位字段!What? 位字段(bit field)是一个unsigned int或signed int中一组相邻的位。位字段由一组声明结构建立,该结构声明为每个字段提供标签,并且决定字段

2017-11-22 17:54:31 3178 3

Python数据处理

Python数据处理.pdf Python数据处理.pdf Python数据处理.pdf

2018-08-17

计算机网络——自顶向下方法与Internet特色.pdf

计算机网络——自顶向下方法与Internet特色.pdf

2017-06-24

空空如也

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

TA关注的人

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