arrays - 如何从数组中随机过滤和选择 CGPoint

标签 arrays swift sorting filter swift2

我有许多 CGPoints 数组,如下面的方法所示。我正在尝试为我的 Sprite 过滤一个位置,该位置按照上述顺序循环向下、向左、向上和向右移动。如何从数组组(下、左等)中随机选择一个数组,然后从所选数组中随机选择一个点,同时注意数组组,以便在再次调用该方法时,将使用以下组进行生成(按照循环顺序)。例如,由于 down 是循环中的第一个,因此随机选择一个“down array”,如果选择 down2,那么应该从 down2 中随机选择一个点,比如 p5。下次调用此方法时,“左数组”等应遵循相同的过程。这似乎很复杂。

func nextPosition ()->CGPoint   {
        let down1 = [p1, p2]
        let down2 = [p3, p4, p5]
        let left1 = [p6, p7]
        let left2 = [p8, p9, p10]
        let left3 = [p11, p12, p13]
        let up1 = [p14, p15]
        let up2 = [p16, p17]
        let up3 = [p18, p19]
        let right1 = [p20, p21]
        let right2 = [p22, p23]
        let right3 = [p24, p25]
        let right4 = [p26, p27, p28, p29, p30]

        //return point    
  }

最佳答案

这应该有效:

func nextPosition () -> CGPoint   {

    var pointsArray:[[CGPoint]] = [[]]

    let down1 = [p1, p2]
    pointsArray.append(down1)
    let down2 = [p3, p4, p5]
    pointsArray.append(down2)

    let left1 = [p6, p7]
    pointsArray.append(left1)
    let left2 = [p8, p9, p10]
    pointsArray.append(left2)
    let left3 = [p11, p12, p13]
    pointsArray.append(left3)

    let up1 = [p14, p15]
    pointsArray.append(up1)
    let up2 = [p16, p17]
    pointsArray.append(up2)
    let up3 = [p18, p19]
    pointsArray.append(up3)

    let right1 = [p20, p21]
    pointsArray.append(right1)
    let right2 = [p22, p23]
    pointsArray.append(right2)
    let right3 = [p24, p25]
    pointsArray.append(right3)
    let right4 = [p26, p27, p28, p29, p30]
    pointsArray.append(right4)


    let randomDirection: Int = Int(arc4random_uniform(UInt32(pointsArray.count)))
    let randomPoint: Int = Int(arc4random_uniform(UInt32(pointsArray[randomDirection].count)))

    return pointsArray[randomDirection][randomPoint]

}

我所做的基本上是创建一个二维数组。第一维是方向,第二维是方向上的点。

关于arrays - 如何从数组中随机过滤和选择 CGPoint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33232346/

相关文章:

java - 改变一个数组中的值会改变另一个数组中的值

swift - 如何以编程方式截取屏幕截图(Swift、SpriteKit)

ios - 在 Swift 中将叠加效果从 psd 转换为 UIImage

android - 在 Kotlin 中对 ArrayList 进行排序

java - 根据其中一个字段对元组进行排序

php - Elasticsearch仅按字母排序而不按数字排序

java - 拆分字符串数组导致数组索引超出范围

php - 使用 php 将 json 对象转换为数组

c# - 为什么 char 数组在数组元素中显示额外的文本?

ios - CoreData - 创建新实体 - 为什么不需要保存它?