스크립트

불친절한 GML 모든 문법 (겜스 기반 작성)

by WoKet posted Feb 24, 2015
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

[ 변수 ]

 

필독: "오브젝트 주소값."을 생략하면 "self.", 자신 이라는 주소값이 대입됩니다.

"오브젝트 주소값"에는 "global."나 "other.","self.", "오브젝트 이름", "오브젝트 id"를 쓰실 수 있습니다.

 

global: 언제 어디서나 접근 가능

other: 충돌 이벤트나 with 문 안에서 쓸 수 있는 주소값

self: 나 자신

 

변수 선언 또는 값 대입: 주소값.변수 이름 = 값;

변수값 증가: 주소값.변수 이름 += 값; (변수값 조정)

변수값 감소: 주소값.변수 이름 -= 값; (변수값 조정)

변수값 1 증가: 주소값.변수 이름++; (변수값 조정)

변수값 1 감소: 주소값.변수 이름--; (변수값 조정)

변수값 나누기: 주소값.변수 이름 /= 값; (변수값 조정)

변수값 곱하기: 주소값.변수 이름 *= 값; (변수값 조정)

변수값을 비트연산자 이용해서: 주소값.변수 이름 (|, &, \, ^)= 값; (변수값 조정)

변수 배열 선언: 주소값.변수 이름 = 값; 주소값.변수 이름[배열 크기] = 값; //둘다 쓰셔야되염;;

/* 변수 배열은 "[배열 줄 번호]"만 "주소값.변수 이름" 옆에 붙이셔서 사용하시면 됩니다.

그러니까 위에꺼 귀찮아서 똑같이 말 안한다고욧!! */

 

임시 변수 선언: var 변수 이름 = 값; 또는 var 변수 이름; 변수 이름 = 값;

//임시 변수는 한번만 쓰고 버릴때 씁니다.

//for문에 쓸때도 사용합니다. (ex) for(var 변수 이름 = 값;조건문;변수값 조정){ [코드] }

 

 

[ 함수 ] 출처: 게임메이커 도움말

 

함수는 함수 이름 다음에 0또는 여러 argument를 괄호 사이에 쉼표로 구분하는 양식을 가집니다.

<함수 이름>(<인자1>,<인자2>,...)

함수는 두종류가 있습니다. 첫째, 내장 함수, 게임의 모든 측면을 제어하는 거대한 모음이 있습니다. 둘째, 여러분은 게임에서 스크립트를 정의하여 함수에 사용될 수 있습니다.

함수에 인수가 지정되어 있지 않은 경우에서도, 괄호를 생략해서는 안됩니다. 일부 함수의 값을 반환하여, 표현식에서 사용할 수 있습니다. 그 외는 간단히 명령을 실행하기도 합니다.

참고로 할당값의 왼쪽 편에 함수를 그냥 사용할 수 없습니다. 예를들어, instance_nearest(x,y,obj).speed = 0 로 쓸 수 없습니다. 대신에 (instance_nearest(x,y,obj)).speed = 0 로 써야 합니다.

 

 

[ 스크립트 ]

 

인자: argument0~argument15

값 리턴: return 값;

인자 없어도 허용할 인자(?): argument[0]~argument[15]

사용자가 쓴 인자 개수: argument_count

 

[ 조건문 ]

 

"만약에 조건문이 true 라면" 조건문: if (조건문){ [코드] }

"만약에 변수 이름의 값이 이거라면" 조건문:

 

switch(변수 이름){

 case 값:{

  [코드]

  break;

 }

 case 또다른값:{

  [코드]

  break;

 }

 ...

 default:{

  [코드]

  break;

 }

}

※중요: case나 default는 생략할 수 있습니다. 하지만 하나는 남겨두셔야됩니다!

 

 

[ 반복문 ]

 

조건문true일때 반복하는 문: while(조건문){ [코드] }

조건문false일때 한번이라도 반복하는 문: do{ [코드] }until(조건문)

횟수만큼 반복하는 문: repeat(횟수){ [코드] }

변수를 사용해서 반복하는 문: for(변수 이름 = 값;조건문;변수값 조정){ [코드] }

 

 

[ 유용한문 ]

 

break;

 

만약 for루프, while루프, repeat루프, switch문, 또는 with문 과 같이 사용하면 이것들의 루프 또는 구문을 끝냅니다. 구문 외에 사용하면 그 시점에서 프로그램을 종료합니다. (게임을 종료하는 것은 아닙니다).

 

 

continue;

 

만약 for루프,while루프, repeat루프 또는 with문에 사용하면 루프 또는 구문에 대한 다음 값과 함께 계속 실행되어집니다.

 

 

exit;

 

그 것은 간단하게 스크립트 또는 코드문의 실행을 끝내는 것입니다 (게임의 실행을 종료하는 것은 아닙니다! 게임을 종료하고자 할 때는 game_end(); 함수가 필요합니다).

 

 

[ 오브젝트 접근 ]

 

"(오브젝트 이름 또는 오브젝트 id).변수 이름" 을

[ 변수 ]에 써있는 변수 이름에 쓰시면 됩니다.

 

with(오브젝트 이름 또는 오브젝트 id){ [코드] }

 

 

[ 주석 ]

 

한줄의 코드를 주석 처리: // [코드]

여러줄의 코드를 주석 처리: /* [코드] */

 

 

[ 표현식 ] 출처: 게임메이커 도움말

 

문법은 실수(예: 3.4), 시작이 $기호(예: $00FFAA), 문자열의 인용부호 ",'(예:'hello'나, “hello”), 또는 더 복잡 구성할수 있습니다. (즉, 문자열의 여러 라인을 실행할 수있습니다!) 예를 들어, 다음과 같은 이진 연산자가 있습니다 (우선 순위대로):

  • && || ^^: 논리 연산자 (&& = and, || = or, ^^ = xor)
  • << <= == != > >=: 비교 연산자 진(true(1))나 가짜(false(0))를 반환합니다.
  • | & ^: 비트 마다의 논리 연산자 (| = 비트 마다의 or, & = 비트 마다의 and, ^ = 비트 마다의 xor)
  • << >>: 비트 시프트 연산자  (<< = 시프트 레프트, > > = 시프트 라이트)
  • + -: 덧셈, 뺄셈
  • * / div mod: 곱셈, 나누기, 정수 나누기, 그리고 나머지

x div y의 값은 x/y를 0의 방향으로 가장 가까운 정수로 반올림합니다.mod는 나머지 연산자로 피연산자로 나누어 나머지를 반환합니다.예를 들어, x mod y=x-(x div y)*y가 됩니다. 다음과 같이 단항 연산자가 있습니다:

  • !: true는 false로, false는 true로 반전합니다
  • -: 부호를 반전합니다
  • ~: 비트를 반전합니다

수치나 변수, 값을 돌려주는 함수를 식에 사용할 수 있습니다. 하위 표현식을 괄호 사이에 삽입될 수도 있습니다. 모든 연산은 실수로 행합니다. 또한 문자열인 경우 +문자열로 연결할 수도 있습니다. (참고로, 특정언어에선, 인수작업을 반대로 연산할 때, 첫번째 인자는 이미 계산되어 결과가 결정되어버립니다.)

예제

여기에 몇 가지의 할당 예문이 있습니다.

{  x = 23;  color = $FFAA00;  str = 'hello world';  y += 5;  x *= y;  x = y << 2;  x = 23*((2+4) / sin(y));  str = 'hello' + " world";  b = (x < 5) && !(x==2 || x==4);}

 

 

지적 및 빠진 내용 받습니다.