이번 모험의 목표는 숲에 있는 모든 고블린 아처를 물리치는 것입니다. 고블린 아처는 원거리 공격을 하기 때문에 우리도 원거리 공격을 해야합니다.
레드나스
만약 근거리처럼 detect_monster()로 바로 앞의 몬스터가 있는지 확인해서 공격한다면, 몬스터 앞까지 움직일 때 원거리 공격을 받게되니 우리도 attack(3)을 할 수 있도록 움직여야 합니다.
몬스터 앞까지 바로 가고 있으면, 그 사이 공격을 받게 됩니다.
레드나스
고블린 아처를 공격할 수 있을 때까지 가기 위해서는 용사 3칸 앞에 몬스터가 있는지 알아야 합니다.
js
레드나스
용사 3칸 앞까지 몬스터가 있는지 알기 위해서는 search_monster()를 사용해야합니다. search_monster()는 용사 앞으로 첫번째 칸, 두번째 칸, 세번째 칸에 몬스터가 있는지 없는지 알려줍니다. debug를 통해서 어떻게 알 수 있을지 확인해봅시다.
[파이썬(Python3)]
py3
[자바스크립트(Javascript)]
js
레드나스
콘솔을 보면 처음에는 [false, false, false]로 나오다가, 고블린 아처가 용사 3칸 앞에 있자 [false, false, true]로 바뀌는 걸 확인하실 수 있습니다.
[false, false, false]이다가 [false, false, true]로 바뀌었다.
레드나스
콘솔을 보면 처음에는 [false, false, false]로 나오다가, 고블린 아처가 용사 3칸 앞에 있자 [false, false, true]로 바뀌는 걸 확인하실 수 있습니다. 우리는 저 true로 바뀔 때 고블린 아처를 공격해야합니다.
레드나스
search_monster()는 [false, false, false]와 같이 []에 false나 true를 담아서 주고 있습니다. 우리는 []를 배열이라고 부릅니다. 배열의 첫번째 값은 용사 첫번째 칸 앞에 몬스터가 있는지를 알려줍니다. 두번째, 세번째 또한 용사 두번째 칸, 세번째 칸 앞에 몬스터가 있는지 알려줍니다.
js
레드나스
배열을 result라는 변수에 저장하고 조건문으로 첫번째 칸에 있는지, 두번째 칸에 있는지, 세번째 칸에 있는지 확인합니다. 값을 확인할 때는 변수[0],변수[1],변수[2]와 같이 [0], [1], [2]를 붙여줍니다.
[파이썬(Python3)]
py3
[자바스크립트(Javascript)]
js
레드나스
고블린을 물리치셨나요? 훌륭합니다! 여기서 조금만 더 팁을 드리겠습니다. 코드를 보시면, if가 똑같이 생긴 것이 3개가 반복되고 있습니다. 이럴 땐 "반복문"을 통해 코드를 줄일 수 있습니다.
[파이썬(Python3)]
py3
레드나스
코드 중 for로 시작되는 것이 바로 "반복문"입니다. 이 반복문은 for로 시작하고 있어 for문이라고 부릅니다. 위의 for문은 "i가 0으로 시작해서 i가 1씩 증가하는데 i가 3보다 작을때까지 반복된다."라는 뜻입니다.
레드나스
i가 1씩 증가하는데 3보다 작을 때까지 반복되므로, i가 0, 1, 2가 됩니다. i가 0일 때는 첫번째 if문처럼, i가 1일 때는 두번째 if문처럼, 2일 때는 세번째 if문처럼 동작하게 됩니다.
[자바스크립트(Javascript)]
js
레드나스
이 코드 또한 for문이라고 부릅니다. 파이썬(Python3)과는 조금 다르게 생겼습니다만 똑같이 동작합니다.
레드나스
조금 다른 점은 "i가 0부터 시작한다.", "i가 3보다 작을 때까지 반복된다", "i는 1씩 증가한다"가 ";"로 구분되어 있다는 점입니다. 이제 전체 코드로 표현해보면 다음과 같습니다.
[파이썬(Python3)]
py3
[자바스크립트(Javascript)]
js
레드나스
수고하셨습니다. 이제 몬스터가 어디에 있던 원거리 용사로 공격을 하실 수 있게 되었습니다. 다음 모험으로 이동해봅시다.
이번 모험에서 배운 것을 정리해봅시다.
1. 배열을 배웠습니다.
배열은 프로그래밍 언어에서 굉장히 중요합니다. 우리가 원하는 변수나 값을 순서대로 가지고 있습니다. 배열은 []으로 표현하고, ['a', 'b', 'c', 'd', ...] 처럼 데이터를 가지고 있습니다. 배열은 특이하게 첫번째 공간을 0번째 인덱스라고 부릅니다. 두번째 공간은 1번째 인덱스가 됩니다. 즉, 'a'는 배열의 0번째 인덱스 값, 'b'는 배열의 1번째 인덱스 값으로 부릅니다.
2. 반복문 중 for문을 배웠습니다.
우리는 이번 모험에서 같은 모양, 패턴을 가진 코드를 반복문을 통해 다시 구현해봤습니다. 반복문은 초기값을 설정하고 반복을 언제까지 할 것인지 초기값의 값을 통해 판단합니다. 예를 들어, i=0; i<100; i++ 라는 조건이라면 초기값 i=0으로 시작하고, i++ 즉, i를 1씩 증가시켜서 i<100, i가 100보다 작을 때까지 반복된다는 뜻입니다.
3. search_monster()를 배웠습니다.
용사 앞 3칸까지 몬스터가 있는지 없는지를 알려줍니다. 배열을 이용하여 있으면 true, 없으면 false로 채워져있습니다.