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

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

뮤's 실전 스크립팅 강좌

 

[3. 기초 문법 다지기 (하)]

 

 

드디어 망할 기초다지기를 벗어납니다!

여기까지만 어느정도 이해 하시면 웬만한 스크립트는 스스로 짤 수 있어요!

저번 강에서 써놨는데 아무 반응이 없길래 한번 더 써봅니다.

4강부터는 직접 스크립트를 짤 예정이니, 만들어 보고 싶은 스크립트를 덧글로 달아주세요^^

이번 강에서는 함수와 클래스에 대해 알아보겠습니다.

 

 

#1. 함수

 

스크립트에서 '함수' 란 명령어의 집합을 의미합니다.

함수라는 하나의 큰 상자 안에 지금까지 배운 내용들을 집어넣죠.

아주 간단한 예를 하나 들어보겠습니다.

스크립트 에디터 왼편을 보시면 리스트 박스가 있습니다.

아무 곳이나 우클릭 후 추가를 눌러봅시다.

그러면 빈 섹션이 하나 나옵니다.

거기에 아래 내용을 똑같이 쳐봐요!

 

 

 def hello

   name = "뮤"

   print "안녕하세요? 저는 #{name}라고 해요"

 end

 

 

잘 보시면 #{name}이라고 있습니다.

이건 뭐하는 녀석인고 하니..

변수를 문자열에 넣어주는 역할을 합니다.

간단한 예제만 보고 넘어가겠습니다.

 

 

 name = "뮤"

 print "안녕하세요. 저는 뮤라고 해요."

 print "안녕하세요. 저는 #{name}라고 해요."

 print "안녕하세요. 저는 " + name + "라고 해요."

 

 

물론 셋 다 같은 결과를 출력합니다.

이런 식으로 변수를 문자열에 넣어서 출력할 수 있습니다.

다시 본론으로 돌아가서, hello 함수를 만드셨나요?

그럼 이제 main 섹션으로 가봅시다.

그리고 다음과 같이 수정해줍니다.

 


 # 씬 오브젝트 (타이틀 화면)를 작성
 $scene = Scene_Title.new

 

 이 부분 바로 아래에 hello를 추가해줍시다.

 

 # 씬 오브젝트 (타이틀 화면)를 작성
 $scene = Scene_Title.new

 hello

 

 이렇게 되겠네요.

 

 

대충 이해가 가시나요?

이처럼 함수는 자주 쓰는 명령어들을 묶어 놓으면 편리합니다.

또한 함수에는 '인수' 라는 것이 있습니다.

이 인수는 외부로부터 값을 받아서 함수 내에서 사용할 수 있게 해줍니다.

예제를 통해 알아봅시다.

 

 

 def hello(name)

   print "안녕하세요. 저는#{name}라고 해요."

 end

 

 

자, 그럼 이건 어떻게 사용할까요?

다시 main 섹션으로 가서 아래와 같이 수정해줍니다.

 

 

 # 씬 오브젝트 (타이틀 화면)를 작성
 $scene = Scene_Title.new

 hello("뮤")

 

 

이렇게 외부에서 필요에 따라 값을 바꿔줄 수 있죠.

이 외에도 인수를 선언(?) 하는 방법에는 여러가지가 있지만,

직접 사용하면서 익히는 게 더 나을 듯 하네요^^!

 

 

#2. 클래스

 

클래스는 여러 개의 함수를 모아 관리하는 역할을 합니다.

말하자면 함수의 집합체이죠.

간단한 예제를 통해 클래스가 뭔지 알아보도록 하겠습니다.

 

 

 class Shop

   def initialize

     print "안녕하세요?"

   end

 

   def buy(item)

     print "#{$data_items[item].name} 을 1개 구입했습니다."

   end

 

   def info

     print "저는 뮤님의 노예임다 ㅠㅠ"

   end

 end

 

 

일단 위와 같은 스크립트를 짜 봅시다.

그리고 나서 아래와 같이 사용합니다.

 

 

 kaede = Shop.new

 kaede.buy(1)

 kaede.info

 

 

한번 설명을 해 보겠습니다.

일단 kaede라는 변수에 Shop 클래스를 선언합니다.

이제 이 kaede라는 변수는 Shop 클래스의 함수를 쓸 수 있습니다.

 

근데 실행시키면 이상한 결과가 나옵니다!

왜 kaede.initialize를 쓰지도 않았는데 "안녕하세요" 가 출력되는 걸까요?

initialize 함수는 클래스 선언시 자동으로 실행되는 함수이기 때문입니다.

그럼 이 함수에 인수가 붙으면 어떻게 될까요?

 

 

 class Shop

   def initialize(name)

     @name = name

   end

 

   def buy(item)

     print "#{$data_items[item].name} 을 1개 구입했습니다."

   end

 

   def info

     print "제 이름은 " + @name + "입니다."

   end

 end

 

 

일단 스크립트를 위처럼 수정해줍니다.

그리고 나서 이렇게 new 옆에 인수를 넣어 주시면 됩니다.

 

 

 kaede = Shop.new("카에데")

 kaede.info

 

 

마지막으로 슈퍼 클래스입니다.

한 클래스가 다른 클래스를 상속받을 때, 상속되는 클래스가

슈퍼 클래스(부모 클래스), 상속받는 클래스가 자식 클래스가 됩니다.

이 때, 자식 클래스는 부모 클래스의 함수와 인스턴스 변수를 사용할 수 있습니다.

부모 클래스의 함수를 사용할 때는 super라는 명령어를 사용합니다.

예제를 통해 알아봅시다!

 

 

 class Shop

   def initialize(name)

     @name = name

   end

 

   def buy(item)

     print "#{$data_items[item].name} 을 1개 구입했습니다."

   end

 

   def info

     print "제 이름은 " + @name + "입니다."

   end

 end

 

 class Weapon_Shop < Shop

   def initialize(name)

     super(name)

     print "여기는 무기 상점입니다."

   end

 

   def info

     super

     print "저는 무기 상인입니다."

   end

 end

 

 

 

 mu = Weapon_Shop.new("뮤")

 mu.info

 

 

결과가 어떤가요!

분명히 Weapon_Shop 클래스의 info 함수에는

이름을 출력하는 구문이 없었는데 이름이 출력됐죠?

이런 식으로 부모 클래스의 함수를 사용할 수 있습니다.

super 문을 쓰지 않으면 부모 클래스의 함수는 실행하지 않고

자신이 가진 함수만 실행합니다.

 

이것으로 기초 다지기를 마칩니다.

다음 강부터는 직접 스크립트를 만들어봐요!

 

이해가 되지 않는 부분은 덧글로 질문해 주세요.

단, 해당 부분을 정확히 말씀해주셔야 합니다.

그냥 무턱대고 "클래스 이해가 안되는데요?" 라고 써놓으시면

저는 강좌를 한번 더 읽으라는 답변밖에 못해드려요^^

 

 

#3. 숙제

 

모르는 것을 질문해 보세요.

 

 

* 4강부터는 실제로 스크립트를 제작할 예정입니다.

만들어 보고 싶은 스크립트를 덧글로 달아주세요.

?
  • ?
    청담 2013.09.24 10:49
    감사합니다.
  • ?
    외계인 2014.01.28 01:51
    머리가 딸려서 진짜 힘드네요...
    포켓몬 처럼 주인공을 보관하고 데려오는 식의 스크립트를 만들고 싶어서 노가다 좀 해보려 했는데ㅠㅠ
    제가 이해력이 딸려서 뭔소린지를 모르겠네요
    좋은 강좌 감사합니다.
  • ?
    외계인 2014.01.28 02:14
    그..스크립트에서 (),[],{} 사용되는 괄호의 역할이 다른가요?
    그리고 . 마침표 이거 어떻게 사용하는 거예요?
  • ?
    리폼 2014.02.03 02:51
    감사합니다.
  • ?
    BJ마늘빵 2014.02.21 20:08
    포기
  • ?
    짱짱REG1 2014.09.28 05:04
    ㅋㅋㅋ

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수 추천 수
공지 초급강의실 게임제작강좌 A-Z 색인 (2016.1.24 ver) 2 file 천무 2016.01.12 7374 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 2184 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
» 고급강의실 뮤's 실전 스크립팅 강좌 [3. 기초 문법 다지기 (하)] 6 마니아 2013.09.16 1145 0
17 고급강의실 뮤's 실전 스크립팅 강좌 [2. 기초 문법 다지기 (중)] 3 마니아 2013.09.16 1371 0
16 고급강의실 뮤'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(김원배) | 사신지(김병국)