即 GML 汉化文档 16-18 页的函数。
GM8 可以使用许多的数学函数,如:
abs(x)
返回 x 的绝对值sign(x)
返回 x 的符号(正数为 1,0 为 0,负数为 -1)round(x)
返回 x 的四舍五入floor(x)
返回比 x 小的最大整数ceil(x)
返回比 x 大的最小整数frac(x)
返回 x 的小数部分sqrt(x)
返回 x 的开方sqr(x)
返回 x 的平方power(x, n)
返回 x 的 n 次方exp(x)
返回 e 的 x 次方ln(x)
返回 x 的自然对数log2(x)
返回 x 关于 2 的对数log10(x)
返回 x 关于 10 的对数logn(n, x)
返回 x 关于 n 的对数sin(x)
返回 x 的正弦,x 为弧度制cos(x)
返回 x 的余弦,x 为弧度制tan(x)
返回 x 的正切,x 为弧度制arcsin(x)
返回 x 的反正弦arccos(x)
返回 x 的反余弦arctan(x)
返回 x 的反正切arctan2(y, x)
返回 y/x 的反正切,并且根据 y 和 x 自动纠正象限degtorad(x)
将角度 x 转换为弧度radtodeg(x)
将弧度 x 转换为角度min(x1, x2, x3, ...)
返回一系列数值中的最小值max(x1, x2, x3, ...)
返回一系列数值中的最大值mean(x1, x2, x3, ...)
返回一系列数值中的平均值median(x1, x2, x3, ...)
返回一系列数值中的中位数
除此之外,GM8 还允许你使用随机数:
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 个参数中的一个。random_set_seed(seed)
设置随机种子,随机种子要求是整数。random_get_seed()
返回当前正在使用的随机种子。randomize()
设置随机数作为随机种子。
随机数和随机种子
在量子计算机被发明并普及之前,现在的电脑还只能实现伪随机而不是真正意义上的随机。所谓的伪随机,就是当计算机需要生成一个随机数时,先找到一个难以预料的数值(比如说系统时间),然后利用数学算法计算出一个数字(或一系列数字)作为“随机数”使用(这个难以预料的数值,就被叫做随机种子),随机种子相同的话,生成的随机数也是相同的。
随机数并不是真的随机,在条件完全相同的情况下,计算机给出的随机数也是完全相同的。
扩展:一个随机种子并不是只能计算出一个随机数,而是可以计算出成百上千个随机数,这些随机数的顺序是固定的,这个由随机数组成的数列,就叫随机序列。GM8仅在游戏开始时获取一次系统时间作为随机种子,之后每次需要随机数时,都从随机序列里按顺序取出。当然,从实际实现的角度来看,GM8 并没有把整个序列都一口气算出并储存起来。GM8 每次生成随机数的同时,都会同时更新一次随机种子(因此每次执行随机函数后
random_get_seed()
都会发生变化),这次的随机种子就是由上一次的随机种子计算得到的;当下一次计算随机值时,则通过这次生成的随机种子生成新的随机值和新的随机种子;只要初始随机种子是固定的,那么后续所有产生的随机值和随机种子的值和顺序就都是固定的。
注意:
- 所有三角函数均使用弧度制。其他的函数大都使用的是角度制。
- 在 GM8 里,向右为 0°,向上为 90°,向左为 180°,向下为 270°,在使用角度时应多加注意。
- GM8 的房间以左上角为原点,向右为 x 轴正方向,向下为 y 轴正方向。
lengthdir_x(len,dir)
返回指定长度和角度的向量在 x 轴上的投影长度。使用角度制。lengthdir_y(len,dir)
返回指定长度和角度的向量在 y 轴上的投影长度。使用角度制。
point_distance(x1, y1, x2, y2)
返回坐标 (x1, y1) 与 (x2, y2) 的距离。point_direction(x1, y1, x2, y2)
返回坐标 (x2, y2) 相对于 (x1, y1) 的角度。is_real(x)
返回 x 是否为实数值。(返回 1 为实数值,返回 0 为字符串)is_string(x)
返回 x 是否为字符串。(返回 1 为字符串,返回 0 为实数值)
实数(Real)与字符串(String)是 GM8 的两种数据类型。
实数即是指整数和小数,或者说有理数和无理数的总称。
字符串即是指形如 "I love world!"
,"abc123"
,"1+2=3"
,"这个辣鸡教程"
,"$&%^(+/$#"
等,由字符(字母、数字、文字、符号)组成的,为了与编程语句区分开而加上了双引号的一种数据。注:也可以用单引号,但是不建议使用。GMS2 已停止支持单引号字符串。