choose和随机取值

按说这内置函数大家看看帮助文档也就行了,不过最近连续遇到有人问了相关的问题就一并介绍一下 。


随机应当是在编程过程中十分常用的函数了。通常我们在 GameMaker 中用的较多的一般是 random(n) 和 random_range(n1,n2) 。
前者是取 0-n 之间的任意实数,后者则是取 n1-n2 之间的任意实数,如果需要返回整数则可以使用对应的 irandom(n) 和 irandom_range(n1,n2)。
但在有些时候,我们会有这样的需求——从给定的一组数据中随机返回其中之一
通常我们需要用到数组,把需要随机选取的内容都存储到这个数组中,然后根据数组的长度来随机获取一个序号并取出对应的值,不过在 GameMaker 中有一个内置函数—— choose(val10,val11,val12...max_val)
使用这个函数我们可以方便很多,我们看一下该函数的官方示例:

sprite_index = choose(spr_Cactus, spr_Flower, spr_Tree, spr_Shrub);
hp = choose(5, 8, 15, 32, 40);
name = choose("John", "Steven", "Graham", "Jack", "Emily", "Tina", "Jill", "Helen");

第一行可以选取随机的精灵图像指定给对象使用
第二行则是在给定的数字中随机取一个赋值给变量 hp
第三行则是在预设数据中随机获取一个字符串赋值给 name
如此我们还可以延展许多用法,比如在子弹击中敌人、墙壁时播放随机音效避免重复感


最后还有一个小 Tips 给新手朋友,在 GameMaker 中为了便于调试,默认的随机种子是固定的,这意味着每次运行都会用同一个种子生成随机数,理论上每次生成的随机数也就会完全一致,为了避免这种情况我们需要在游戏开始时重置新的随机种子,最方便的就是内置的函数 randomise()

2021-04-28 15:14
Comments
Write a Comment