自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Peerlessbloom

莫茗琪妙

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

原创 C++黑魔法系列2: lvalue, move constructor, copy and swap

介绍了左值&右值move语意copy and swaprule of 5

2017-08-15 20:43:02 1505

原创 C++黑魔法系列1:进击的define

本节主要讲define的两个用法:## 和 宏展开1. ####的作用是连接两个参数。例如对于下面的宏定义#define CONCAT(X, Y) X##Y调用将得到ab:CONCAT(a,b) #ab有什么高级用法呢?可以自动生成类#define AUTO_GEN_CLASS(Name)\ class Name\ {

2017-07-11 21:45:37 789

原创 网易游戏两年小结

最近因为找工作,又开始撸博客了。放了一些没有发布到网易内部的文章上来。在网易游戏工作了两年,才算是刚入门而已,因为个人原因,打算去上海了。网易游戏是什么样的公司?通过我的观察,网易游戏是一个十分开放的平台,你能发展成什么样完全靠自驱。平台上有许多资源,各个方面的都有,大神也有很多。我遇见过工作很久专业技能一般的员工,也遇到过一进来就大放异彩的员工。总体来说,程序员的水平都挺高(

2017-06-16 12:39:15 1093

原创 part 8: comparison between OOL and FL

OOP和函数编程的区别表格:行是operation,列是variant函数编程:     每个operation都是一个函数,每个函数都有若干branch,每个branch都对应一个variant     定义datatype,每个variant都对应一个constructor面向对象编程:     定义一个基类,每个operation是一个类函数,基类中的函数是抽

2017-05-25 14:51:16 499

原创 [OOL]part 7: 基本概念

纯面向对象语言: Ruby1.纯面向对象语言:所有的值都是对象2.class-based: 对象都是类的实例3.mixin4.dynamically typed5.reflection6.有blocks和closures7.是scripting language: 写小程序,性能相对差duck typing: If it walks like a d

2017-05-25 14:48:13 579

原创 [dynamic FL]part 6:comparison between Dynamic and Static

各种语言的比较:Dynamic type language VS Static type language:     Dynamic看待Static: ML好像只是Racket的子集。ML会拒绝更多程序, 可能有bug的也可能是没有bug的。     Static看待Dynamic: Racket好像只是ML的子集,所有的表达式都属于某一个大的数据类型,并且有很多子类型,这些类型有类似

2017-05-25 14:45:09 374

原创 [dynamic FL]part 5:基本概念

Racket: 动态语言,而非静态Racket和Scheme同源,来自LISP。可以讲任何类型的数据放在任何相仿的地方Racket由一组definition组成,括号用来求值e并调用函数。     括号内可以有atom: 包含特定值,变量和关键字(define lambda if)。     所有的东西都是前缀形式,如2+3=>(+ 2 3)(t1 t2 …):如果t1

2017-05-25 14:42:46 449

原创 [static FL]part4: expression

let expression: let b1, b2... in e end     bi是biding     定义局部变量     scope of binding: 在let中定义了该binding之后,以及e中都可以使用这个binding     let的类型就是e的类型     inner binding shadow outer ones     let 也可以

2017-05-25 14:30:07 250

原创 [static FL]part3: type

pair type: (e1, e2)     typing: t1*t2, t1,t2分别是e1和e2的值     取值:#1, #2     可以nest,但是只能有两项tuple type:(e1, e2...)     类似pair,本质是record     和record(by name)比,是by position, 顺序是有意义的     语法糖

2017-05-25 14:29:34 289

原创 [static FL]part2: binding

variable binding: val x = eval: keywordx: variablee: expressionv: value(不需要做多余计算的表达式)t: typefunction binding: fun x0(x1: t1, x2: t2...) = e    typing:          static environment o

2017-05-25 14:28:44 417

原创 [static FL]part1:基本概念

函数式语言:F#是ML的一个变种,在.net平台上运行; 其他的还有Haskell, OCamlML:static functional language函数编程:1. immutable data; 2. function as valueML是一系列的binding,如果一个binding type-checked(类型检查通过)就evaluate(求值)binding的类

2017-05-25 13:59:26 440

原创 声明

本系列来自UW的CSE341系列,是很有趣的函数式编程入门。无论你是否打算使用函数式语言,学习了解它都是可以开拓思路的~推荐CSE341: Programming Languages, Winter 2013

2017-05-25 13:27:08 274

原创 最小生成树----Kruskal算法&并查集

对于图寻找最小生成树顶点v使用并查集,初始状态下所有顶点都是一个集合。Kruskal算法描述:取最短的边,比较是否两个顶点都在同一集合内:如果都在,则舍弃初始化时,v长这样v = [i for i in xrange(0, length)] 并(i, j)的操作就是合并两个集合的跟:r_i = find_root(v, i)r_j = find_root(v, j

2017-05-25 13:20:24 585

原创 最小生成树----Prim算法+loose操作

对于图求最小生成树Prim算法中,有两个顶点集合:v和u,一个边的集合:ev:e中的顶点u:all - ve:存放所有已选的边算法描述:从所有边中取最短的边e(i,j),i属于v,j属于u。将e(i,j)放入e中将j从u中放入v中在写算法的过程中,增加了数据结构waiting_edge,存放所有(v,u)点对def prim(graph): v =

2017-05-24 21:26:28 417

原创 最短路径算法----Bellman-ford和SPFA算法

思路类似Dijkstra,可以处理负权边,还可以发现负权回路。核心也是:对于边e(i,j), 如果w(i) + e(i,j) wiki)对于图有def bellman_ford(graph, start_node): # graph:n*n matrix # find min distance from start_node length = len(graph)

2017-05-24 17:10:35 767

原创 最短路径算法----Floyd-warshall(十字交叉算法证明)

Floyd不同于Dijkstra,可以得到所有点对的最短路径。使用的是DPFloyd可以处理有负权重边的情况递推公式:w(i, j) = min{w(i, j), w(i, k) + w(k, j)},含义是【i到j的最短距离】=【i到k的最短距离+k到j的最短距离】与【i到j的最短距离】中较小的那一个看起来很简单,但是具体怎么计算呢?依旧使用这个例子,图的表示方式为:

2017-05-24 12:25:31 3664

原创 声明

本系列出自 ISBN: 9787121222887 的部分章节总结感兴趣的读者请支持正版,购买此书,谢谢

2017-05-23 16:13:14 302

原创 游戏引擎架构----动画

1.角色动画类型  赛璐璐动画(cel animation):基于帧的,电子版本为精灵动画(sprite animation),可以设计成循环动画(looping animation)   刚性层阶式动画(rigid hierarchical animation):可能在关节处产生裂缝  每顶点动画(per-vertex animation):网格添加动画,数据密集  变形目标动画

2017-05-23 16:09:40 1101

原创 游戏引擎架构----数学基础

1. 点和矢量坐标:笛卡尔坐标:多个相互垂直的轴构成的,笛卡尔基矢量          圆柱坐标系          球坐标系左右手坐标系:大拇指、食指、中指分别是x,y,z轴矢量和点的区别:矢量相对于某个已知点的便宜,一个矢量可以移到三维空间中的任何位置,都是同一个矢量。点是绝对的,矢量是相对的矢量运算:和标量的乘法          加法(应用:显示欧拉法求位置)、

2017-05-23 16:08:23 638

原创 游戏引擎架构----渲染

1. 场景描述1.1 表面建模     矩形面片的表示:贝塞尔曲面、非均匀有理B样条、N面片     细分曲面(subdivision surface)     三角网格     =>固定镶嵌(tessellation)     =>动态镶嵌:细分曲面 or LOD:level of detail 物体与虚拟摄像机的距离的缩减而增加面片个数,最近的为LOD0   

2017-05-23 16:07:30 1744

原创 游戏引擎架构----物理部分

1. 碰撞检测系统物理世界形状:相交、接触(分离矢量,沿该矢量运动就能高效脱离碰撞妆容)、凸(由形状内发射的光线不会穿越形状两次以上)原型:球体、胶囊体、轴对其包围盒AABB、定向包围盒OBB、离散定向多胞形discrete oriented polytope DOP、任意凸体积、多边形汤(碰撞引擎必须和每个三角形测试)、复合形状碰撞测试:点

2017-05-23 16:05:12 1160

原创 最短路径算法----Dijkatra

题目描述:对于上图中某个点i,求其他所有点和它的最近距离适用于:没有负数边的情况;有向图、无向图都可以使用该算法数据结构:可以使用二维矩阵代表图、也可以使用数据结构描述graph算法:用到的数据集合:s(点k到点i最近的距离), u(不在s中的其他点到i的距离)算法描述:取u中距离最近的点j,加入s对于和j相邻的点,更新u中的距离def dijkstra(g

2017-05-23 10:58:17 906

原创 找钱方式升级版:求队伍组合

在做游戏匹配算法的过程中,我遇到一个有趣的算法,可以说是“找钱方式”的升级版题目描述如下:已知游戏中一方人数为x个人,组队上限为y人,求满足x的所有队伍组合。比如 x = 3, y = 2结果应该为[{1:3}, {1:1, 2:1}]。就是1个人的队伍3个,或者1个人的队伍1个&2个人的队伍1个;这两种组合可以得到3个人。抽象:com(x) = sigma(f(i

2017-05-19 17:33:59 384

原创 C#总结

ref http://www.w3cschool.cc/csharp/csharp-generic.html     https://msdn.microsoft.com/zh-cn/library/aa288460(v=vs.71).aspx     http://blog.csdn.net/hawksoft/article/details/7534332using数组:

2015-03-05 13:03:07 1233 1

原创 Lua总结

ref http://book.luaer.cn/基础弱类型,没有类型定义解释型语言,但是会通过编译器先编译成中间码然后再执行字符串的处理:用table保存,最后table.concat(t, "\n") .. "\n"。防止..引起的性能问题注释: --块注释:—[[ ]]没有++,+=打印:print(a, b, c, “”, 1)字符串:’或者“均可或者[[包含’

2015-03-05 13:02:36 1488

原创 研究生生活总结

昨天刚刚办妥各种手续,下面只要等待领证~\(≧▽≦)/~啦啦啦。回想两年半的研究生生活,从现在告一段落。最初选择读研是因为有保研的机会,加上感觉还没准备好工作,所以选择了一个离家比较近的城市读研顺便为以后找工作做准备。先说说当时选择交大而不去浙大的原因吧:当时由于正好在实习,所以问了公司里许多senior的同事寻求答案,他们都认为交大的机会更多一点,因为在上海找工作会更方便

2015-01-17 16:25:56 1607 1

原创 Python的两件小事----函数式编程&类实例

函数式编程语言http://program-think.blogspot.com/2012/02/why-choose-python-4-fp.html纯函数:输出完全依赖输入的函数,不能读写外部变量、没有IOPython中的相关内置函数:1. map(函数,迭代器)     将迭代器中的所有内容依次传递给函数,并返回一个迭代器     可以是list...

2014-12-18 11:06:32 1061

原创 语言类型

编译型:通过编译器编译成可执行文件               或者通过编译器生成多个目标文件,一个模块会对应一个目标文件,最后由链接器生成可执行文件、               一次性将所有代码转换成机器码               速度快               C++解释型:程序运行前一刻,还只有源程序没有可执行程序,当运行到某一行时,由一个解释器的外壳将该内容转

2014-12-07 22:42:02 624

原创 Python的感悟笔记

杂项没有++, --event.keysym =>得到按键的名称字符串没有++, --控制流for...elsewhile...else

2014-12-04 23:58:39 2023

原创 Python逃生游戏

从上看到的例子,小人在石头上跑跳直到达到门我做了以下改进:1. 模块化:helper.py 含有基类以及碰撞检测函数man.py 小人door,py 门stone.py 脚踩的石头game.py 主函数,初始化canvas,游戏主循环2. 修复一个Bug,原先人踩在石头上会掉下来if btm and falling and self.y == 0 \and (co.

2014-11-29 12:17:55 4514

原创 Python弹球例子

弹球1. Ball 类draw负责移动Ball 碰撞检测,反弹,Ball检测Paddle2.Paddle类draw负责移动Paddle碰撞检测,确定能不能继续监听键盘事件3.主循环绘制Ball和Paddleupdatesleep代码from Tkinter import *import randomimport time

2014-11-26 12:27:43 1536

原创 Python学习总结

Python中空白符是有意义的,当代码处于同一缩进时,形成代码块语句结束没有分号基础部分1. 变量不需要声明类型2. 字符串‘abc’ 或者 " abc"‘’':可以含有回车,’,",的字符串字符串占位符:k = ”a%s%s”=>拼接:k % 1//只有一个%s

2014-11-22 17:51:32 1681

原创 Objective C 以及 Xcode的总结

大纲公有、私有类方法、对象方法对象用指针、原始类型强指针、弱指针发送消息初始化:init dealloc alloc release retain +1语法细节1. for(xx in array)2. @[xx,xx]数组 @{key:v,

2014-11-19 21:51:28 520

原创 找钱方式:递归,循环的解法

题目:给定一个金额m,以及几种钱币面值(比如1,2,5),求m有多少种找钱方式解答:a(m, c): 金额m的找钱方式,此时最大钱币面值为ca(m, c) = sigma( a(m - k*c, next_c) ); k=0~m/c, next_c=比c小的下一个面值的钱币,比如c=5, next_c = 2按照以上递推式,可以写出递归函数:int exchangeWays(i

2014-10-15 12:34:17 1509

原创 Palindrome Partitioning I,II[leetcode] DFS以及DP的解法

第一种方法是DFS,将所有可能的前缀找到,递归调用partition(剩余字符串)复杂度为O(2^n)代码如下: vector> partition(string s) { vector> res; vector patition; if (s.size() == 0) return res; partition(s

2014-10-09 23:01:38 1074

原创 Best Time to Buy and Sell Stock I,II,III [leetcode]

Best Time to Buy and Sell Stock I只能作一次操作时:维护preMin记录之前出现的最小值代码如下: int maxProfit(vector &prices) { if (prices.size() == 0) return 0; int profit = 0; int preMin = prices

2014-10-09 21:09:04 769

原创 Binary Tree Maximum Path Sum [leetcode] dp

a(i):以节点i作为终点的单边最大路径和b(i):以节点i作为终点的双边边最大路径和a(i) = max{ i->val,i->val + max{a(i->left), a(i->right) }};b(i) = max{ i->val, i->val + max{a(i->left), a(i->right) } ,i->val + a(i->left) + a(

2014-10-09 18:52:44 748

原创 Word Ladder II [leetcode]

本题有几个注意点:1. 回溯找路径时,根据路径的最大长度控制回溯深度2. BFS时,在找到end单词后,给当前层做标记find=true,遍历完当前层后结束。不需要遍历下一层了。3. 可以将字典中的单词删除,替代visited的set,这样优化以后时间从1700ms+降到800ms+代码如下:class Solution {public: vector> findLa

2014-10-09 17:45:54 839

原创 Gas Station [leetcode] 的两种解法

由于gas总量大于cost总量时,一定可以绕所有城市一圈。第一种解法:假设一开始有足够的油,从位置i出发,到位置k时剩余的油量为L(i,k)。对任意的k,L(i,k)根据i的不同,只相差常数。我们只需要找到最小的L(0, k)对应的k,k+1为所求。代码如下: int canCompleteCircuit(vector &gas, vector &cost) {

2014-10-08 23:21:15 858

原创 Clone Graph [leetcode] dfs和bfs

变量unordered_map cloneMap;DFS: UndirectedGraphNode *cloneGraph(UndirectedGraphNode *node) { if (node == NULL) return NULL; if (cloneMap.find(node) != cloneMap.end())

2014-10-08 21:35:51 666

MFC tree 使用实例

MFC treeview使用实例,可以看到c,d,e.....盘里的文件

2009-09-24

空空如也

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

TA关注的人

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