GameMaker8.0 新手教程 Part 6 -函数初步(上)-

分类栏目:gamemaker教程

925

GameMaker8.0 新手教程 Part 6 -函数初步(上)-

GML汉化文档下载请点这里

1、简介

中学数学中的函数是这样的:

y = f(x)

给定一个自变量x,能计算出一个因变量y。
数学函数里也有:

z = f(x,y),y = f(a,b,c)

要给定多个自变量才能计算出因变量z。

编程中,函数也是起着类似的作用:输入若干个自变量(自变量在编程中被称为参数,且参数可以是零个),从而计算出一个值作为因变量(这个值在编程中被称为返回值)。
当然,编程中的函数并没有那么简单。函数本身也可以在给出返回值的同时实现一些功能,甚至也有函数不返回任何值,只执行功能。
所有的函数,其作用,功能,参数要求,返回值等,在GML汉化文档中可以自行查阅。 你也可以在GM8中按F1查看。

2、函数的用法

GM中函数的返回值可以赋值给变量,例如:

a = sin(2 * pi);

注意:GM中三角函数的参数都是弧度制,pi是GM的自带常量,值为圆周率π。
在这里2 * pi作为函数sin的参数,计算得到sin(2π)的值,并作为返回值赋给a。

函数的参数可以是变量,例如:

a = 16;
b = sqrt(a);
(sqrt(x):返回x的开方,即根号x。x不能为负数)


有的函数需要多个参数,例如:

a = power(3,4);

(power(x,n):返回x的n次方)

有的函数也可以没有参数,例如:

time = date_current_time();

(date_current_time():返回当前的系统时间)

有的函数不仅返回一个数值,还能执行一些功能,例如:

ins = instance_create(120,240,objBird);

(instance_create(x,y,obj):在房间的(x,y)位置创建一个对象obj的实例,并且返回被创建的实例的索引)。

有的函数只执行功能,不返回数值,例如:

room_goto(rOption);

(room_goto(numb):进入索引为numb的房间。numb这个参数指房间的名称,比如例子中的rOption)

3、实数函数

即GML汉化文档16-18页的函数。
简单的数学函数在此不细讲。

random(x):返回一个[0,x)之间的随机实数(包含整数和小数)。
irandom(x):返回一个[0,x]之间的随机整数。
random_range(x1,x2):返回一个[x1,x2)之间的随机实数。
irandom_range(x1,x2):返回一个[x1,x2]之间的随机整数。
choose(val1,val2,val3,....):随机返回最多16个参数中的一个。

随机数和随机种子:
在量子计算机被发明并普及之前,现在的电脑还只能实现“伪随机”而不是真正意义上的随机。所谓的伪随机,就是当计算机需要生成一个随机数时,先找到一个难以预料的数值(比如说系统时间),然后利用数学算法计算出一个数字作为“随机数”使用(这个难以预料的数值,就被叫做随机种子),随机种子相同的话,生成的随机数也是相同的。
随机数并不是真的随机,在条件完全相同的情况下,计算机给出的随机数也是完全相同的。
扩展(看不懂可以跳过):一个随机种子并不是只能计算出一个随机数,而是成百上千个随机数,这些随机数的顺序是固定的,这个由随机数组成的数列,就叫随机序列。GM8仅在游戏开始时获取一次系统时间作为随机种子,之后每次需要随机数时,都从随机序列里按顺序取出。
 
random_set_seed(seed):设置随机种子,随机种子要求是整数。
random_get_seed():返回当前正在使用的随机种子。
randomize():设置随机数作为随机种子。
 
degtorad(x):返回角度x对应的弧度。
radtodeg(x):返回弧度x对应的角度。
 

注意:
1、所有三角函数均使用弧度制。其他的函数大都使用的是角度制。
2、在GM8里,向右为0°,向上为90°,向左为180°,向下为270°,在使用角度时应多加注意。
3、GM8的房间以左上角为原点,向右为x轴正方向,向下为y轴正方向。


lengthdir_x(len,dir):返回指定长度和角度的向量在x轴上的投影长度。使用角度制。
lengthdir_y(len,dir):返回指定长度和角度的向量在y轴上的投影长度。使用角度制。
图解:

position_distance(x1,y1,x2,y2):返回坐标(x1,y1)与(x2,y2)的距离。
position_direction(x1,y1,x2,y2):返回坐标(x2,y2)相对于(x1,y1)的角度。


is_real(x):返回x是否为真实数值。(返回1为真实数值,返回0为字符串)
is_string(x):返回x是否为字符串。(返回1为字符串,返回0为真实数值)


实数与字符串是GM8的两种数据类型。
实数即是指整数和小数,或者说有理数和无理数的总称。
字符串即是指形如"I love world!","abc123","1+2=3","这个辣鸡教程","$&%^(+/$#"等,由字符(字母、数字、文字、符号)组成的,为了与编程语句区分开而加上了双引号的一种数据。注:也可以用单引号,但是不建议使用。GMS2已停止支持单引号字符串。