C++关联容器 1.关联容器是通过关键字来保存和访问数据的。关联容器分为两大类:map和set。其中,map是通过键值对来操作的,这里的键就是关键字,值就是对应的数据。例如:map m;定义了一个空的map变量m,它的关键字类型是int,关键字对应的值的类型是int。可以将map理解成为函数,关键字是自变量,关键字对应的值是因变量。set,这是一个集合类。它的关键字和值是相同的。也就是说定义了一个se
cocos2dx读取excel文件 这一部分知识,我们会来简单的介绍一下cocos2dx的相关源码。但是这里需要了解一下函数模板,类模板,而且还有关联容器中的pair容器的相关知识。首先说明,我们将源码分享到了下载频道,需要的话,可以去下载跑跑
遗传算法在游戏中的应用——y=x^2 通过上一篇文章的讲解,应该大概了解遗传算法的大概。这一篇我们来讲解简单遗传算法SGA中的一个例子:Y=x^2。通过这个例子,我们就可以清楚的知道,遗传算法是怎么操作的。编译环境:VS2012,c++11主函数:#include "stdafx.h"#include"math.h"#include"SGA.h"int _tmain(int argc, _TCHAR* argv[]
遗传算法在游戏中的应用——概述 遗传算法,乍一听很高端,好像和生物学结合的很紧密,挺难得样子。其实,遗传算法只是借鉴了生物进化的一些思想和概念,然后将它用到我们软件开发中,在这里就是我们游戏开发中。这一系列的博客,我打算分这么几篇和大家来分享遗传算法在游戏中的应用。首先,介绍一下什么是遗传算法和它的一些基本概念。然后和大家讲一讲一个遗传算法入门级别的例子:y=x^2的例子,让大家来熟悉一下遗传算法的一个操作流程。然后分享一下
设计模式——单例模式 在项目开发过程中,如果我们当且仅当,只需要实例化一个对象,我们就需要使用单例模式。就像在足球场中,双方队员都在踢一个球,没有说,上来踢好几个球的,是吧。单例模式和这个差不多,只实例化一个对象。这个单例模式的应用时很广泛的,想在cocos2dx 中,导演类,SpriteFrameCache等类都是用了单例模式。日志类,线程池等技术里面都是用了,单例设计模式。单例模式虽然简单,但是要很好的使用并且
设计模式--工厂设计模式 在游戏中开发中,工厂模式使我们经常要用到的设计模式。我们将以在游戏(例如星际争霸或者红警)中建造一个建筑为例子,来讲解工厂类。我们设计类的时候,要实现功能单一化和专业化,类之间的耦合不能太高,类本身的内聚要高。在开发过程中,我们往往不会将所有的功能写到一个类里面,如果你这样干了,恭喜你,你创建了一个上帝类。这个上帝类耦合特别的高,而且不容易维护。所以我们需要将这个类进行分解,将各个功能单独的封
大数相乘——分治法(lua版) 首先,什么是大数相乘?大数相乘通过字面的意思也能知道,就是量很大的相乘。他的解法有很多种,想穷举,分治法等等。但是如果是通过穷举法来解决大数相乘,他的时间复杂度是n的平方。但是,如果使用分治法,它的时间复杂度就降低很多。在这里,我们不讲怎么用穷举法来实现大数相乘。这个方法的原理很简单,就是利用的是乘法的规则来实现。使用分治法来实现大数相乘他的原理,这个每一本算法书上都有,就不在这里写了。
const的用法 首先要说明的是,const是限定符,被他限定的的东西都被赋予了不能改变的意义,也就是常量,这也就意味着,const这个限定符可以和变量,指针,引用,函数等等一起使用。还要说明的是,看完这篇博客,不能是你立刻的踏上人生巅峰,赢取白富美,变成高富帅。要想精通const的用法,还是看书——c++ primer和多多的练习。上面也说了,const可以和那么多的东西发生关系,那么我们一个一个的来讲解
四元数的转换(二) 四元数不仅能和矩阵之间进行相互转换,还能和欧拉角之间进行相互转换。当然,在看着一片博客的时候,会默认为你已经了解啥是欧拉角了,并且知道,它是怎么用的。这一篇中还是有大量的数学公式,写起来听麻烦的,因此我们贴图,还有,我们不是专业的数学课,只是讲这些数学只是在游戏中的应用,不讲某一些数学公式的推到过程。1.欧拉角转换为四元数:设四元数q=(w,x,y,z),绕着空间中任意一个向量n=旋转
四元数的转换(一) 在3D开发中,旋转是一个重点。因为,在3D空间中,物体旋转的角度是360度,全方位的旋转。我们之间学习了在3D数学中,解决旋转问题主要依靠的工具就是:矩阵,四元数和欧拉角。他们之间都是可以转换的,今天我们和大家分享的是四元数和矩阵之间的转换。因为,这一节含有大量的公式和方法,数学公式在电脑上书写起来比较的费劲,我们就直接贴图。1.四元数转换为矩阵在3D空间中,物体绕着任意一个向量,旋转角度
宏定义 一、#define的基本用法 #define是C语言中提供的宏定义命令,其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率,但学生在学习时往往不能 理解该命令的本质,总是在此处产生一些困惑,在编程时误用该命令,使得程序的运行与预期的目的不一致,或者在读别人写的程序时,把运行结果理解错误,这对 C语言的学习很不利。1 #define命令剖析1
动态规划——最大子段和 最大字段和这是动态规划的经典问题,上一讲我们讲了一个简单的动态规划问题,这个最大子段和也不难,我们主要通过这几个简单的问题来了解一下动态规划。还有最大子段和用分治法也能做,等到日后我们在讲。问题描述:给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整均为负数时定义子段和为0。
动态规划——0-1背包 首先动态规划这里的规划是指在解决问题中解决问题的一系列的步骤和方法。动态规划往往都是解决最优化问题。其次,动态规划它有三个性质:1.最优子结构:就是问题的最优解包含了子问题的最优解。2.无后向性:就是解决当前的状态,与之前的状态和之后的状态没有关系,你只需要考虑当前的状态。3.重复子问题:当问题的各个子问题不是独立的,而是相关的,这就是重复子问题。如果各个子问题不是独立的,往往就需
lua学习(二) 这一篇博客主要对上一篇博客的内容进行一定的扩展。1.lua是对大小写敏感的。2.==和~=,这两个只有他们比较的值的类型不相同是,他们就不相同。例如:number和Boolean比较,就是不相同。3.在lua中,只认为false和nil才是假,其他的都是真。包括0和空串。4.lua中表——table是重中之重。4.1首先,table是没有特定的大小,大小事动态的。其次,tabl
3D数学基础至四元数 3D数学在游戏开发中是一个基本功,这里的数学主要指的是向量,矩阵,欧拉角,四元素等等这些,将来还要讲讲光照这些。在讲四元数之前,本文假定读者已经了解复数的相关知识,如果没有,麻烦你先去看一下复数的相关知识,然后来看这篇文章。首先,四元数是什么?它是用来干啥的?四元数就是一个超复数,那啥又是超复数呢?我们一般的复数都是一个实部+一个虚部,例如:z=x+yi。但是超复数它是一个实部加上三个
lua学习笔记(1) 首先,lua是根据标准C改写而成,在本文中使用的编译器是sublime。编译环境是sublime+quick-cocos2dx3.31.全局变量和局部变量在lua中,局部变量使用关键字 local,并且没有local关键字的变量都是全局变量,无论他在程序的那个位置。例如:定义一个函数function funa( ) a=9--全局变量end然后在构造函数中调用这个函数,并且输出