•  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

GML (r2) (복원)


비로그인 상태입니다. 편집한 내용을 저장하면 지금 접속한 IP가 기록됩니다.



[[분류:가져온 문서/오메가]]
Game Maker Language

게임 메이커의 고유한 프로그래밍 언어를 말하며, 게임 메이커는 다른 프로그래밍 툴과 다르게 이벤트가 나누어져 있기 때문에 비교적 쉽다.

== 기본 문법 ==
=== 특징 ===
Delphi를 기반으로 하고 몇몇은 [[C언어]]를 차용하여 만들었으며, 타 언어와 다른 점은 아래와 같다.

* 세미콜론이 필요하지 않다. 가끔 세미콜론을 찍으면 오류가 발생하기도 한다.
* 오브젝트(Object)와 이벤트(Event)가 있어 하나의 코드에 실행될 조건을 적지 않아도 된다.
  * 각 오브젝트는 다양한 이벤트(생성, 소멸, 충돌, 키 입력 등)에 따라 실행될 코드를 분리하여 작성할 수 있어, 코드의 구조를 직관적으로 파악하고 관리하기 용이하다.
* 자료형에 깐깐하지 않다. 아래에 기술한다.

=== 변수 ===
변수는 다음과 같이 선언한다. 선언을 할 때에는 무조건 Create 이벤트에 선언을 해야 한다. 자료형은 선언할 필요가 없다.

{{{#!syntax GML
 var_example = 0; //var_example (실수형) 변수 선언
}}}

변수의 값을 수정할 때에는 선언할 때와 같은 형식으로 쓴다.

{{{#!syntax GML
 var_example = 6; //var_example 변수의 값을 6으로 변경
}}}

그 스크립트 안이나 블록(중괄호 사이)에서만 정의되는 임시 변수를 정의할 때에는 변수 이름 앞에 '''var'''를 붙인다.

{{{#!syntax GML
 var var_temp = 1; //임시 변수 정의
}}}

=== 자료형과 캐스팅 ===
GML의 자료형은 7가지이다.

* Real: 실수형이다. 타 언어의 int, long, float, double 등을 모두 포함한다.
* String: 문자형이다. 
* Array: 배열이다. 
* Boolean: 불린형 변수이다.
* Pointer: 포인터이다.
* Enum: 상수를 정의하는 열거형 변수이다.
* Undefined: 값이 정의되지 않은 변수이다.

위 변수들은 다음과 같이 정의한다.

{{{#!syntax GML
 var_real = 0; //실수형 변수의 정의
 
 var_string = "GML"; //문자형 변수의 정의. 큰 따옴표나 작은 따옴표로 문자형임을 표현한다.
 
 for(i=0;i<10;i++){
     var_arr1[i] = power(i, 2); //1차원 배열의 정의. 크기를 지정해줄 필요가 없다. 괄호 사이엔 index를 써 주며, index는 0 이상인 [[정수]]여야 한다.
 }
 
 for(i=0;i<10;i++){
     for(j=0;j<20;j++){
         var_arr2[i, j] = 20*i + j; //2차원 배열의 정의. 괄호 안에 두 지수를 콤마로 구분하여 표기한다.
     }
 }
 
 var_bool = true; //불린형 변수의 정의.
 
 enum var_enum {
     zero,
     ichi,
     ni,
     go = 5,
     roku,
     shi = 10
 } //Enum형 변수의 정의. enum <variable>{<constant> [=<value>]}의 형식으로 정의한다. 값을 정해주지 않으면 맨 처음 변수는 0부터, 중간 변수는 앞의 변수의 값에 1을 더한 것으로 정의된다. 값이 정해지는 방법은 C 언어와 같다.
 var_shigo = var_enum.go + var_enum.shi; //Enum형의 상수를 불러온다. <variable>.<constant>의 형식으로 쓴다.
}}}

선언 시 자료형은 자동으로 정해지고, 함수에서 문자가 들어갈 자리에 수를 넣어도 별 상관이 없으나 자료형을 바꿔주는 것이 보기에 좋다. 이 부분은 AS3.0와 비슷하다. 

==== Real to String ====
* string(real) //Real형 변수를 그대로 String형으로 바꾼다.
* chr(real) //유니코드를 문자로 바꾼다.
* ansi_char(real) //ANSI를 문자로 바꾼다.

==== String to Real ====
* real(str) //문자형에서 숫자, 음수 부호, 소숫점과 그 이하 부분을 가져온다. 이 외의 문자가 있을 시 오류를 낸다. 이 오류를 방지하려면 string_digits(str)로 문자를 걸러 주는 것이 좋다.
* ord(char) //char형 변수를 넣으면 유니코드로 변환한다. 입력한 문자의 길이가 1을 넘을 때엔 첫번째 문자의 유니코드를 반환한다.

==== Boolean to Real, Real to Boolean ====
불린형 변수를 실수형 변수로 변환할 때에는 true = 1, false = 0으로 변환하며, 그 반대로 변환할 때에는 1 이상일 때 true, 1 미만일 때 false로 변환한다.

===연산===
[[C언어]]와 대부분 같다. 

{{{#!syntax GML
 //Create Event
 var_example = '6'; //문자형 변수 정의
 
 //User Event 1
 var_example += 3; //현재 값은 var_example == '63'임. 더해주는 3이 문자형이 아님에도 문자형의 덧셈을 함에 주의하자.
 var_example = real(var_example); //실수화. 현재 값은 var_example == 63임.
 var_example += 'ab'; //현재 값은 var_example == '63ab'임.
 var_example = real(string_digits(var_example)); //'ab'는 사라지고 63만 남음. 현재 값은 var_example == 63임.
 var_example = (var_example == 3); //var_example과 3이 다르므로 false이고, false = 0이므로 현재 값은 var_example == 0임.
 show_message(string(((var_example > 0) || (var_example < 0)) ^^ !(var_example == 0)));
 //(var_example > 0), (var_example < 0), !(var_example == 0)가 모두 false이고, (false || false) ^^(xor) false == false이므로
 //위 코드는 show_message(string(0)), 즉 show_message('0')과 같다. 따라서 메시지로 0을 보여준다.
}}}

=== 함수 ===
함수는 기본 내장 함수와 사용자 정의 함수가 있는데 이 둘의 사용법은 같다. 기본 내장 함수는 Built-in Function 메뉴에서 볼 수 있다.

인자가 없는 경우에는 함수명 끝에 ();를 붙인다.

{{{#!syntax GML
 d3d_start();
 d3d_end();
}}}

인자가 있는 경우에는 괄호를 열고 콤마로 구분하며 차례대로 인자를 쓴다.

{{{#!syntax GML
 a = max(1, 9, 4, var_num);
 a += min(6, a);
}}}

==== 함수의 정의 ====
다른 프로그래밍 언어는 코드 맨 위에 선언을 하는데, 게임 메이커는 '스크립트'를 만들어 선언을 한다. 이때 스크립트의 제목이 함수명이 된다. 반환할 값을 지정할 때엔 return <variable>;을 써 준다.

[Include(틀:가져옴2,O=오메가, C=[[https://creativecommons.org/licenses/by-nc-sa/3.0/deed.ko|CC BY-NC-SA 3.0]])]