조회 수 2351 추천 수 0 댓글 6
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 수정 삭제
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 수정 삭제

뮤's 실전 스크립팅 강좌

 

[1. 기초 문법 다지기 (상)]

 

 

밤이 깊었습니다. 시험도 며칠 남지 않았네요.

그런데 강좌를 쓰고 있다니! ㅠㅠ

이번 강에서는 변수, 조건문에 대해서 알아보겠습니다.

이 두 가지는 스크립트 작성에 있어서 필수 요소이기 때문이죠!

 

 

#1. 변수

 

변수는 모든 프로그래밍 언어의 기본이 됩니다.

그렇다면 이 변수란 녀석은 대체 무엇일까요?

변수는 말 그대로 '변하는 수' 입니다.

상자와 친구를 생각해봅시다.

상자 안에 어떤 물건이 있습니다. 내가 친구에게 묻습니다.

상자 안에 뭐가 있니? 착한 친구는 상자 안에 뭐가 있는지 말해주겠죠?

이때 상자가 변수이고, 상자 안에 있는 물건이 변수의 값입니다.

사과상자에 100만원이 있다고 칩시다. 이걸 스크립트 에디터에서 나타내면

사과상자 = 100만원 이 됩니다.

사과상자라는 변수에 100만원이라는 값을 대입한거죠.

 

변수에는 세가지 종류가 있습니다.

 

1. 글로벌 변수 : 스크립트 전체에서 사용할 수 있다.

2. 인스턴스 변수 : 클래스 내에서 사용할 수 있다.

3. 로컬 변수 : 함수 내에서 사용할 수 있다.

 

글로벌 변수는 변수 이름 앞에 $가 붙습니다.

인스턴스 변수는 변수 이름 앞에 @가 붙습니다.

로컬 변수는? 그런거 안붙습니다.

아직 함수, 클래스를 배우지 않았으니 그냥 이런게 있구나~ 하고 넘어가겠습니다.

 

한데 이 변수를 사용할 때는 주의할 점이 두가지 있습니다.

첫째는 변수의 이름입니다.

변수의 이름에는 몇가지 제한이 있습니다.

 

1. 첫글자는 한글, 영문자, _로 시작해야 한다.

2. 첫글자 다음은 한글, 영문자, 숫자, _ 여야 한다.

 

두번째는 변수로 쓰지 못하는 단어 (예약어) 가 있다는 것입니다.

begin class ensure nil self when 등이 있는데요,

이걸 전부 다 외우려면 머리가 터지겠죠?

스크립트 에디터에서 파란색으로 표시되는 단어는 변수로 사용할 수 없습니다.

 

변수를 만들고 출력하는 간단한 예제를 만들어 봅시다.

 

mu = "뮤"

a = "안녕"

b = 10

print mu + " " + a

print b

b += 10

print b

b = b + 10

print b

 

스크립트 에디터를 열고(F11), Main 섹션의 begin 아래에 넣어주세요.

보시면 += 을 발견하실 수 있습니다.

이러한 것을 자기 대입 연산자라고 하는데, 그 아래의 b = b + 10과 같은 기능을 합니다.

자기 대입 연산자에는 4가지 종류가 있습니다.

 

1. += : 앞의 값에 뒤의 값을 더합니다. 계산 결과를 앞에 값에 대입합니다.

2. -= : 앞의 값에서 뒤의 값을 뺍니다. 계산 결과를 앞에 값에 대입합니다.

3. /= : 앞의 값을 뒤의 값으로 나눕니다. 계산 결과를 앞에 값에 대입합니다.

4. *= : 앞의 값에 뒤의 값을 곱니다. 계산 결과를 앞에 값에 대입합니다.

5. %= : 앞의 값을 뒤의 값으로 나눈 나머지를 구합니다. 계산 결과를 앞에 값에 대입합니다.

 

자기 대입 연산자 또는 산술 연산자에서 중요한 것은 /와 % 입니다.

/는 앞의 값을 뒤의 값으로 나눈 계산 결과에서 나머지를 무시하고 몫만 구합니다.

%는 앞의 값을 뒤의 값으로 나눈 계산 결과에서 몫을 무시하고 나머지만 구합니다.

 

 

#2. 조건문

 

조건문은 프로그램 실행에 있어 가장 필수적인 녀석입니다.

사용자가 특정 키를 누를 경우, 특정 장소에 있을 경우, 특정 행위를 할 경우

모두 어떤 상황을 가정(if)하고 있습니다.

이를 스크립트로 나타내면

 

if A키를 눌렀다

스킬을 사용한다!

end

 

이렇게 되겠죠. (저걸 그대로 쓰시진 않겠죠?)

대충 조건문이 뭔지 감이 잡히시나요?

그렇다면 조건문의 종류에 대해 알아보겠습니다.

 

1. if 문 - 가장 기본적인 조건문입니다.

2. unless 문 - if not 문과 같은 기능을 합니다.

3. case 문 - 복합 if 문과 같은 기능을 합니다.

 

보시면 한가지 의문이 들겁니다.

"if 문 만으로도 모든 처리가 가능하지 않나?"

결론부터 말씀드리자면 맞습니다.

if 문만 제대로 배우면 다른 명령어들은 패스해도 좋으나,

상황에 따라 여러 명령어들을 혼합하여 쓰기 마련이죠.

간단한 조건문 예제를 만들어 보겠습니다.

 

if $game_party.actors[0].name == "아르시스"

print "안녕?"

end

if $game_party.actors[0].name == "나르풀"

print "안녕?"

end

 

이를 우리나라 언어로 번역해 보자면

 

파티 0번째 멤버 이름이 "아르시스" 일 경우

"안녕" 을 출력한다.

파티 0번째 멤버 이름이 "나르풀" 일 경우

"안녕" 을 출력한다.

 

이렇게 되겠네요.

일단 == 과 같은 비교 연산자에 대해서 알아봅시다.

비교 연산자에는 6가지 종류가 있습니다.

 

1. == - 같다

2. != - 같지 않다

3. > - 크다

4. < - 작다

5. >= - 크거나 같다

6. <= - 작거나 같다

 

여기서 주의할 점!  == 와 = 는 다릅니다.

우리는 수학시간에 ~는 ~와 같다를 ~ = ~ 라고 배웠지만,

스크립트에서는 == 는 앞의 값과 뒤의 값을 비교하는 것이고

= 는 앞의 값에 뒤의 값을 대입하는 것입니다.

 

자, 쓰고 나니 문제가 생겼습니다.

아르시스나 나르풀이 아닌 경우는 어떻게 할까요?

이번에도 예제를 통해 알아보도록 하겠습니다.

 

if $game_party.actors[0].name == "아르시스"

print "안녕?"

elsif $game_party.actors[0].name == "나르풀"

print "안녕?"

else

print "넌 누구야? 듣보잡이네 ㅉ"

end

 

이를 우리나라 언어로 번역해 보자면

파티 0번째 멤버 이름이 "아르시스" 일 경우

"안녕?" 을 출력한다.

파티 0번째 멤버 이름이 "나르풀" 일 경우

"안녕?" 을 출력한다.

그 외의 경우

"넌 누구야? 듣보잡이네 ㅉ" 를 출력한다.

 

elsif 문과 else 문이 사용되었습니다.

elsif 문은 해당 문 위쪽의 if 문이 거짓일 경우 실행됩니다.

else + if 인 셈이지요.

else 문은 조건문의 가장 아래쪽에 위치하며,

위의 조건들이 모두 거짓일 때 실행됩니다.

 

이번에는 코드가 너무 긴 것 같습니다.

이를 좀 간단하게 줄여 봅시다.

 

if $game_party.actors[0].name == "아르시스" or $game_party.actors[0].name == "나르풀"

print "안녕?"

else

print "넌 누구야? 듣보잡이네 ㅉ"

end

 

이를 우리나라 언어로 번역해 보자면

파티 0번째 멤버 이름이 "아르시스" 또는 파티 0번째 멤버 이름이 "나르풀" 일 경우

"안녕?" 을 출력한다.

그 외의 경우

"넌 누구야? 듣보잡이네 ㅉ" 를 출력한다.

 

자, 또 처음 보는 or 이라는 녀석이 나타났습니다.

이런 녀석들을 논리 연산자라고 합니다.

논리 연산자에는 3가지 종류가 있습니다.

 

1. and (&&) - 앞의 조건과 뒤의 조건을 모두 만족하면 참

2. or (||) - 앞의 조건과 뒤의 조건 중 하나만 만족하면 참

3. not (!) - 앞의 조건을 만족하고 뒤의 조건을 만족하지 않으면 참

 

이러한 논리 연산자는 복잡한 조건을 처리할 수 있게 해줍니다.

다음으로 위 내용을 unless문, case 문으로 바꾸어 보겠습니다.

 

unless $game_party.actors[0].name == "아르시스" or $game_party.actors[0].name == "나르풀"

print "넌 누구야? 듣보잡이네 ㅉ"

else

print "안녕?"

end

 

이를 우리나라 말로 번역해 보자면

파티 0번째 멤버 이름이 "아르시스" 나 "나르풀"이 아닐 경우

"넌 누구야? 듣보잡이네 ㅉ" 출력한다.

그 외의 경우

"안녕?" 을 출력한다.

저는 지금까지 스크립트를 짜오면서 unless 문을 단 한번도 쓴적이 없습니다.

다른 분들이 이런것도 있구나, 하고 알아야 할 것 같아서 써봤습니다.

 

case $game_party.actors[0].name

when "아르시스"

print "안녕?"

when "나르풀"

print "안녕?"

else

print "넌 누구야? 듣보잡이네 ㅉ"

end

 

이를 우리나라 말로 번역해 보자면

파티 0번째 멤버 이름으로 분기

"아르시스" 일 경우

"안녕?" 을 출력한다.

"나르풀" 일 경우

"안녕?" 을 출력한다.

그 외의 경우

"넌 누구야? 듣보잡이네 ㅉ" 출력한다.

 

 

#3. 숙제

 

a 변수에 "안녕" 을 대입합니다.

b 변수에 "하세요" 를 대입합니다.

c 변수에 a와 b를 합쳐서 대입합니다.

c가 "안녕하세요" 일 경우 "네 안녕하세요" 를, 그 외의 경우 "왜 인사안해요" 를

출력하는 조건문을 만들어 봅시다. if/case/unless 문 모두로 하나씩 만들어 보세요.

 

 

숙제는 답글로 달아주세요~

?
  • ?
    청담 2013.09.24 10:49
    감사합니다.
  • ?
    undefined 2013.10.01 22:39
    저 그런데 스크립트 계시판과 프로그래밍 계시판의 차이점은 무엇인가요?
    프로그래밍 게시판은 비어있네요..
  • ?
    리폼 2014.01.30 20:28
    감사합니다
  • ?
    BJ마늘빵 2014.02.21 19:54
    아.................뭔소리인지........제이해력이달리나봐요
  • ?
    [키트] 2014.03.04 06:44
    어후 어지러운건 나뿐인가..
  • ?
    파이썬 2015.08.17 04:39
    C언어 등을 기본적으로 알고 있다는 전제 하에 설명하시는 것 같네요...
    프로그래밍을 한 번도 해보지 않으신 분들에게는 약간? 난이도가 있을 것 같군요.

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수 추천 수
공지 초급강의실 게임제작강좌 A-Z 색인 (2016.1.24 ver) 2 file 천무 2016.01.12 7373 1
32 고급강의실 RGSS 스크립트 강좌 입문 13 - 클래스(Class) 5 마니아 2013.09.16 2317 2
31 고급강의실 RGSS 스크립트 강좌 입문 12 - 연상 배열(Associative Array) 4 마니아 2013.09.16 1600 1
30 고급강의실 RGSS 스크립트 강좌 입문 11 - 배열(Array) 6 마니아 2013.09.16 1701 1
29 고급강의실 RGSS 스크립트 강좌 입문 10 - 그래픽 표시 4 마니아 2013.09.16 2183 0
28 고급강의실 RGSS 스크립트 강좌 입문 9 - 오브젝트(Object) 4 마니아 2013.09.16 1642 0
27 고급강의실 RGSS 스크립트 강좌 입문 7 ~ 8 - 함수(Function) 3 마니아 2013.09.16 1924 0
26 고급강의실 RGSS 스크립트 강좌 입문 6 - 루프(Loop) 2 마니아 2013.09.16 1586 0
25 고급강의실 RGSS 스크립트 강좌 입문 5 - 조건분기 4 마니아 2013.09.16 2131 0
24 고급강의실 RGSS 스크립트 강좌 입문 4 - 캐릭터 라인 4 마니아 2013.09.16 2274 1
23 고급강의실 RGSS 스크립트 강좌 입문 3 - 메서드(Method) 4 마니아 2013.09.16 1876 0
22 고급강의실 RGSS 스크립트 강좌 입문 2 - 수 3 마니아 2013.09.16 2256 0
21 고급강의실 RGSS 스크립트 강좌 입문 1 - 기초 개념 8 마니아 2013.09.16 4351 0
20 고급강의실 뮤's 실전 스크립팅 강좌 [5. 실전! 반복문을 응용하자!] 2 마니아 2013.09.16 1411 0
19 고급강의실 뮤's 실전 스크립팅 강좌 [4. 실전! 플래싱 메시지를 만들어보자] 3 마니아 2013.09.16 2081 0
18 고급강의실 뮤's 실전 스크립팅 강좌 [3. 기초 문법 다지기 (하)] 6 마니아 2013.09.16 1145 0
17 고급강의실 뮤's 실전 스크립팅 강좌 [2. 기초 문법 다지기 (중)] 3 마니아 2013.09.16 1371 0
» 고급강의실 뮤's 실전 스크립팅 강좌 [1. 기초 문법 다지기 (상)] 6 마니아 2013.09.16 2351 0
15 고급강의실 RGSS2 강좌 1 비형랑 2012.10.01 2528 0
14 중급강의실 [RPGVX ACE] 소재규격과 강의수록 1 2 비형랑 2012.10.01 3273 0
13 초급강의실 [RPG VX ACE] 초심자강의 1 1 비형랑 2012.10.01 3168 2
Board Pagination Prev 1 ... 4 5 6 7 8 9 10 Next
/ 10






[개인정보취급방침] | [이용약관] | [제휴문의] | [후원창구] | [인디사이드연혁]

Copyright © 1999 - 2016 INdiSide.com/(주)씨엘쓰리디 All Rights Reserved.
인디사이드 운영자 : 천무(이지선) | kernys(김원배) | 사신지(김병국)