본문 바로가기
GameMaker강좌[GM8]/기초강좌

[게임메이커강좌-기초]반복문(for,repeat,while)

by 타락카얀 2013. 11. 4.
728x90



GAME MAKER 강좌



KAYAN




게임메이커에서 사용되는 for, repeat, while과 같은 반복문에 대해 알아봅시다.
반복문은 1 step(룸속도가 30일때 1/30초)에 이벤트를 반복적으로 실행합니다.

한번에 여러 이벤트를 처리할때 매우 유용한 기능이라 할 수 있지요.

이러한 반복문들은 인스턴스 찾기나, 인벤토리등에 응용할 수 있습니다.







◈repeat 문



     repeat(반복횟수){ 이벤트 }

repeat문은 지정된 횟수만큼 이벤트를 실행시킵니다.

간단하고 가장 기초적인 반복문이지요.
주로 오브젝트를 지정한 횟수만큼 생성할때 매우 유용한 기능입니다.


 

     ★사용예


     repeat(5)

     {
     _x=random(room_width);
     _y=random(room_height);
     instance_create(_x,_y,obj_enemy);//오브젝트를 생성
     }



이것은 룸의 랜덤 위치에 obj_enemy 오브젝트 5개를 생성하는 것입니다.





◈for 문




     for(조건){ 이벤트 }

for문은 지정된 조건에 이벤트를 실행하는 것입니다.
이것의 조건은 보통 아래와 같이 구성됩니다.

     for(시작; 조건;실행;){ 이벤트 }

     예)
     for(i=0;i<5;i+=1;){ 이벤트 }

물론 이것은 기본적인 예에 불과하지만, 대충 이렇습니다.
먼저 시작(i=0)은 간단하게 변수를 선언 또는 최초의 조건이라 보시면 됩니다. 그리고 조건문(i<5)에

도달 할 때까지 이벤트를 실행(i+1 과 이벤트)하게 되지요.



     ★사용예
     for(i=0;i<5;i+=1;)

     {
     item[i]=0;//배열을 0값으로 설정
     }



이것은 5회 동안 item 배열을 0값으로 초기화 하는 것입니다.
기능상으로 repeat 문과 비슷하죠.

응용한다면 2차배열도 처리할 수가 있습니다.



     ★사용예
     for(i=0;i<5;i+=1;)

     {
     for(k=0;k<5;k+=1;)

     {
     item[i,k]=0;//배열을 0값으로 설정
     }
     }



이것은 item 배열을 0으로 초기화하는 것입니다.





◈while 문



     while(조건){ 이벤 }

while문은 조건이 true일때 이벤트가 실행됩니다.
이 구문은 무한 루프가 될 수도 있기 때문에 사용시 주의해야합니다.
무한 루프가 되면 게임이 멈추어 진행이 불가능하게 됩니다.



     ★사용예

     action=true;
     while(action){

     _x=random(room_width);
     _y=random(room_height);

     if place_free(_x,_y){
     instance_create(_x,_y,obj_enemy);
     break;//오브젝트를 1개 생성하면 반복문을 중지함.
     }

     }



이것은 action 이 1(true)이고, Solid 오브젝트가 없는 랜덤 위치를 검색하여 obj_enemy 오브젝트

1개를 생성하는 것입니다.

그리고 break문을 통해 반복문을 중지하게 되지요.
break대신 action=0, 즉, 조건을 false로 만들어도 반복문을 중지 시킬 수 있습니다.
만약 랜덤 위치에 Solid 오브젝트가 있다면, 없는 위치가 검색 될 때까지 반복문은 계속 이어지게 됩니다.
그리고 이 때 주의해야 점은 언제든지 반복문을 중지시킬 수 있는 조건이 필요로 한다는 것입니다.

만약 중지시킬 조건이 없다면 구문은 계속 반복되고, 결국 무한 루프에 빠져 게임이 정지

수 있는 문제를 야기할 수 있습니다.







◈do 문



     do{ 이벤트 }until(조건)

이것은 조건이 true가 될때까지 이벤트를 실행되는 반복문입니다.
이 역시 주의해야 할 것이 무한 루프입니다.



     ★사용예

     do

     {
     _x=random(room_width);
     _y=random(room_height);
     instance_create(_x,_y,obj_enemy);
     }
     until(instance_number(obj_enemy)>=5)



이것은 obj_enemy 오브젝트가 5이상이 될 때까지 랜덤 위치에 obj_enemy를 생성하는 것입니다.
동작 원리는 반복문의 이벤트가 먼저 실행되고, 반복문을 중지 시킬지 조건을 체크하여,
조건이 false라면 이벤트를 실행하고, true이라면 반복문을 중지 시킵니다.
그래서 이 반복문의 이벤트는 최소 1번 이상은 실행되니 참고하세요.







300x250

댓글