如何成为一个游戏制作人——第三章:过程式编程语法(详细请自学<<C++Primer>>)



小故事:

接着上节,然后我C语言学不会,却偶然接触到了war3的地图编辑器。然后疯狂的沉迷其中。我第一次感受到了做游戏的快乐。虽然那时候我也没完整做出过一张地图,我一直在做各种绚丽的技能(当时是用的一个war3地图编辑器里叫做触发编辑器的东西做的)。在玩这个编辑器的过程中,我学会了很多比较现代的游戏编程的概念。比如说,触发器、面向对象等等东西(这些概念当时我是不晓得的,后来才晓得)。在学习这个编辑器的过程中,我还学会了很多编程的基础概念,比如变量、数据类型、函数体、判断语句、循环体、递归、栈、树等等一系列东西。(没错,那时我还不会c/c++。。。。)很神奇的是在用那种比较上层的编辑器时,却学会基本别人学c++学了好久才会接触的东西。因为是直接面向游戏编程,所以学习到的算法基本都是为游戏服务的。这更为我以后学其它语言打好了基础。

 

那么,以上我提到的那些编程的基础概念。也就是我在这章和下章要讲的。

没错,我只讲两章。包括C++的基本语法,我也只一笔带过。详细的请自学<<C++ primer>>

 

本章概要

1.C++数据类型

2.C++标准输入输出流

3.C++判断语句

4.C++数组

5.C++循环语句

6.C++函数与递归

 

一.C++数据类型

下面讲的速度会很快。详细请自学<<C++Primer>>

C++数据类型(常用数据类型)

1.bool 布尔型

2.int 整型

3.float 单精度浮点型

4.double 双精度浮点型

5.char 字符型

 

1.bool布尔型就是trueflase中的一个,一种逻辑符号,代表了(true)真和假(flase)

2.int 整型,就是整数。int fuk = 3.141592653;这样定义一个整型。编译之后编译器会自动省略后面的小数位只取3(并没有四舍五入什么的)

3.float / double 实数型,最常用的类型。用来表示一个实数(数学意义上的实数,可以理解成带小数的数字类型),至于c++为啥要分int float,基本是因为以前的cpu计算float很慢,为了效率就做了两个类型分别处理。而现在的CPU对浮点型做了优化,基本不会去考虑它会给你带来什么效率低下的问题,在某些cpu上处理浮点型甚至比整形还快。

4.char 字符型,实际上也是个整形。详见ASCII码表

http://www.360doc.com/content/11/1208/05/1258863_170546100.shtml

基本就是一个整数代表了一个字符。

 

下面是使用示例

#include <iostream>

using namespace std;

 

int main()

{

{

int a = 10,b = 222.321321321; //整形不带小数

int c = (a + b)*a-20/10;

cout<<c;

cout<<"整形四则运算"<<endl; //endl是标准输出流结尾

}//分割语句块防止变量重命名

 

 

{

int a = 10,b = 3.141592653; //浮点型带小数

int c = a*3

cout<<"浮点型四则运算"<<endl;

}

 

{

char a = 'A;

int b = 65

cout<<"a="<<a<<endl;

cout<<"b="<<b<<endl;

cout<<"b="<<(char)b<<endl;//这里是强制转换把整形强制转换成字符型,让计算机认识

//整形也可以转换成字符型

}



return 0;

}

 

直接去运行下看看结果找找规律就懂了

 

二.C++标准输入输出流

先只讲两个

cout 和 cin

cout是输出流

cin是输入流

 

具体用法

#include <iostream>
#include <string> //加载string库
using namespace std;

 

int main()

{

cout<<"haha"<<"nidaye"<<"good"<<endl;

cout<<1+2+3+4+5+6+7<<endl;

cout<<"1*2-3+4"<<1*2-3+4<<endl;

 

int a = 0;

cin>>a;

cout<<a<<endl;

 

string fuk;

cin>>fuck;

cout<<fuck<<endl;

return 0;

}

依旧是自己去运行一下。然后看结果吧。

<<这个符号 有两个意思,一个是重载输出流运算符,一个是移位运算(这个知识点就不讲了,大多数书里都有写)

 

三.判断语句

语句的原意基本就是:如果.....否则

自然语言描述一下就是 if xxx then dosth else dosth

xx事情发生时,就干啥干啥,否则就干啥干啥

而用C++语法来书写就是

 

if(某个表达式为真)

{

    //就干些啥

}

else //否则

{

   //就干些啥

}

 

写个最基本的例子

#include <iostream>
#include <string> //加载string库
using namespace std;

 

int main()

{

if(1<2)

{

cout<<"1<2 yes"<<endl;

}

else

{

cout<<"1<2 no"<<endl;

}

return 0;

}

 

else 因为1<2永远为真

所以else里面的东西永远不会执行

 

以下例子用了上面教的东西

实际例子

#include <iostream>
#include <string> //加载string库
using namespace std;

 

int main()

{

int a = 0;

cin>>a;

if (a > 5)

{

cout<<a<<">5";

}

else

{

cout<<a<<"<5";

}

return 0;

}

 

当然如果else里面没有事情要干的话,可以直接省略

类似于这样

if(xxx)

{

 

}

 

还可以这样

if(xxx)

   ...

else

   ...

 

不过只允许一个表达式

 

四.C++数组

数组就是一个集合。

具体表示方法如下

int a[10] 定义一个可以容纳十个整形的数组

float b[20] 定义一个可以容纳二十个浮点型的数组

 

具体格式也就是

类型 变量名 [数组可容纳的个数]

 

因为一些历史原因C/C++的数组下表是从0开始的

什么叫做下表就是[]这两括号里面的数字叫做下标

a[9] = 10; 9就是数组a的下标

 

那么下面写点实际代码自己切身体会下数组吧

#include <iostream>
#include <string> //加载string库
using namespace std;

 

int main()

{

int a[10] = {1,2,3,4,5,6,7,8,9};

cout<<a[0]<<endl;

cout<<a[9]<<endl;//注意没有10因为下标是从0开始的

 

string hehe[10] = {"a","b","c","d","e","f","g","h","i","j"}

cout<<hehe[0]<<endl;

cout<<hehe[9]<<endl;

return 0;

}

 

五.C++的循环语句

循环语句就是,循环执行一个代码块

C语言里有三种循环语法

第一种是

while(...)

{

 

}

第二种是

do

{

 

}

while(...)

 

第三种是

for(...;...;...)

{

 

}

 

实际代码

 

#include <iostream>
#include <string> //加载string库
using namespace std;

 

int main()

{

while(1)//当括号内为假就跳出,为真就执行,非零为真零为假。

{

cout<<"gen beng ting bu xia lai"<<endl;

}

return 0;

}

 

#include <iostream>
#include <string> //加载string库
using namespace std;

 

int main()

{

int a[10] = {1,2,3,4,5,6,7,8,9,10}

for(int i = 0;i<10;i++)//i++ 相当于 i=i+1

{

cout<<a[i]<<endl;

}

return 0;

}

dowhile 就不演示了,自己一下就琢磨出来了

 

六.C++函数

函数这东西在数学里就是一个集合到另一个集合的映射

C++里其实也差不多。

比如定义一个

f(x) = 1+x

y = f(10)

Y=11

这个在高中里就学过了。

c++里表达方式也差不多

具体格式为

返回值类型 函数名 (形参)

{

 

}

形参就是接受外部输入的参数

函数示例

#include <iostream>
#include <string> //加载string库
using namespace std;

 

int add(int a,int b)

{

return a+b;//返回a+b的值

}

 

int main()

{

cout<<add(1,2)<<endl;

return 0;

}

 

在数学里函数还可以递归

也就是

f(x) = f(x)+1 | x < 10

 

C++里可以这么表示

#include <iostream>
#include <string> //加载string库
using namespace std;

 

int f(int x)

{

if(x > 10)

return 1;

 

x = x + 1;

}

 

int main()

{

cout<<f(1)<<endl;

return 0;

}

 

基本比较简单的语法讲完了。如果想要真正了解c++

请自主翻阅<<C++ Primer>>

 

结尾:

考虑了很久,语法章到底要不要写。

个人觉得,写,一定要写。但是我不会写的很全。

更重要的是,读者要有自己的自学能力,书籍我已经一而再再而三的推荐过了。

大概语法会有两章,一张是面向过程的。也就是这章。

还有一章是面向对象的,也就是下一章。

至于c++的各种奇葩特性,什么迭代器啊,STL啊。我就不多做阐述了。

在下下章会直接切入正题,用我以前写过的一个简单的2d游戏引擎来制作游戏。

(至于为什么不用cocos2dx什么的,后面大家会知道的,我打算教大家怎么制作这个简单的2d游戏引擎)


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值