IT

Day 9 - Parameters 본문

Learn to Code

Day 9 - Parameters

손님번호 2022. 6. 6. 00:06

 

 

 

#Moving Further Forward

 

let expert = Expert()

func move(distance: Int) {

  for i in 1 ... distance {

        expert.moveForward() 

    }

 

 

move(distance: 6)

expert.turnRight()

move(distance: 2)

expert.turnRight()

move(distance: 5)

expert.turnLeft()

move(distance: 5)

expert.turnLeft()

expert.turnLockUp()

 

expert.turnLeft()

move(distance: 3)

expert.turnRight()

move(distance: 3)

expert.turnRight()

move(distance: 4)

expert.collectGem()

 

#Generalizing a Funcetion

 

let expert = Expert()

let character = Character()

 

func turnLock(up: Bool ,  numberOfTimes : Int ) {

   for i in 1 ... numberOfTimes {

        if up == true {

            expert.turnLockUp()

        } else {

            expert.turnLockDown()

        }

    }

 

func expertTurnAround() {

    expert.turnLeft()

    expert.turnLeft()

}

func characterTurnAround() {

    character.turnLeft()

    character.turnLeft()

}

 

expertTurnAround()

turnLock(up: true, numberOfTimes: 3)

character.move(distance: 1)

character.turnRight()

character.moveForward()

character.turnRight()

turnLock(up: false, numberOfTimes: 3)

character.moveForward()

character.collectGem()

characterTurnAround()

character.move(distance: 2)

 

expertTurnAround()

turnLock(up: true, numberOfTimes: 1)

character.moveForward()

character.collectGem()

characterTurnAround()

character.moveForward()

character.turnRight()

character.moveForward()

character.turnRight()

turnLock(up: true, numberOfTimes: 2)

character.moveForward()

character.collectGem()

 

comment) I can make parameter by myself. I have to make it all the way.  

 

 

#Crank up and down

 

let expert = Expert()

let character = Character()

 

func characterTurnAround() {

    character.turnLeft()

    character.turnLeft()

}

func turnLock(up: Bool, numberOfTimes : Int){

    for  i in 1 ... numberOfTimes {

        if up == true {

            expert.turnLockUp()

        } else { 

            expert.turnLockDown()

        }

    }

}

 

character.move(distance: 2)

character.collectGem()

character.turnRight()

expert.turnLock(up: true, numberOfTimes: 4)

character.move(distance: 2)

character.collectGem()

characterTurnAround()

character.moveForward()

expert.turnLock(up: false, numberOfTimes: 3)

character.turnRight()

character.moveForward()

character.collectGem()

characterTurnAround()

expert.turnRight()

turnLock(up: true, numberOfTimes: 1)

expert.turnRight()

turnLock(up: true, numberOfTimes: 1)

expert.turnRight()

turnLock(up: true, numberOfTimes: 1)

 

 

for i in 1 ... 2 {

    character.move(distance: 2)

    character.turnLeft()

    character.move(distance: 2)

    character.collectGem()

    characterTurnAround()

    character.move(distance: 2)

    character.turnLeft()

}

character.move(distance: 2)

character.collectGem()

characterTurnAround()

character.moveForward()

expert.turnLock(up: true, numberOfTimes: 3)

character.turnRight()

character.moveForward()

character.collectGem()

 

 

comment) oh it feels easy now. 

 

#Placing at a Specific Location

let expert = Expert()

world.place(expert, atColumn: 2, row: 6)

 

func turnAround() {

    expert.turnLeft()

    expert.turnLeft()

}

func ExpertTurnLockUp() {

    expert.turnLeft()

    expert.turnLockUp()

    turnAround()

    expert.moveForward()

    expert.collectGem()

    turnAround()

    expert.moveForward()

    expert.turnRight()

}

ExpertTurnLockUp()

expert.move(distance: 5)

ExpertTurnLockUp()

expert.moveForward()

expert.move(distance: 5)

expert.collectGem()

 

 

Comments) ... Nothing.. I can now place my character or expert anywhere I want in the puzzle world after I initialize them. I called the place method on world, which is an istance of the puzzle world itself (type GridWorld)

 

Rivers to Cross

 

let expert = Expert()

 

world.place(expert, facing: .west, atColumn: 2, row: 8)

 

func collectGesms() {

    while !expert.isBlocked {

        // check for Gems and collect

        if expert.isOnGem {

            expert.collectGem()

        }

        expert.moveForward()

    }

}

expert.moveForward()

expert.collectGem()

expert.turnLeft()

collectGesms()

 

expert.turnLockDown()

expert.turnLeft()

 

collectGesms()

expert.turnLockUp()

expert.turnRight()

 

collectGesms()

 

 

Placing two Characters

 

 

 

 

let expert = Expert()

let character = Character()

world.place(expert, facing: .north, atColumn: 3, row: 0)

world.place(character, facing: .north, atColumn: 0, row: 0)

 

for i in 1 ... 4 {

    if character.isOnGem {

            character.collectGem()

        }

        character.jump()

    }

 

character.turnRight()

for i in 1 ... 4 {

    if character.isOnGem {

        character.collectGem()

    }

    character.jump()

}

    

if character.isOnGem {

    character.collectGem()

}

character.turnLeft()

expert.toggleSwitch()

expert.turnLockUp()

character.move(distance: 2)

character.collectGem()

 

 

comments) Passing argument into functions with parameters will soon become second nature to you. When you learn something new in coding, it can often seem a little intimidating until you've seen and and used it in many different places. The ore you code, the more familiar you'll become with the concepts you've learned

 

 

Two experts

 

 

let expertYellow = Expert()

world.place(expertYellow, facing: .north, atColumn: 0, row: 4)

 

let expertBlue = Expert()

world.place(expertBlue, facing: .east, atColumn: 0, row: 0)

 

func MoveCollectGem() {

    while !expertYellow.isBlocked {

        if expertYellow.isOnGem {

            expertYellow.collectGem()

        }

        expertYellow.moveForward()

    }

}

 

if expertBlue.isOnGem  {

    expertBlue.collectGem()

}

if expertYellow.isOnGem {

    expertYellow.collectGem()

}

 

expertBlue.move(distance: 3)

expertBlue.turnLeft()

expertBlue.turnLock(up: true, numberOfTimes: 2)

    

//expertYellow

expertYellow.turnLock(up: false, numberOfTimes: 1)

MoveCollectGem()

    //expertBlue

expertBlue.turnRight()

expertBlue.move(distance: 4)

expertBlue.turnLock(up: false, numberOfTimes: 2)

 

    //expertYellow

expertYellow.turnRight()

MoveCollectGem()

 

comments) When you have a type like Expert, you can create as many instances of that type as you want. Because they all came from the same blueprint, you can call the same methods to access the same properties on any instance of that type. 

 

 

Twin peaks 

let totalGems = randomNumberOfGems

let expertMJ = Expert()

world.place(expertMJ, facing: .north, atColumn: 0, row: 4)

 

let characterMJ = Character()

world.place(characterMJ, facing: .north, atColumn: 2, row: 0)

 

func CollectGems1() {

    if characterMJ.isOnGem {

        characterMJ.collectGem()

        characterMJ.jump()

    } else {

        characterMJ.jump()

    }

}

 

func CollectGems2() {

    if characterMJ.isOnGem {

        characterMJ.collectGem()

        characterMJ.moveForward()

    } else {

        characterMJ.moveForward()

    }

}

 

for i in 1 ... 6 {

    CollectGems1()

    }

 

expertMJ.turnLockUp()

characterMJ.turnRight()

characterMJ.moveForward()

characterMJ.turnRight()

 

for i in 1 ... 6 {

    CollectGems2()

}

 

characterMJ.collectGem()

characterMJ.turnLeft()

characterMJ.moveForward()

characterMJ.turnLeft()

 

for i in 1 ... 6 {

    CollectGems1()

}

 

comments) Finally I completed

 

'Learn to Code' 카테고리의 다른 글

Day 10 - World Building  (0) 2022.07.04
Day 8 - Initialization  (0) 2022.05.20
day 7 - type  (0) 2022.05.15
day 6 - var [변수] vs let [상수]  (0) 2022.05.12
How-To : "이 애플 ID로 업데이트할 수 없음" 오류 메시지 대처법  (0) 2022.05.06
Comments