因此,我尝试使用精灵创建一个级别的平台,每个平台都是在屏幕上的相同y位置随机创建的。虽然,我遇到的问题是,当它们随机创建时,它们会不断重叠,而我似乎找不到找到创建它们的方式,因此它们不会重叠。
我的程序当前在x的随机位置创建一个sprite,然后for循环创建指定数量的平台。我的问题是,是否要阻止它们重叠,是否需要在随机x规范期间或在创建多个sprite的for循环期间尝试进行约束。
c的新手,使它真正停留在这一逻辑上,任何帮助将不胜感激。
答案 0 :(得分:0)
(您将其作为数学/算法问题,所以我将提供数学答案,而不是现成的C程序:),请对其进行编码-并在此处提出问题,以解决问题)
简单地说,您想要生成一个范围为0..N-1的M个数字(在您的情况下为M个平台的x个位置)的列表,以便这些数字都不同。显然是M 对于第一个,您有N个可能的选择,对于第二个,您有N-1个选择(已被选择),对于第三个N-2,等等。 有很多方法可以做到这一点,但这是一个简单的方法: 在N个整数上填充一个数组,数字为0..N-1(因此 现在,设置n = N-1并执行M次: (每次循环都会从数量越来越少的列表中进行选择,而列表中的数字恰好是在被剔除之前被选中的)a[i] == i
用于i
的所有值)。
n--
)