RPG Maker
2007.09.12 09:15

[한단계 도약] 되풀이 처리

조회 수 1508 추천 수 2 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

이 강좌를 쓰게 된 게기는 아싸사랑님의 괴물이다!!를 플레이 하면서 입니다.


이 게임이 대단한 작품임에는 틀림없습니다만 별 노가다 없이 만들 수 있었는데


노가다를 해서 고생을 하신 것 같아 안타까운 마음이 많이 들었습니다.


스위치, 변수만 알고 있어도 왠만한 시스템은 다 구현할 수 있습니다.


하지만 시스템이 복잡해질수록 너무 많은 노가다가 들어갑니다.


이런 노가다를 크게 줄일 수 있는 여러가지 기능들이 알만툴에 있습니다.


그것을 다양한 분이 쓸 수 있기를 바라며 강좌를 씁니다 -ㅁ-


 


C++나 RPGXP를 배운 분이라면 while문이나 for문을 알고 있을 것입니다.


아니면 RPGXP에서 loop do라는 문도 있습니다.


이런 것을 반복문이라고 합니다.


일단 이벤트 커맨드에 "되풀이 처리"라는 것이 있습니다.


이것을 이용해서 다음 알고리즘을 만듭시다.


◆반복 처리


   문장의 표시 : 뭐임마 싸우자?


 : 이상 반복


( 이벤트 커맨드에선 되풀이 처리라고 나오지만 실행내용에선 반복 처리로 나옵니다. 신선짱님의


실수인 듯 합니다 )


이러고 테스트 플레이를 실행해서 해당 이벤트를 실행해 봅시다.


뭐임마 싸우자? 가 무한으로 뜰 것입니다.


이것을 "무한 루프'라고 하는데 그건 집어치우고 중요한 것은


반복 처리와 이상 반복의 사이에 끼워져 있는 이벤트들이 연속적으로 실행되고 있다는 사실입니다.


하지만 이 반복은 대부분 언젠가는 중단되야 하겠죠? -_-;;


이벤트 커맨드에서 "되풀이 처리의 중단"이란 커맨드가 있습니다. 이것을 이용해서 다음 알고리즘을


만듭시다.


 


◆반복 처리


   문장의 표시 : 뭐임마 싸우자?


   ◆반복 처리의 중단


 : 이상 반복


( 이벤트 커맨드에선 되풀이 처리 중단이라고 나오지만 실행내용에선 반복 처리로 나옵니다.


신선짱님의 실수인 듯 합니다 )


이렇게 하면 전과는 달리 뭐임마 싸우자?가 1번만 뜨고 더이상은 뜨지 않습니다. 반복이 중단된


것입니다. 다음 알고리즘을 또 만들어 봅시다.


◆반복 처리


   문장의 표시 : 뭐임마


   ◆반복 처리의 중단


   문장의 표시 : 싸우자?


 : 이상 반복


이러면 뭐임마가 뜬다음 싸우자?가 뜨지 않습니다.


"반복처리가 중단" 이후부터 : 이상 반복 까지의 커맨드도 무시한다는 뜻입니다.


이것을 헷갈리지 마시기 바랍니다(저도 쓸때 약간 혼란을 겪었습니다)


되풀이 처리는 일반적으로 두 가지에 쓰입니다(다른 경우에 쓰일 수도 있습니다)


1. 노가다를 줄인다(특히 변수 번호의 변수와 섞어 쓰면 엄청난 효과를 거둘 수 있다)


2. 라벨을 대신한다


일단 노가다를 줄입니다. 주로 이런 이유로 쓰이리라 믿습니다.


만일 1부터 100까지 출력한다면 당신은 이렇게 만들어야 합니다.


◆변수의 조작 : 변수 0001, 가산, 1


◆문장의 표시 : v[1]


◆변수의 조작 : 변수 0001, 가산, 1


◆문장의 표시 : v[1]


◆변수의 조작 : 변수 0001, 가산, 1


◆문장의 표시 : v[1]


...(중략)


◆변수의 조작 : 변수 0001, 가산, 1


◆문장의 표시 : v[1]


고로 당신은


"


◆변수의 조작 : 변수 0001, 가산, 1


◆문장의 표시 : v[1]


"


를 100번이나 써야 한다는 겁니다.


복사 붙여넣기를 하면 되지만 오래 걸리고 내용도 대단히 길어질 뿐 아니라


 도중에 버그가 일어나거나 횟수가 차이나면 수정하기도 어렵습니다 ㅡㅡ;;


이런 비효율적인 알고리즘을 되풀이 처리를 이용하면 효율적으로 만들 수 있습니다.


◆반복 처리


   ◆조건 분기 : 변수 0001이 100보다 크다


      ◆반복 처리의 중단


    : 분기 종료


   ◆변수의 조작 : 변수 0001, 가산, 1


   ◆문장의 표시 : v[1]


 : 이상 반복


진짜 짧아졌죠? 뿐만 아니라 정확성, 효율성은 물론 수정도 쉽게 할 수 있습니다.


좀 더 발전해서 변수 번호의 변수와 병행한다면 진짜 고수분이 될 겁니다.


...


다음으로 라벨을 대신한다니, 이건 무슨 소리인가?


다음은 라벨의 설정으로 만든 "주사위를 다시 굴린다" 시스템입니다.


라벨에 친숙한 분이라면 금방 이해하실 수 있을 겁니다.


 


◆라벨의 설정 : 1번


◆변수의 조작: 0001:아햏, 대입 1~6


◆문장의 표시 : v[1]


◆문장의 표시 : 다시 굴리시겠습니까?


◆선택지의 표시 : 예 / 아니오


◆예의 경우


   ◆지정 라벨의 이동 : 1번


◆아니오의 경우


 : 분기 종료


 


이것을 이렇게 고칠 수 있습니다.


 


◆반복 처리


   ◆변수의 조작: 0001:아햏, 대입 1~6


   ◆문장의 표시 : v[1]


   ◆문장의 표시 : 다시 굴리시겠습니까?


   ◆선택지의 표시 : 예 / 아니오


   ◆예의 경우


   ◆아니오의 경우


      ◆반복 처리의 중단


    : 분기 종료


 : 분기 종료


 


지정 라벨의 처리엔 아무것도 내놓지 않고(그러면 반복한답시고 위에 있는 이벤트부터


다시 시작하니까 라벨의 설정 밑의 이벤트들이 반복 처리 이벤트 안에 있으면 같은


효과가 나는 셈이다.) 지정 라벨의 처리를 안쓸 곳에는 반복 처리의 중단을(돌아가지


않을거니까...) 시킵니다. 그런 원리입니다.


굳이 이렇게 하는 이유는 라벨의 설정 번호에 한계가 있을 수도 있기 때문입니다 -0-;


 


잘 배우셨습니까?
그럼 당신의 실력확인을 위해 문제를 내겠습니다.


◆주인공의 동작 지정 : 주인공, 투명도 업


◆대기 : 0,1초


◆주인공의 동작 지정 : 주인공, 투명도 업


◆대기 : 0,1초


◆주인공의 동작 지정 : 주인공, 투명도 업


◆대기 : 0,1초


◆주인공의 동작 지정 : 주인공, 투명도 업


◆대기 : 0,1초


◆주인공의 동작 지정 : 주인공, 투명도 업


◆대기 : 0,1초


◆주인공의 동작 지정 : 주인공, 투명도 업


◆대기 : 0,1초


◆주인공의 동작 지정 : 주인공, 투명도 업


◆대기 : 0,1초


◆주인공의 동작 지정 : 주인공, 투명도 업


◆대기 : 0,1초


이것을 간단하게 만들어 보십시오


50%라도 이해하셨다면 하실수 있으리라 믿습니다 ㅇㅅㅇ/


( 이것은 사실 찰드님이 자중지난 알고리즘을 응용해서 연출에서 사용하셨다고 채팅방에서 말씀



  1. 하셨습니다. 좀 불편해 하시더군요 ㅡ,.ㅡ; )
?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
904 RPG Maker RPG 만들기 VX 살펴보기 ㅡㅡ; abszzang 2008.01.10 2485
903 RPG Maker rpg만들기 DS 사용법(60%) GMF 2008.01.01 3402
902 언어/기타 흥크립트 팁 A. 미스릴 2007.12.30 1585
901 RPG Maker RPG만들기 실력테스트! 엔젤레기온 2007.12.18 2860
900 언어/기타 1. 게임 시나리오의 기초 1 샤르엘 2007.11.27 1884
899 RPG Maker RPG 2000/2003에서의 마우스 사용(수정) file Black-☆ 2007.11.19 3190
898 언어/기타 서로 돕고 사는 세상~ Zeprod 2007.11.19 1575
897 언어/기타 (2003) 연속공격 버프 스킬로 '공격' 커맨드의 활용도를 늘려보자. 땡중 2007.11.17 1924
896 언어/기타 게임 시나리오 쓰기에 앞서 샤르엘 2007.11.09 1668
895 RPG Maker [한단계 도약]변수 번호의 변수 A. 미스릴 2007.10.12 1485
894 RPG Maker RPG에 자주 있는것들 1 ⓦildⓡose★ 2007.09.28 2616
893 RPG Maker 한가지 경우에만 적용되는 경험치 게이지바 file 베넘 2007.09.21 2058
892 언어/기타 [한단계 도약] 변수 번호의 스위치 2 A. 미스릴 2007.09.13 1694
» RPG Maker [한단계 도약] 되풀이 처리 A. 미스릴 2007.09.12 1508
890 RPG Maker 간단팁) XP에서 1초는 몇프레임인가? 유진 2007.09.04 2158
889 RPG Maker 게이지만들기 톱과잴리 2007.08.25 668
888 언어/기타 대기중에 캐릭터가 움직이게/못움직이게 하려면? 유진 2007.08.24 1700
887 RPG Maker RPG 2K시리즈에서도 Script의 사용이 가능합니다. 타다기 2007.08.21 2177
886 언어/기타 귀찮아‡님의 자동세이브 스크립트의 한글화 J.Clifford 2007.08.20 1771
885 RPG Maker 가장 보편적인 범위 좌표 설정하기. 1 아싸사랑 2007.08.16 2307
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 51 Next
/ 51






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

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