Advanced Classroom
2013.09.16 06:30

RGSS 스크립트 강좌 입문 5 - 조건분기

Views 2360 Votes 0 Comment 4
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print Update Delete
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print Update Delete
한번씩 게임제작 하셨던 분들이라면 익숙한 이름일텐데요. 이해하는데도 쉬울겁니다.

1. 비교연산자

지난번에는 대입연산자와 비교대입연산자를 배웠는데, 이번엔 비교연산자입니다. 말 그대로 좌변과 우변을 비교해주는거라 할수있지요.
비교연산자는 다음과 같습니다. 

== 같다.
!= 같지않다.
< 좌변이 우변보다 작다.
> ~크다.
<= ~작거나 같다.
>= ~크거나 같다.

지난번에도 언급했지만 =는 대입연산자고 equal의 의미를 같는건 == 입니다. 
(참고로 비교연산자는 캐릭터라인도 처리할수있습니다. 뭐. ==랑 != 뿐이겠지만)

3. 진위값

진위값은 아주중요합니다. 비교연산자의 답이기 때문입니다.  
(게다가 원래는 유사변수라고 불리면서 모든것을 평정하는 삼위일체이기도 합니다. 유사변수는 다음에 알아보도록 하지요.)
다음과 같습니다.

true  
false  

설명할것도 없이 true 는 진을 뜻합니다. false 는 거짓을 뜻하고요. 단순한만큼 중요합니다.

4. 논리연산자

다음 연산자를 논리연산자라고 한다.

and
&&

or
||

not
!

중학교 다닌분들은 뭐 모를것도 없습니다. 

|은 원기호위에 있습니다. 시프트와 같이 눌러주면 됩니다.

and 는 그리고
or 은 또는
not은 true 와 false 을 반대로 돌려주는 연산자입니다.  

좀더 디테일한 예를 들면 이정도입니다.

p (100 > 1 and 1 + 1 == 2)         
p (100 > 1 && 1 + 1 == 2)         

둘다 true 입니다. 
일단 and와 &&은 같은 연산자입니다. 
비교연산자는 식과 식 가운데에서 작용을 합니다. 
and 연산자는 두식이 모두 성립해야만 true 가 출력되고,
 하나라도 성립되지 않으면 false이 출력되겠지요.
위의 내용같은경우에는 and를 기준으로 식이 모두 성립했기 때문에 true가 출력됩니다.
참고로 and가 들어간 시점에서 이미 괄호가 씌워져있는거나 같은것입니다만, 묶어두면 알아보기 편하기 때문에 씌웠습니다.

p (1 + 1 == 3 or 2 + 2 == 3)        
p (1 + 1 == 3 || 2 + 2 == 3)        

or 연산자는 자신을 기준으로 좌변과 우변의 식중 하나라도 성립하면 true가 됩니다만, 
이경우에는 모두 성립되지 않았기 때문에 false가 됩니다.

p (not 2 + 2 == 2)                 
p (!  true) 

not은 위에 and와 or과는 좀 다르게 자신 뒤에 있는 식의  true 와 false 을 반대로 돌려주는 연산자입니다. 따라서 첫번째항은 true 가 되고 둘째항은 false 가 됩니다. 
not과 !은 또 다른데 not은 식을 돌려줄수있는데 반해 !은 진과 거짓만 돌려줍니다.




뭐든지 그렇지만 비교연산자에서 주의해줄것은 꼭 좌변에서 우변으로 진행해야된다는것이 있겠군요.

5. 조건분기


if ~ end 는 조건분기 구문입니다. 영어의 if와 같이 " 만약 ~ " 으로 시작해서 유용한 시스템을 만들어줍니다.
조건분기에서 사용하는 예약어에는 몇가지가 있습니다.

if 
unless
else   
elsif
case

일단 if는 조건이 채워질경우 처리를 만들때 씁니다.
unless는 조건이 채워지지 않았을경우 처리를 만들때 씁니다. if와 반대입니다.

else는 조건이 채워지지 않는 경우에  써줍니다.
조건이 채워지지않는 경우에 다른 분기을 세우고 싶을때는 elsif를 써줍니다.
case는 일정 조건이었을때 분기시키고 싶은경우 씁니다.

예를 하나씩 들어보겠습니다.
다음은 if의 예제입니다.


a = 20               # 메서드 a 에 20 을 대입한다.

if a >= 10          # 만약 a 가 10 이상이면,
  print "big"       #   big 을 표시한다.
end                     # 분기 종료.


다음은 unless의 예제입니다.

a = 7                       # 메서드 a 에 7 을 대입한다.

unless a >= 10       # 만약 a 가 10 이상이 아니라면,
  print "small"        #   small 을 표시한다.
end                         # 분기 종료.



다음은 else와 elsif의 예제입니다.


a = 7               # 메서드 a 에 7 을 대입한다.

if a >= 10               # 만약 a 가 10 이상이면,
  print "big"            #   big 을 표시한다.
elsif a >= 5             #  a 가 5 이상이면,
  print "medium"    #   medium 을 표시한다.
else                         # 그 외라면
  print "sm   all"     #   small 을 표시한다.
end                         # 분기 종료.

다음은 case의 예제 입니다.

a = 0               # 메서드 a 에 0 을 대입한다.

case a                # 분기 개시.
when 0              #  a 가 0 일때,
  print "영 "      #   영을 표시한다.
when 1              #  a 가 1 일때,
  print "일 "      #   일을 표시한다.
when 2              #  a 가 2 일때,
  print "이 "      #  이를  표시한다.
end                    # 분기 종료.


조건분기 조금 만지신분들은 이해하기 편할겁니다.

?

List of Articles
No. Category Subject Author Date Views Votes
Notice Beginner Classroom 게임제작강좌 A-Z 색인 (2016.1.24 ver) 2 file 천무 2016.01.12 8178 1
191 Beginner Classroom [야매 알만툴 MV 강좌] - 연출과 기능. 두마리 토끼를 동시에. 케이디 2018.09.10 2889 0
190 Beginner Classroom RPG Maker MV에서 도트 느낌의 폰트 사용하기 1 file 러닝은빛 2018.07.15 5121 1
189 Beginner Classroom [ MV ] 1-1 " RPG MAKER MV에 대하여 알아보자! " file 수성의물 2018.07.01 2037 0
188 Beginner Classroom [DLC 매뉴얼] GENE 도움말 한글화 Part.3 이용규약 file 이니군 2018.04.25 1035 0
187 Beginner Classroom [DLC 매뉴얼] GENE 도움말 한글화 Part.2 이벤트 타입과 메뉴 바 컨텐츠 file 이니군 2018.04.25 1027 0
186 Beginner Classroom [DLC 매뉴얼] GENE 도움말 한글화 Part.1 씬 빌더의 개요와 씬빌더 시작하기 1 file 이니군 2018.04.24 2360 1
185 Beginner Classroom 느무느무 쉬운 XAS강좌!(VXA용)1.다운로드 및 규정. file 약빨은ㄱㅏㅅㅣ 2017.11.28 1743 0
184 Beginner Classroom 저 같은 사람 생기지 말라고 만드는 XAS(액션알피지[액알])강 좌!(VX ACE용) 약빨은ㄱㅏㅅㅣ 2017.11.28 1555 0
183 Beginner Classroom [MV] Iavra Splash Video(스플래시/인트로영상 제작 시 스킵기능 부여 플러그인) file 이니군 2017.09.11 1474 0
182 Beginner Classroom RPG MAKER MV Tool Program-MADO 설치 및 적용기 1 file 이니군 2017.09.08 2654 0
181 Beginner Classroom 커먼이벤트로 은행시스템 만들기(23:00 그림 링크 재수정) 3 file 이니군 2017.08.28 1849 0
180 Advanced Classroom [RMMV] 크로노 엔진(Chrono Engine) 플러그인 사용법 1 러닝은빛 2017.07.16 4051 2
179 Intermediate Classroom 네코플에서 VXA 선택지 잘리는 버그 해결하는법 file 심심치 2017.06.22 1284 2
178 Beginner Classroom 변수를 이용한 식물 재배 3 file MoonJ 2017.05.28 3553 2
177 Beginner Classroom 누구나 쉽게 따라할 수 있는 액션/슈팅 이벤트 만들기! 4 file 이제리아 2017.01.26 4712 3
176 Intermediate Classroom RPG란 무엇인가?가 하는 강의-1편:대쉬 속도와 걷는 속도를 어떻게 바꾸는가?- 3 file RPG란무엇인가? 2016.10.31 2561 0
175 Intermediate Classroom 쯔꾸르 게임을 네코플레이어에 최적화 시켜보자! # 해상도 편 22 file 양갱님 2016.04.17 36565 10
174 Beginner Classroom 게임의 퀼리티를 높이자! 3편-맵배치 2 ifeve 2016.04.08 5542 2
173 Beginner Classroom Input 객체의 키코드 확장 8 file 러닝은빛 2016.04.05 1664 0
172 Beginner Classroom 초보가쓰는 초보용 Rpg게임 만들기 (xp) 6 Marine 2016.03.13 6504 0
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 Next
/ 10


[privacy statements] | [Terms of Use] | [Contact us] | [Sponsorship] | [Indiside History]

Copyright © 1999 - 2016 INdiSide.com/CL3D Co., Ltd. All Rights Reserved.
Owner : Chunmu(Jiseon Lee) | kernys(Wonbae Kim) | Sasinji(Byungkook Kim)