自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 收藏
  • 关注

原创 制作自己的软渲染器(二) 顶点缓冲与插值

在实时渲染过程中,我们最主要处理的对象就是顶点和片元。顶点是预设的,而片元的属性是我们通过顶点插值得出的。一个模型通常拥有一定规模的顶点,它们之间有一个最简单最重要的联系——哪些点是组成同一个三角形的。如果我们要进行多三角形的光栅化渲染,把这些数据组织好是很有必要的。

2022-09-20 22:32:35 548 1

原创 从零开始编写自己的 C++ 软渲染器(一) 线与三角形的绘制

一个重写自己软渲染器的记录

2022-09-20 00:05:51 1787

原创 2022“杭电杯”中国大学生算法设计超级联赛(2)个人题解

2022“杭电杯”中国大学生算法设计超级联赛(2)部分题解

2022-07-23 17:11:58 812

原创 我使用 Windows API 制作方舟同人游戏的方案废弃了。

现在尝试加入敌人。与干员不同的是,敌人这种角色是要多次生成,且能随机生成的,肯定不能为 static.不过我暂时不打算为敌人增加什么技能,所以全部可以按一个模板来生成,只需要给出不同的贴图和数据即可。为了正确的交互,地图上的 MapElement 用于显示贴图,并在玩家与敌人相遇时发送信息让 SideBar 来处理战斗。添加一个函数用于加载 Thug 这个敌人(暴徒)。一周多没有动这个工程,现在看来思绪乱如麻。更不用说贴图的优化特别差(只是之前的内容都能占用 30% 左右 CPU,i7-1065

2022-02-25 16:22:10 2817 4

原创 从零开始用 Windows C++ 桌面程序制作方舟同人游戏(五)

一、角色信息的定义与绘制继障碍物后,重要的就是要把敌人加进来。敌人加进来之后需要与其进行战斗。而战斗则与属性等数值挂钩。我们需要建立侧边栏,实时显示出角色的数值来监测战斗。因此,现在我们的任务是将 SideBar 类实现一部分。再看一看 SideBar.h:class SideBar{ std::vector<COperator> operators; // 当前干员 COperator currentOperator; // 当前出战的干员 int ingot; // 源石锭

2022-02-17 12:27:29 4994

原创 从零开始用 Windows C++ 桌面程序制作方舟同人游戏(四)

一、添加背景音乐使用很简单的 mci 来添加背景音乐:首先打开 framework.h, 在末尾添加如下代码:#include <mmsystem.h>#pragma comment (lib, "winmm.lib")添加一个头文件,并链接一个库。这样我们就可以使用 mci 播放器了。在 gameInit() 中添加:mciSendString(L"open 熏陶.mp3 alias music1", NULL, 0, NULL); mciSendString(L"p

2022-02-13 15:26:33 2908 5

原创 从零开始用 Windows C++ 桌面程序制作方舟同人游戏(三)

一、将贴图信息整合到类中承接上文,在完成地图绘制之后,现在的地图还仅仅只是一块图片而已。我们要将其与地图元素类 MapElement 绑定起来。这里我的想法是,在窗口的显示部分,要有一套完整的贴图用于画面表现。同时也有一套完整、抽象出来的游戏系统,比如发生战斗时,后台要计算攻击伤害,执行一系列函数;而窗口则要显示战斗动画。因此应该画面显示绑定到游戏逻辑中。(当然,只是自己探索过程中粗浅的理解,或许其实看起来很好笑很不严谨呢?读者随便看看就好)沿着这个思路,我们对上一章的地图绘制进行修改。注意到在第一章

2022-02-12 13:18:42 2077 1

原创 从零开始用 Windows C++ 桌面程序制作方舟同人游戏(二)

现在实现地图贴图。因为没有拿到手绘板,所以用随便做了两个材质用于测试: ground0.bmp ground1.bmp 再次看源文件 PhantomAndCrimsonSolitaire。其消息循环使用的是 GetMessage:while (GetMessage(&msg, nullptr, 0, 0)) { if (!TranslateAccelerator(msg.hwnd, hAccelTable, &m

2022-02-11 12:27:00 661 1

原创 从零开始用 Windows C++ 桌面程序制作方舟同人游戏(一)

前言阅读本博客的前置技能:C++ 基础好像没了 qwq为什么开这个坑很惭愧,虽然每每想要认真的做一个游戏 demo 时,我要么只是停留在了纸面描述上,要么只是建了几个新类,用一个又一个框架/引擎新建工程,做了一些很简单的东西,却从来没有做出来过一个完整的游戏(控制台游戏除外哈哈)。所以乘着对 Windows 桌面程序学习的势头,在此再开一坑,希望不要再浅尝辄止,做出一个能玩的完整 demo. 并同时把开发过程完完整整地记录下来,并将疑惑不解或者是有理解的地方讲出来,加深印象,也帮助他人. (虽

2022-02-08 20:32:08 7286 8

原创 《WINDOWS游戏编程之从零开始》第五章学习笔记

原本粗略浏览了这一章节,就又去自己找图片素材了…找到一半发现贴图不太好找原图,但是不想抠图,也不想用糊图,结果我下回了《美少女万华镜 4》(甚至忍不住玩了一会,剧情还是大赞的),并看了一圈 galgame 解包的教程,最后还是最方便的 GARbro 随随便便就解了 OMG. 忙活了不知道多久,并获得了很多高质量 CG、音效以及立绘。嘿嘿……回归主题。本章讲的是透明贴图。5.2 透明遮罩透明遮罩用一个黑白图和一个素材图。另外还有一个背景图。黑白遮罩图与背景图做与运算,就在背景上得到一个黑色人物轮.

2022-02-06 00:00:11 1290

原创 《WINDOWS游戏编程之从零开始》第四章学习笔记

GDIGDI 有一些基本函数和图形定义。总之,其就是一些数据结构、函数和宏组成的整体。而各种各样的函数都逃不开一个概念——设备环境 DC.4.2 设备环境一个设备环境,就是程序中一个可以进行绘图的地方。也就是“客户区”。在 GDI 图像输出时,我们只需要关心设备环境的类型。而要确定设备环境的类型,创建一个相应类型的句柄即可。(不得不说 C++ 的句柄设计的挺好的)4.2.2 获取 HDC (设备环境句柄)使用 BeginPaint 与 EndPaint在微软文档中查到这两个函数的原型:

2022-02-05 15:28:43 2145

原创 《WINDOWS游戏编程之从零开始》第三章学习笔记

个人整理的笔记,比较杂乱,可能并不是很适合阅读:)MessageBox 函数其四个参数分别为:HWND 类型的 hWnd, 表示窗口句柄;HWND 是什么类型?简单说就是给窗口分配的句柄。(废话啊啊啊)总之就用其代指一个窗口LPCTSTR 类型的 lpText,表示消息内容;LPCTSTR 类型的 lpCaption,表示消息框标题内容;UINT 类型的 uType,表示消息窗口的样式PlaySound 函数其三个参数分别为:LPCTSTR 类型的 pszSound,指定声

2022-02-03 23:50:11 2081

原创 Treap学习笔记及模板

Treap是平衡搜索树的一种。所谓 “Treap”,即 “Tree” + “Heap”, 顾名思义,是使用堆方法对搜索树进行平衡的一种数据结构。约定该篇文章讨论的二叉搜索树都遵守 “比当前节点值大的节点在右子树,小于等于当前节点值的节点在其左子树” 这一规定。Treap维护平衡的方式Treap的目的主要是利用堆的性质来平衡原搜索树。因为堆是一棵完全二叉树,深度最优嘛。对于一棵普通的二叉搜索树,我们对其每个节点再随机赋上一个优先级权值 ppp. 即对任意节点,多了一个变量 p=random()p=ra

2021-12-14 14:39:29 248

原创 Codeforces 1585D. Yet Another Sorting Problem

每次可以选数组中三个元素进行轮换,也就是将三元组“左移”或者“右移”,将 a,b,ca,b,ca,b,c 变为 b,c,ab,c,ab,c,a 或 c,a,bc,a,bc,a,b.可以证明,如果我们看每个元素的下标的话,这样的操作对下标一定是一个偶排列。粗略证明:只考虑 a,b,ca,b,ca,b,c,显然每次变换逆序数都是 ±2\pm2±2 的。考虑交换的三元素之间有其他元素,用 a,xm,b,ca,x_m,b,ca,xm​,b,c 表示,其中 xmx_mxm​ 表示 a,ba,ba,b 之间还有

2021-12-13 11:26:24 596

原创 Codeforces1609D - Social Network, Deltix Round, Autumn 2021

解析刚开始看以为就是个直接并查集我说怎么这也1600,奇了怪了,然后发现题读错了(官方题解说复杂度是O(nlog⁡n)O(n\log n)O(nlogn)(没看),这里给出一个复杂度为 O(n2log⁡n)O(n^2\log n)O(n2logn) 的蒟蒻题解(反正 n≤1000n\le 1000n≤1000)首先对于一个并查集,不管其内部怎么连通都不会改变其外部性质,所以题目要求的 maximal number of acquaintances one person can have 其实也就是并查

2021-12-09 21:12:27 284

原创 快速傅里叶变换(FFT)及快速数论变换(NTT)入门笔记

个人博客同步食用~本博客学习于洛谷P3803各路大佬题解,所以你肯定会找到很多相似的地方QWQ什么是FFT傅里叶变换傅里叶说明了:一切函数/波形都可以用有限或无限个弦函数/波形叠加形成。例如,现在有一个由三个不同正弦波组成的近似矩形波,将这些波形关于 xxx 轴平行地放在一起,就可以得到下图:其中红色的是合成出来的近似矩形波。(当然,图肯定是不太标准的,意思一下就行)从 xOzxOzxOz 平面看,我们可以获得各个波的时域信号,也就是 t−f(t)t-f(t)t−f(t) 图像。而从 zO

2021-11-28 19:42:32 696

原创 Codeforces Round #747 (Div. 2) 个人题解

上蓝了!A. Consecutive Sum Riddle题意给一个nnn,你需要构造一个整数区间[L,R][L,R][L,R],其和等于nnn分析取[−n+1,n][-n+1,n][−n+1,n]即可。B. Special Numbers题意给出一个 nnn , 另一个数 mmm 如果可以表示成 nnn 的不同幂次之和,则称 mmm 是 special 的。现在给出 nnn, 将所有 special 的数升序排序,问第 kkk 个数是多少。分析假如一个数是 n0+n1+n4n^0+n^

2021-10-09 12:58:52 396

原创 Educational Codeforces Round 114 (Rated for Div. 2) 个人题解

中秋节快乐!A. Regular Bracket Sequences题意输出nnn个不同的长度为2n2n2n的合法括号序列.分析先输出一个"()()()…"序列.然后依次输出"(())()", “()(())”,…,也就是每次把第iii个和第i+1i+1i+1个交换,其中iii从下标2到n-2,这样恰好n−1n-1n−1个,加上最开始的共nnn个。代码#include <bits/stdc++.h>#define fors(i, a, b) for(int i = (a); i

2021-09-21 12:38:31 193

原创 Educational Codeforces Round 113 (Rated for Div. 2) 个人题解 ABCD

A. Balanced Substring题意从给定的ababab串中找到任意一个a,ba,ba,b数量相等的子串并输出。如果找不到输出−1−1-1 -1−1−1.分析如果一个较大的子串符合要求,则其中必然出现"ababab“或者”bababa",故只找这两种串即可。另外n≤50n\leq 50n≤50,随便你怎么暴力。代码#include <bits/stdc++.h>#define fors(i, a, b) for(int i = (a); i <= (b); ++i

2021-09-09 10:14:49 279

原创 Codeforces Round #742 (Div. 2) 个人题解

A. Domino Disaster2分钟签到#include <bits/stdc++.h>#define fors(i, a, b) for(int i = (a); i <= (b); ++i)#define lson k<<1#define rson k<<1|1#define pb push_back#define lowbit(x) ((x)&(-(x)))#define mem(a) memset(a, 0, sizeof(a)

2021-09-06 09:59:03 277

原创 Educational Codeforces Round 112 (Rated for Div. 2) 个人题解

Educational Codeforces Round 112 (Rated for Div. 2)

2021-07-31 10:46:14 329

原创 分块算法:莫队(持续更新)

分块,然后捡到莫队前言HDU多校连续两天都遇到了莫队的题,于是蒟蒻缓慢地开始学习莫队算法初见莫队,只知道是个离线区间工具,以为会有点复杂。但其实基础的莫队很好理解,就是一种读完之后感觉很普通的离线的分块算法(虽然,我还是不可能想得到就是了)分块算法为了引入莫队,不妨先看一个分块的经典例题(不想看可以通过目录跳过)洛谷P3870 开关简化题意:一个01序列,要求可以进行动态区间取反和区间查询(有几个1)数据规模1e51e51e5普通莫队...

2021-07-26 15:09:19 309

原创 2021“MINIEYE杯”中国大学生算法设计超级联赛(1)个人解题报告

只有几个简单的题,估计没有大伙想看的

2021-07-21 17:27:41 304

原创 Educational Codeforces Round 111 (Rated for Div. 2)

A. Find The Array题意要你构造一个长度为nnn的数组,每个元素aia_iai​满足:ai=1a_i=1ai​=1ai−1a_i-1ai​−1或者ai−2a_i-2ai​−2存在于数组中现在要你构造一个元素和为sss的数组,问最短长度为多少分析贪心,让数组元素尽量大,但是因为ai−2a_i-2ai​−2必须在数组中,所以构造的是1,3,5,7,...1,3,5,7,...1,3,5,7,.... 最后一个数如果溢出可以将其减小至和恰好为sss,不影响性质。代码#inclu

2021-07-15 09:05:19 213

原创 Codeforces Round #732 (Div. 2)

C被叉了呜呜呜A. AquaMoon and Two Arrays题意给一个可操作数组aaa和一个目标数组bbb,每次操作选aaa中两个元素,将其中一个−1-1−1,另一个+1+1+1. 但要保证所有元素一直是非负的。问有没有可能把aaa变成bbb。如果可以,输出你的操作步骤。数据保证sum{a}≤100,n≤100sum\{a\}\leq 100, n\leq 100sum{a}≤100,n≤100,不要你操作次数最少,但要小于100100100次.分析既然要小于100次等于还是得控制,这不还

2021-07-12 09:07:48 374

原创 Codeforces Round #730 (Div. 2) A~D1 题解

康复训练.jpgA.Exciting Bets题意给出两个数a,ba,ba,b,每次操作可以:a++;a–,b–.问在任意次操作后最大可能的gcd(a,b)gcd(a,b)gcd(a,b)是多少,且问得到这个结果至少需要操作几次.分析根据定理gcd(a,b)=gcd(a,a−b)gcd(a,b)=gcd(a,a-b)gcd(a,b)=gcd(a,a−b),由于a−ba-ba−b不变,找到离aaa最近的a−ba-ba−b的倍数即可.代码#include <bits/stdc++.

2021-07-08 09:39:55 399

原创 高等数学期末复习——知识点梳理

向量代数与空间解析几何向量混合积:$(a × b)· c $定义PrjxaPrj_x aPrjx​a为a到x的投影可用于计算六面体体积。另:三维向量叉乘:$$(a_x,a_y,a_z)×(b_x,b_y,b_z)= \left|\begin{array}{cccc}i & j & k \a_x & a_y & a_z\b_x & b_y & b_z \end{array}\right|$$平面方程:点法式.A

2021-06-26 15:18:06 2935

原创 数据结构期末复习——二叉平衡树(AVL树)的旋转

平衡树要记得计算平衡因子。平衡因子为当前节点为根节点的子树的左右子树高度差。插入、删除都会改变平衡因子。顺着操作的节点向上找到第一个平衡因子大于1的节点,经过的路径即为最小不平衡子树。最小不平衡子树最多只有3个节点。通过如下的旋转可以达到平衡的目的:单旋最简单的情况是,子树呈一条直线。将中间的“拎起来”即可。双旋由于搜索树的性质,当不平衡子树出现“弯折”时,直接将中间的“拎起来”会破坏搜索树“左小右大”的性质。此时通过交换,将3个节点中大小处在中间的节点放到中间的位置,再由“左小右大”的性

2021-06-19 22:21:30 239 2

原创 数据结构期末复习——哈希表

哈希表哈希表通过哈希函数为各个值重新分配物理索引,哈希函数通常与取模密切相关。例如,给定哈希函数index=key mod max_sizeindex= key \space mod\space max\_sizeindex=key mod max_size,其中max_sizemax\_sizemax_size为哈希表的存储容量。假若容量为15,则哈希函数为f(x)=x mod 15f(x)=x \space mod \space 15f(

2021-06-17 20:14:48 300

原创 Educational Codeforces Round 110 (Div. 2) 个人题解 A~D

C题过得确实有点惊险哈,快1:57才过,只剩三四分钟了……A. Fair Playoff题意给a,b,c,d四个人的能力值,然后a,b较量,c,d较量,赢的人再进入决赛。问决赛的两人是不是能力值最大的,是就公平,不是就不公平分析嘛,怎么写都可以吧给一份相对复杂的代码#include <bits/stdc++.h>#define fors(i, a, b) for(int i = (a); i <= (b); ++i)#define lson k<<1#de.

2021-06-05 11:20:30 311

原创 Codeforces Round #723 (Div. 2) 个人题解

上1400辣!A. Mean Inequality题意给一个长度为偶数的数组,你需要重排这个数组,使得任意一个数不等于他前后两个数的平均值。分析只需保证数组元素为 小 - 大 - 小 - 大,则两个小的平均值一定不为大,两个大的平均值一定不为小。这个条件的构造方法很多,可以排序后奇偶位互换,也可以排序后分成前半和后半,然后轮流输出。代码#include <bits/stdc++.h>#define fors(i, a, b) for(int i = (a); i <= (b

2021-05-29 12:26:27 632 5

原创 Codeforces Round #722(Div. 2)

Codeforces Round #722 ABCD题题解

2021-05-25 20:40:21 285

原创 Educational Codeforces Round 109 (Rated for Div. 2) 个人题解

好毒的场啊,2万人只有1000左右过了3题+…… (目前只有ABCD)

2021-05-16 22:33:16 459

原创 ACM-最短路径算法(Dijkstra、SPFA、Floyd)及模板

引入在大城市C,道路交通网络错综复杂,你因为有急事需要从A处赶往B处。一路上有若干个路口。你已经预知了各个相连的路口之间的预计通行时间,且A和B是连通的。那么你要怎么来选择你要走的路线,来让你可以最快地到达B呢?该问题是经典的单源最短路问题,给定一张带权图(可以有向,也可以无向),标定起点和终点,你的目标是求出起点到终点的最短距离。在求解最短路之前,我们首先约定,给定的图一定是不带负环的。带负环图显然没有最短路。算法Bellman-Ford/SPFABellman-FordBellman-Fo

2021-05-07 20:48:40 837 3

原创 Codeforces Round #715 (Div. 2) A ~ D

Codeforces Round #715 (Div. 2) A ~ D个人博客版:http://www.noobzyk.top/?p=692A. Average Height分析堪比div3 A的水题代码/** * @file :vsDebug2.cpp * @brief : * @date :2021-04-16 * @Motto :Love Sakurai Yamauchi Forever */#include <iostream>#

2021-04-18 17:48:02 394

原创 Codeforces Round#713 A-E题解

经典暴力模拟掉分场

2021-04-11 20:00:59 240

原创 Unity练习 开发日志(二)

目录前情提要搭建地图障碍物碰撞触发器实现攻击效果人物行走动画前情提要开发日志(一)概括讲述了从0开始的过程,也就是走准备 开发环境 ->学习C#基础 -> 熟悉Unity基本操作 -> 开始实战演练的步骤。实战选择自己设计一个简单的2D RPG游戏。而到3月13日,初步实现了人物的行走与Tilemap背景。搭建地图障碍物碰撞触发器实现攻击效果人物行走动画...

2021-04-06 15:19:33 156

原创 ACM 计算几何基础模板

在ACM计算几何中,我们常常重复用到许多方法,例如求点距,求直线方程,等等。不妨利用模板总结之。这些模板为我从网上学习后加入自己的理解糅合得来qwq,看了很多的博客,查了很多书籍,其中印象最深的是林夕林夕关于计算几何模板的总结,大家也可以去参考他的应该比我的更详细qwq(不过大佬最近好像出没比较少了)所以我这个主要还是留着自己参考吧,能帮到他人再好不过了为了不产生歧义,方便理解,本模板使用笛卡尔坐标系,封装的多是数学中常见的函数。前置知识:高中数学文章目录基础声明点向量直线基础声明首先,打acm

2021-03-25 17:21:47 1181 4

原创 Unity练习 开发日志(一)

Unity2D从零开始的开发历程……慢慢积累.

2021-03-15 00:20:14 379

原创 从树到并查集,再到最小生成树(详细)

并查集是什么?最小生成树是什么?

2021-02-06 22:04:11 293

空空如也

空空如也

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

TA关注的人

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