[[분류:가져온 문서/오메가]] 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]])]