1. if - else
2. if - else if - else
3. switch
4. while
5. for
6. repeat
7. do-until
8. break
9. continue
앞서 연산자에 대한 설명에서 저는 조건문 if를 사용하였습니다. 물론 오브젝트는 특정한 사건이 벌어지는 것을 이벤트를 통해 감지할 수 있지만, 구체적으로 어떠한 변수가 어떤 값일 경우에만 코드가 실행되게 하기 위해서는 조건문을 사용해야 합니다.
또한 우리는 반복문을 알아볼 것입니다. 반복문은 일정한 코드를 여러번 작동시키기 위해 사용합니다.
if - else
조건문을 테스트하기 위해 objText라는 이름의 오브젝트를 만들었습니다. Create 이벤트에 변수를 하나 선언할 것입니다.
실제로 게임에서 사용되는 돈이라고 생각하고 한번 코드를 작성해보도록 하겠습니다.
Draw 이벤트에 이와 같은 코드를 작성해봅니다. 5달러의 사과, 10달러의 포도에 대한 조건문입니다. if-else문이 적용되어 있습니다.
if(조건) { 결과1 }
else { 결과2 }
|
if-else 문의 구조는 이러합니다. if 괄호 안의 조건이 충족한다면 대괄호 안에 들어있는 결과1을 실행합니다. 만약 그렇지 않다면 대괄호 안에 들어있는 결과 2를 실행하게 됩니다. 조건에 충족할 시 실행되는 코드가 1줄이라면 대괄호는 생략하셔도 좋습니다.
draw_text(0,0,Apple = 5 Dollar");
if(money >= 5){ draw_text(0,24,"You can buy this item."); } else{ draw_text(0,24,"Not enough money.");
}
draw_text(0,48,Grape = 10 Dollar");
if(money >= 10){ draw_text(0,72,"You can buy this item."); } else{ draw_text(0,72,"Not enough money.");
}
|
7~12
만약 money변수의 값이 5보다 크거나 같다면 You can buy this item.을 출력하고, 그렇지 않다면 Not enough money.를 출력합니다.
16~21
만약 money변수의 값이 10보다 크거나 같다면 You can buy this item.을 출력하고, 그렇지 않다면 Not enough money.를 출력합니다.
결과는 이러합니다.
if - else if
마찬가지로 money 변수의 값을 5로 선언하겠습니다.
다음은 10달러의 포도에 대한 조건문입니다.
if(조건1) { 결과1 }
else if(조건2) { 결과2 } else if(조건3) { 결과 3} . . .
else { 결과n }
|
if-else if-else 문의 구조는 이러합니다. 조건1이 충족한다면 결과1을 실행합니다. 만약 그렇지 않다면 조건 2를 확인하고 이 조건이 충족한다면 결과 2를 실행합니다. 모든 else if의 조건에 만족하지 않는다면 else의 결과를 출력합니다.
draw_text(0,0,Grape = 10 Dollar");
if(money >= 10){ draw_text(0,24,"You can buy this item."); } else if(money >=5){ draw_text(0,24,"Not enough money. But you can buy 'Rotten Grape'");
} else{ draw_text(0,24,"Not enough money.");
}
|
만약 money가 10 이상이면 포도를 살 수 있습니다.
그러나 10보다 적은 경우 다음 조건을 확인합니다. money가 5 이상이면 썩은 포도를 살 수 있습니다.
그 조건도 만족하지 못한다면 아무것도 살 수 없습니다.
결과는 이러합니다.
Switch
역시 마찬가지로 money 변수의 값을 5로 선언하겠습니다.
Draw 이벤트에는 위와 같은 Switch문을 적었습니다.
switch(값){ case 상수 :
default : }
|
switch문은 값에 따른 다양한 조건을 검사한 후 그에 충족하는 명령을 실행합니다.
우선 switch 괄호 안에 담긴 값을 읽어들입니다. 만약 그 값이 적혀진 case 중에 있다면 그것을 실행합니다. 어떠한 case에도 맞지 않는다면 default를 실행합니다.
switch(money){ case 0: draw_text(0,24,0 Dollar"); break;
case 1: draw_text(0,24,1 Dollar"); break;
case 2: draw_text(0,24,2 Dollar"); break;
case 3: draw_text(0,24,3 Dollar"); break;
case 4: draw_text(0,24,4 Dollar"); break;
case 5: draw_text(0,24,5 Dollar"); break;
} |
해당 코드는 money의 값을 case와 대조하여 case에 적절한 값이 있다면 그 결과를 출력합니다. 다른 case의 코드가 함께 실행되는 것을 방지하기 위해 break를 입력해주어야 합니다.
반복문
while
해당 반복문은 '조건'의 내용이 만족되는 동안 '결과'를 지속적으로 실행합니다. 만일 조건의 내용이 결과를 계속 반복해도 이뤄질 수 없는 것이라면 프로그램은 무한루프에 빠지게 될 것입니다.
draw_text(0,0,"I Say Yeah! You Say Ya!");
var i = 1; while(i<=5){ draw_text(0,24+24*i,"Ya! " + string(i)); i += 1;
}
|
해당 반복문은 i가 5와 같거나 작은 경우, 괄호 안의 내용을 반복합니다.
괄호 안에는 Ya! + i를 출력한 후 i를 1씩 증가하도록 설정하였습니다.
실행 결과는 이러합니다.
for
인자1에 들어가는 것은 반복문을 실행하기에 앞서 초기화를 할 명령입니다. 인자2에는 while과 같은 조건이 들어갑니다. 인자3에는 괄호 안의 내용이 끝나면 실행될 명령입니다. 인자2의 조건에 만족하는 경우에 괄호안의 결과가 실행됩니다.
draw_text(0,0,"I Say Yeah! You Say Ya!");
for(var i = 1 ; i <= 5 ; i+=1){ draw_text(0,24+24*i,"Ya! " + string(i)); }
|
해당 코드는 1의 값을 가진 로컬 변수 i를 선언하고, 이 i가 5보다 작거나 같을 때 까지 괄호안의 내용을 실행하는 것입니다. 그리고 그 내용을 실행한 후에는 i의 값을 1 증가시킵니다.
결과는 이러합니다.
repeat
repeat은 괄호 안에 들어가있는 값만큼 대괄호 안의 결과물을 반복실행합니다.
draw_text(0,0,"Say Yeah!");
var i=1; repeat(5){ draw_text(0,24+24*i,"Yeah!"); i+=1;
} |
해당 반복문이 실행되면 0,24+24*i 의 위치에 Yeah! 라는 문자를 5회 출력합니다.
괄호 안에서 i의 값이 1씩 추가되기 때문에 Yeah는 0,48 위치에서부터 아래로 5개 출력됩니다.
결과는 이러합니다.
do-until
until의 값을 만족할 때 까지 do의 대괄호 내용을 실행합니다. 앞서 소개해드린 while이 반대로 된 것이라고 생각하시면 편합니다.
draw_text(0,0,"Say Yeah!");
var i=1; do{ draw_text(0,24+24*i,"Yeah!"); i+=1;
} until (i>5);
|
해당 코드는 i가 5를 넘게 될 때까지 Yeah! 라는 문자를 출력하며 i의 값을 1씩 증가시킵니다.
출력결과는 이러합니다.
break
앞서 우리는 switch문에서 break를 이미 사용하였습니다. 이 break는 반복문에서도 사용이 가능합니다. 반복문에서 break가 사용되면 반복문을 중단하고 빠져나가게 됩니다.
draw_text(0,0,"Say Yeah!");
var i=1; repeat(5){ draw_text(0,24+24*i,"Yeah!"); i+=1; if (i==3) break;
}
|
해당 코드는 repeat 문을 통해 5번 내용을 실행하는 도중, i가 3이 될 경우 반복문을 빠져나가도록 작성되어있습니다.
실행결과 Yeah! 가 2회만 출력되었습니다.
continue
반복문이 실행되는 도중 continue가 작동되면 반복문의 맨 처음으로 다시 돌아가게 됩니다.
draw_text(0,0,"Say Yeah!");
for(var i = 1 ; i <= 5 ; i+=1){ if (i==3) { continue;
}
draw_text(0,24+24*i,"Yeah!"); }
|
해당 코드는 반복문이 실행되는 도중 i가 3이 되면 continue가 작동되도록 설정되었습니다.
실행결과. (0, 24+24*3) 좌표에 'Yeah!' 라는 단어가 출력되어있지 않습니다.