티스토리 뷰

Swift Playground

코딩 배우기2 - 배열

강경 2021. 2. 12. 22:54
728x90
반응형

...

 

"나는 아직 다 모른다. 아는 것도 다시 살펴보자."

 

 

마지막이라 그런가

자료구조가 나오는구만..!

 

 

정보 저장하기
반복 탐험
블록 쌓기
정리하기
배열에 첨부하기
섬 생성기
제거된 값 첨부하기

... 설명을 이해하는데 시간이 좀 걸렸다 ..

+ // 좌표를 제거하고 비어있는 배열에 좌표를 추가합니다. 라는데, 어떤 좌표를 제거해야하는건지를 몰라서 헤맸다 ...

 

인덱스 범위 초과 오류 수정하기
세상 생성하기
임의의 땅

let allCoordinates = world.allPossibleCoordinates
var heights: [Int] = []

// 높이에 임의의 숫자를 추가합니다.
    for _ in 1...20 {
        let randInt = randomInt(from: 1, to: 20)
        heights.append(randInt)
    }
    
var index = 0
for coordinate in allCoordinates {
    if index == heights.count {
        index = 0
    }
    
    // currentHeight는 높이를 현재 인덱스에 저장합니다.
    var currentHeight = heights[index]
    

    if currentHeight == 0 {
        // currentHeight가 0과 같다면 흥미로운 작업을 수행합니다.


    } else {
        for i in 1...currentHeight {
            world.place(Block(), at: coordinate)
        }
        if currentHeight > 10 {
            // 캐릭터 배치와 같은 작업을 수행합니다.
            world.place(Character(), at: coordinate)
        } else if coordinate.column >= 3 && coordinate.column < 6 {
            // 물 배치와 같은 작업을 수행합니다.
            world.removeAllBlocks(at: coordinate)
            world.place(Water(), at: coordinate)
        }
        // 더 많은 규칙을 추가하여 세상을 사용자화합니다.

        
    }
    index += 1
    
}

배열을 생성하는 다른 방법

let allCoordinates = world.allPossibleCoordinates

for coordinate in allCoordinates {
    // 각 좌표의 행과 열의 합계가 되도록 높이를 변경합니다.
    let height = coordinate.column + coordinate.row
    
    for i in 0...height {
        world.place(Block(), at: coordinate)
    }
    
    if height >= 8 && height < 10 {
        world.place(Character(name: .blu), at: coordinate)
    } else if height > 9 {
        world.place(Character(name: .hopper), at: coordinate)
    }
}

// 퍼즐 세상에 있는 기존 캐릭터 배열을 초기화합니다.
let characters = world.existingCharacters(at: allCoordinates)
// 각 캐릭터에 대한 동작 세트를 수행합니다.
var numOfAction = 0
for character in characters {
    switch(numOfAction % 5) {
    case 1 : character.danceLikeNoOneIsWatching()
    case 2 : character.turnUp()
    case 3 : character.breakItDown()
    case 4 : character.grumbleGrumble()
    default: character.argh()
    }
    
    numOfAction += 1
}

배열의 기술

// 멋진 작업을 해보세요 🤓.
squareLock.movePlatforms(up: true, numberOfTimes: 3)

for hopper in hoppers {
    hopper.turnUp()
    hopper.breakItDown()
}

cornerLock.movePlatforms(up: true, numberOfTimes: 7)

for expert in experts {
    expert.breakItDown()
    expert.argh()
}

for blu in blus {
    blu.jump()
    blu.turnLeft()
    blu.grumbleGrumble()
}
backLock.movePlatforms(up: true, numberOfTimes: 11)


for blu in blus {
    blu.turnLeft()
    blu.argh()
}

이건 뭘 해보라는건지 모르겠네...

그냥 자유주제같은 느낌 ...

마지막 문제가

그냥 원하는 대로 만들어보라해서

이전단계에 있던거 그냥 복붙했다...

이럴 시간에 백준을 푸는게..싶어서

728x90
반응형

'Swift Playground' 카테고리의 다른 글

코드머신  (0) 2021.02.12
코딩 배우기2 - 퍼즐 세상 만들기  (0) 2021.02.12
코딩 배우기2 - 매개변수  (0) 2021.02.10
코딩 배우기2 - 초기화  (0) 2021.02.10
코딩 배우기2 - 유형  (0) 2021.02.10