RPG 만들기 XP

RPG 만들기 XP (RPGXP)는, 롤플레이 게임의 작성에 특화한 컨스트럭션 툴입니다. 작성한 게임은, 만들기 본체를 가지고 있지 않은 유저라도 플레이 할 수가 있습니다.

주된 특징

고정밀 그래픽

640×480 픽셀의 해상도로 32 비트 칼라의 화상을 사용할 수가 있습니다. 알파 채널 (픽셀마다의 투명도)에 완전 대응 하고 있어, 매끄러운 투과 처리, 유연한 반투명 표현이 가능합니다. 화면에의 합성 방법도, 통상의 반투명 합성에 가세해 가산 합성과 감산 합성이 준비되어 있습니다. 또, 폰트에는 자동적으로 에일리어징 제거가 걸리기 (위해)때문에, 엉성함이 눈에 띄지 않습니다.

소프트웨어에 의한 음악 연주

BGM 로서 주로 DirectMusic Synthesizer 에 의한 MIDI 연주가 사용됩니다. 소프트웨어로 연주 하기 위한(해) 외부 음원을 사용할 수 없지 않습니다만, 그 대신해, 음악 소재의 제작자는 다양한 MIDI 음원에의 대응 등을 고려할 필요가 없습니다. 제작 환경으로 정상적으로 연주되는 MIDI 파일은, 그대로 모든 환경으로 완전히 똑같이 연주되는 것이 기대 할 수 있습니다.

유연하고 강력한 스크립트

RPGXP 로 작성된 게임은, 스크립트 언어 Ruby 로 기술되어 있습니다. 미리 준비되어 있는 스크립트만으로 충분히 재미있는 게임을 작성하는 것이 가능합니다만, 한층 더 고도의 게임 제작의 요구에 응하기 (위해)때문에, 화면 디자인으로부터 전투 시스템에 이를 때까지, 게임의 모든 요소를 커스터마이즈(customize) 할 수 있는 유연성을 갖추고 있습니다. RPG 이외의 장르의 게임을 작성하는 것도 가능합니다.

목차

  • 동작환경
  • 게임의 조작 방법
  • 팝 힌트
  • 프로젝트
  • 맵
  • 이벤트
  • 데이타베이스
  • 스크립트


동작환경

RPGXP 의 동작환경은 이하와 같습니다.

최소 시스템 구성

OS | Windows 98 / 98SE / Me / 2000 / XP 한글판
CPU | Intel PentiumIII 800MHz 상당 이상
메모리 | 128 MB 이상
비디오 카드 | 해상도 1024×768 이상으로 High Color 표시를 할 수 있는 것
사운드 카드 | DirectSound 에 대응한 것
하드 디스크 | 빈 용량 100MB 이상

※게임 작품에 따라서는, 상기 스펙(명세서)에서는 쾌적하게 플레이 할 수 없는 경우가 있습니다.

추천 시스템 구성

OS | Windows XP 한글판
CPU | Intel Pentium4 1.5GHz 상당 이상
메모리 | 256 MB 이상
비디오 카드 | 해상도 1024×768 이상으로 True Color 표시를 할 수 있는 것
사운드 카드 | DirectSound 에 대응한 것
하드 디스크 | 빈 용량 500MB 이상


������ ���� ���

게임의 조작 방법

  • 기본 조작
  • 게임의 프롭퍼티
  • 그 외의 조작

기본 조작

RPGXP 의 게임은, 8 버튼 게임패드에서의 조작을 기준으로 하고 있습니다.

각 버튼 (A, B, C, X, Y, Z, L, R)의 대응은, 디폴트에서는 다음과 같이 되어 있습니다. 게임패드에 따라서는 A, B, C 등의 이름이 그대로 각인 되어 있기 때문에, 그러한 제품을 사용하면(자), 보다 알기 쉬워집니다.

이름 | 게임패드 | 키보드 | 주된 기능
A | 버튼 1 | Shift, Z | -
B | 버튼 2 | Esc, Num 0, X | 취소, 메뉴
C | 버튼 3 | Space, Enter, C | 결정
X | 버튼 4 | A | -
Y | 버튼 5 | S | -
Z | 버튼 6 | D | -
L | 버튼 7 | Q, Pageup | 전 페이지
R | 버튼 8 | W, Pagedown | 다음 페이지

상기의 「주된 기능」은 표준적인 게임의 조작이고, 게임 작품에 따라서는 독자적인 조작을 할당할 수 있고 있는 경우가 있습니다.

이 외 , 게임패드의 방향 버튼 또는 키보드의 커서 키를 사용해, 캐릭터나 커서의 이동을 합니다.

게임의 프롭퍼티

게임의 실행중에 F1 키를 누르면(자), 우도와 같은 윈도우가 표시됩니다. 이 윈도우로, 게임패드나 키보드의 버튼 할당을 커스터마이즈(customize) 할 수가 있습니다. [리셋트] 버튼을 누르면(자), 디폴트의 설정에 귀가 .

[일반] 페이지에서는 다음의 설정 을 할 수가 있습니다.

나메라들인가 모드
게임은 통상, 초간 20 프레임으로 동작합니다만, 추천 시스템 구성 이상 의 환경에서는 초간 40 프레임의 매끄러운 움직임을 즐거움 받을 수 있습니다.
화면 묘화후들 다하고를 억제한다
수직귀선구간을 기다리고 나서 화면을 갱신하는 것으로, 미세한 깜박거림을 최소한으로 억제하는 설정입니다. 그 대신해, 화면이 묘화 되는 것이 약간 늦어져 끝내는 경우가 있습니다. ON, OFF 의 어느 쪽을 쾌적하게 느낄까는, PC 환경이나 개인의 취향에 좌우 됩니다.
BGM 및 ME 를 연주한다
게임중의 음악을 들을까 반대인지를 선택합니다. 다른 음악을 들으면서 테스트 플레이를 하고 싶을 때 등은, 무음에 설정할 수가 있습니다.
BGS 및 SE 를 연주한다
효과음을 들을까 반대인지를 선택합니다.

그 외의 조작

키 | 기능
Alt+Enter | 윈도우 모드와 풀 스크린 모드의 변환을 합니다.
Alt+F4 | 강제적으로 게임을 종료합니다.
F12 | 강제적으로 타이틀 화면으로 돌립니다.
F2 | 테스트 플레이시, 타이틀 바에 FPS (초간 당의 프레임수)를 표시합니다.
F9 | 테스트 플레이시, 이동중에 누르는 것으로 디버그 화면 (스윗치, 변수의 일람)을 호출합니다.
Ctrl | 테스트 플레이시, 누르면서 이동하면(자) 란담엔카운트가 무효가 되어, 통행 불가의 타일을 빠져나 이동 할 수 있습니다.


�� ��Ʈ

팝 힌트

RPGXP 에서는, 거의 모든 다이알로그 박스의 콘트롤에 대응한다 간단한 해설이 준비되어 있어 작업의 흐름을 중단하지 않고 필요한 정보를 얻는다 일이 할 수 있도록 되어 있습니다. 이 기능을 팝 힌트라고 부릅니다. 팝 힌트를 표시하기에는, 이하의 3 종류의 방법이 있습니다.

  1. 콘트롤을 조작중의 상태로 F1 키를 누른다.
  2. 콘트롤상에서 오른쪽 클릭해 pop-up menu를 표시 해,[헬프] 를 선택한다 (우도) . 콘트롤의 종류에 따라서는, 이 방법은 사용할 수 없는 경우가 있습니다.
  3. 타이틀 바의 우우의 [? ] 아이콘을 클릭하고 나서, 목적의 콘트롤상에서 왼쪽 클릭한다.

보다 상세한 정보가 필요한 경우는, 소프트웨어 부속의 메뉴얼을 봐 주세요.


프로젝트

  • 프로젝트의 신규 작성
  • 타이틀의 변경
  • 프로젝트의 조작
  • 게임의 배포

RPGXP 에서는, 작성하는 게임을 프로젝트라고 하는 단위로 관리합니다. 프로젝트를 작성하면(자), 하드 디스크내에 폴더가 작성되어 그 중에 각종의 데이터가 파일로서 보존됩니다.

프로젝트의 신규 작성

프로젝트의 신규 작성

새롭게 게임을 작성하기에는, 메인 메뉴의 [프로젝트] 로부터 [프로젝트의 신규 작성] 을 선택합니다. 다이알로그 박스가 표시되기 때문에, 화면의 지시에 따라 폴더명과 타이틀을 입력해 [OK] 버튼을 누르면(자), 지정 내용에 근거해 새로운 프로젝트 하지만 작성됩니다.

작성된 폴더내에 있는 Game.rxproj 라고 하는 파일이 프로젝트 (을)를 대표 하는 파일입니다. 이후, 이 파일을 더블 클릭 하면(자), 그 프로젝트를 직접 여는 것이 할 수 있도록 됩니다. 편집중의 프로젝트 에의 쇼트 컷을, 데스크탑 등에 만들어 두면(자) 좋을 것이다.

타이틀의 변경

작성한 프로젝트의 타이틀 (게임명)을 후부터 변경하기에는, 그 프로젝트를 연 상태로, 메인 메뉴의 [게임] 으로부터 [타이틀의 변경] 을 선택합니다. 다이알로그 박스가 표시되기 때문에, 새로운 타이틀을 입력해 [OK] 버튼을 누르면(자), 타이틀을 변경하는 것 하지만 할 수 있습니다.

프로젝트의 조작

프로젝트의 삭제나 폴더명의 변경은, RPGXP 의 어플리케이션상의 기능으로서는 준비되어 있지 않습니다. 삭제나 이름 변경을 하고 싶은 경우는, Windows 로 해당하는 폴더를 표시해, 직접 조작을 가 주십시오.

덧붙여 프로젝트의 폴더를 그대로 카피하는 것으로, 게임 전체의 복제를 만들 수가 있습니다. 조작 미스나 예기치 못한 트러블에 의한 데이터 소실의 리스크를 줄이기 (위해)때문에, 작성중의 게임은 정기적으로 백업을 취하는 것을 권유합니다.

게임의 배포

완성한 게임의 데이터를 Web 등으로(이며) 배포하기에는, 메인 메뉴의 [프로젝트] 로부터 [게임 데이터의 압축] 을 선택합니다. 압축이 종료하면(자), 지정한 폴더에 self-extracting file가 작성되기 때문에, 그 파일을 공개하는 것만으로 OK 입니다.

게임을 배포할 때에는, RPGXP 의 본체를 가지고 있지 않은 유저용 에, RGSS-RTP 의 인스톨이 별도 필요한 지를 기재해 둡시다 (RTP 를 필요로 하지 않는 게임을 작성하는 방법도 있습니다만, 권유하지 않습니다) . RGSS-RTP 는 이하의 URL 로부터 다운로드 가능합니다.

데지타르파미통홈 페이지
http://www.enterbrain.co.jp/digifami/

게임의 내용을 타인에게 트크르? 볼 수있고 싶지 않은 경우에는, 압축을 할 때에 「암호화 어카이브(archive)」의 작성을 지시 할 수가 있습니다. 암호화 어카이브(archive)를 작성하면(자) 통상보다 capacity가 커지기 때문에, 어디라도 상관없다고 한다 경우는 사용하지 않는 편이 좋을 것이다.

[게임 데이터의 압축] 기능을 사용하지 않고, 게임 폴더를 다른 소프트로 통째로 압축해 배포해도 특히 문제는 없습니다만, 그 경우는 테스트 플레이의 세이브 데이터를 포함해 버리지 않게 주의해 주세요.


맵

  • 타일과 타일 세트
  • 맵의 작성
  • 층
  • 타일의 배치
  • 오토 타일

필드나 지하 감옥, 마을의 외관이나 건물의 내장 등, 플레이어가 이동 하는 무대의 (일)것을 맵이라고 부릅니다.

게임은 복수의 맵으로 구성되어 있어 각각의 맵간은 이벤트에 따라 왕래 시킬 수가 있습니다. 예를 들어 플레이어가 건물의 입구에 겹쳤을 때에 투명한 이벤트를 기동해, 건물의 내장을 표현한 다른 맵에 장소 이동 시키는 것으로, 각각의 맵이 연결되어 있도록(듯이) 보이는 것 입니다.

타일과 타일 세트

맵은 1 매의 그림과 같이 보입니다만, 실제로는 직소 퍼즐의 부분의 같은 부품을 편성해 구성되어 있습니다. 이 최소 부품의 (일)것을 타일과 부릅니다. 타일의 1 개 1 개에, 캐릭터를 통행 할 수 있을까 할 수 없을까 어느 정보를 할당할 수 있고 있습니다.

특정의 장면을 표현하는 복수의 타일을 하나로 정리해 각종의 설정을 할당 것을 타일 세트라고 부릅니다. 각 맵은 사용하는 타일 세트를 하나 선택해, 그 세트에 포함되어 있는 타일을 맵에 배치 해 나가게 됩니다. 타일 세트에는, 그 맵으로 전투를 일으켰을 때에 표시되는 배경 (배틀 백)의 정보도 포함되어 있기 때문에, 타일 세트를 선택하는 것만으로, 자동적으로 그 자리면에 맞은 배경이 사용됩니다.

맵의 작성

맵의 작성은, 메인 윈도우 좌하에 있는 맙트리뷰로 해 .

우선, 맵 또는 프로젝트 폴더의 항목을 오른쪽 클릭하면(자) 표시 되는 pop-up menu로부터 [맵의 작성] 을 선택합니다. 계속되어, 사용 하는 타일 세트나 맵의 크기 등의 설정을 하는 다이알로그 박스가 표시 되기 때문에, 필요한 정보를 입력해 [OK] 버튼을 누릅니다. 각 항눈의 의미에 붙어 팝 힌트를 참조해 주세요.

맵의 설정이 끝나면(자), 최초로 오른쪽 클릭한 맵의 하위에 새롭다 맵이 작성됩니다. 이것은 Windows 의 폴더와 같은 계층 구조에 되어 있습니다. 이 구조는 직접 게임에 영향을 주는 것이 아닙니다만, 예를 들어 마을안에 있는 건물의 내부는 그 마을의 하위에 작성하는 등, 잘 사용한다 일로 다수의 맵이 관리 하기 쉬워집니다. 계층은 드러그 & 드롭 에 의해 간단하게 변경할 수가 있습니다.

층

맵은 3 매의 층을 가지고 있어 각각 다른 타일을 배치 할 수 있습니다. 어느 층에 무엇을 배치할까는 자유롭습니다만, 1 층 눈에 지면, 2 층 눈 에 책이나 건물, 3 층 눈에 창이나 굴뚝 과 같이 목표를 결정해 두면(자), 맵을 순조롭게 작성할 수가 있겠지요.

맵 에디터로 편집하는 층은, 메인 메뉴의 [모드] 로 설정 할 수 있습니다. 또,[표시] 메뉴에서는 편집중의 층 이외를 어둡게 표시할까 제발(아무쪼록) 등의 설정을 변경할 수가 있습니다.

타일의 배치

실제로 맵에 배치하는 타일은, 메인 윈도우 좌측의 타일 팔레트로 선택합니다. 타일 팔레트내를 드러그 해, 복수의 타일을 한 번에 선택한다 일도 가능합니다. 선택한 타일은, 페인트 툴과 같은 감각으로 우측의 맙뷰에 배치할 수가 있습니다.

맵에 타일을 배치하는 방법은, 메인 메뉴의 [묘화] 로 설정합니다. 각각의 묘화 툴의 기능은 이하와 같습니다.

연필
통상의 묘화 방법입니다. 클릭한 위치에 타일을 배치합니다.
사각형
드러그 조작의 시점과 종점을 연결하는 선을 대각선으로 하는 사각형의 내부에, 선택한 타일을 전면에 깝니다.
타원
드러그 조작의 시점과 종점을 연결하는 선을 대각선으로 하는 사각형에 내접 한다 타원의 내부에, 선택한 타일을 전면에 깝니다.
전부 칠해
클릭한 위치로부터, 클릭한 것과 동종의 타일이 연속하는 범위에, 선택한 타일을 전면에 깝니다.
선택
맵의 일부분의 절취나 카피 등을 행하기 위한 범위 선택을 합니다. 이 상태로 오른쪽 클릭하면(자) pop-up menu가 표시되어 카피나 붙이고 등의 조작을 할 수가 있습니다. 덧붙여 선택 범위의 카피 등은 모든 층을 일괄 해 대상이라고 합니다.

묘화 툴이 [선택] 이외 때, 맙뷰상에서 오른쪽 클릭하면(자), 그 위치에 있는 타일을 선택할 수가 있습니다. 이 기능을 스포이드라고 부릅니다. 스포이드를 잘 사용하는 것에 따라 타일 팔레트를 클릭해 선택하는 조작을 생략 할 수 있어 작업 효율을 높일 수가 있습니다.

오토 타일

타일 팔레트상에서 맨 위의 단에 표시되어 있는 타일은, 오토 타일 (으)로 불리는 특수한 타일입니다. 오토 타일은 일종류의 타일에 대해 복수의 패턴을 가지고 있어 실제가 늘어놓는 방법에 따라 경계를 자동적으로 조절합니다.

[Shift] 키를 누르면서 타일의 배치나 스포이드를 하면(자), 이 기능을 일시적으로 무효 로 할 수 있습니다.

또, 타일 팔레트상에서 오토 타일을 더블 클릭 하면(자), 「오토 타일 전개」라고 하는 다이알로그 박스가 표시되어 경계 조정필 보고 타일의 패턴을 직접 선택할 수가 있습니다.


이벤트

  • 이벤트의 종류
  • 이벤트 페이지
  • 트리거
  • 배틀 이벤트의 설정
  • 실행 내용
  • 문장의 표시

정보를 가르쳐 주는 마을사람, 아이템이 들어가 있는 보상 등, 게임중에 발생하는 사건을 모두 이벤트라고 부릅니다.

게임이 어떻게 진행 해 나갈까는 모두 이벤트에 의해 관리되기 때문에, 예를 들어 「플레이어가 마을의 출구에 오면(자) 초원의 맵 으로 이동한다」라고 한 처리 하나에서도, 이벤트로서 설정할 필요가 있습니다.

이벤트의 종류

이벤트에는 「맵 이벤트」 「배틀 이벤트」 「common 이벤트」의 3 종류가 있습니다. 단지 「이벤트」라고 말할 경우는, 기본적으로 맵 이벤트를 의미합니다.

맵 이벤트
맵 화면에서 작동하는 이벤트입니다. 장소 이동이나, 인물이라는 회화 등에 사용합니다. 메인 메뉴의 [모드] 로부터 [이벤트] 를 선택해, 맙뷰상에서 더블 클릭 하는 것으로 작성합니다. 대량으로 배치하면(자) CPU 에 걸리는 부하가 커지기 (위해)때문에, 하나의 맵에 대해 통상 100 개 이내 정도로 억제하는 편이 안전합니다.
배틀 이벤트
배틀 화면에서 작동하는 이벤트입니다. 예를 들어 「적의 HP 가 일정 이하가 되었을 때에 변신한다」라고 한 처리에 사용합니다. 데이타베이스의 [무리] 에게 포함되는 데이터로서 설정합니다.
common 이벤트
맵 이벤트나 배틀 이벤트로부터 호출하거나 특수한 아이템을 사용했을 때의 처리로서 설정하거나 하는, 범용적인 이벤트입니다. 데이타베이스의 [common 이벤트] 로 설정합니다.

이벤트 페이지

맵 이벤트에서는, 하나의 이벤트에 다른 내용의 처리를 복수 설정할 수가 있습니다. 그 설정의 단위를 이벤트 페이지라고 부릅니다.

각 이벤트 페이지의 내용이 「출현」하기 위한 조건으로서 스윗치, 변수, 셀프 스윗치의 3 종류의 데이터 (스윗치는 2 개)를 지정할 수가 있습니다. 지정된 조건을 채우는 이벤트 페이지가 다수 있는 경우는, 페이지 번호가 최대의 것이 채용됩니다.

스윗치
게임 전체를 통해, ON / OFF 의 한편을 보관 유지하는 데이터입니다. 예를 들어 「monster 퇴치의 의뢰를 받았다」라고인가 「보스 캐릭터를 넘어뜨렸다」라고 말한 정보를 관리합니다.
변수
게임 전체를 통해, 임의의 정수 (최대 8 자리수)를 보관 유지하는 데이터입니다. 예를 들어 「주인공의 명성도 」나 「온 세상에 흩어져 있는 아이템을 모아, 그 의뢰자에게 건네준 개수」라고 한 정보를 관리합니다.
셀프 스윗치
개개의 이벤트에 속하는 특수한 스윗치입니다. 외부에 영향을 주는 것 (이)가 없다, 그 이벤트만의 상태를 나타내는데 사용합니다. 예를 들어 「보상 (을)를 열었다」라고 말한 정보를 관리합니다.

배틀 이벤트에도 이벤트 페이지가 있습니다만, 맵 이벤트와는 가치관이 다릅니다. 배틀 이벤트의 설정을 참조해 주세요.

common 이벤트에는 이벤트 페이지는 없습니다. 다만, 자동 실행 이벤트 등의 조건으로서 스윗치 1 개를 지정할 수가 있습니다.

트리거

이벤트 페이지의 [실행 내용] 에 정의 된 처리가, 실제로 개시된다 조건의 (일)것을 트리거라고 부릅니다.

결정 버튼
플레이어와 이벤트가 접촉한 상태로 결정 버튼 (C 버튼)이 압함 때에 기동합니다. 플레이어와 이벤트의 사이에 카운터 속성의 타일 (이)가 있어도 상관하지 않습니다. 마을사람에게 이야기하거나 보상을 조사하거나 하는 기본적인 동작 (으)로서 사용합니다.
플레이어로부터 접촉
[결정 버튼] 의 조건에 가세해, 플레이어가 방향 버튼으로 이벤트에 접촉했을 때에도 기동합니다. 플레이어와 이벤트가 겹칠 수가 있다 경우는, 겹쳤을 때에 기동합니다. 장소 이동 이벤트에는 이것을 사용 섬 .
이벤트로부터 접촉
[플레이어로부터 접촉] 의 조건에 가세해, 이벤트 쪽으로부터 플레이어 에 접촉했을 때에도 기동합니다. 예를 들어, 맵상을 monster가 움직여 돌고 있고, 접하면(자) 전투가 된다고 할 경우에 사용합니다.
자동 실행
이벤트가 출현한 순간에 기동합니다. 이벤트 페이지의 조건이만 싶음 있는 한 몇 번이라도 같은 이벤트를 반복하기 때문에, 적당, 스윗치나 셀프 스윗치를 바꾸어 작동하는 조건을 제어하지 않으면 되지 않습니다. 예를 들어, 특정의 맵 으로 이동했을 때에 발생하는 강제 이벤트 등에 사용합니다.
parallel processing
이벤트가 출현하고 있는 동안, 주기적으로 처리를 합니다. parallel processing는 통상 (와)과는 성질이 달라, 다른 이벤트가 실행되어 있어도 동시 평행적으로 처리한다 특수한 설정이기 (위해)때문에, 사용에는 주의가 필요합니다. 예를 들어, 타이머의 상태 (을)를 감시하거나 일정한 간격으로 화면을 플래시 시켜 번개의 연출을 하거나 한다 경우 등에 사용합니다. 이 트리거는 전혀(완전히) 사용하지 않아도 게임을 작성 할 수가 있기 때문에, 억지로 사용법을 기억할 필요는 없습니다.

common 이벤트의 경우는 맵 이벤트와 같은 실체가 존재하지 않기 때문에, 불려 갔을 때 마시는 것 처리를 하는 [없음] 외,[자동 실행] 과 [parallel processing] 마시는 것 지정 할 수 있습니다. 다만, 트리거의 설정에 관계없이, parallel processing로부터 불러 나온 이벤트는 parallel processing로서 기능하기로 주의가 필요합니다. parallel processing (으)로부터 통상의 이벤트를 실행하고 싶은 경우는, 직접 common 이벤트를 호출하므로 (은)는 없고, 스윗치를 경유 해 자동 실행 이벤트를 기동하지 않으면 되어 키 응.

parallel processing 이벤트는 CPU 에의 부하가 극히 큰 기능입니다. 특히 스익 치나 변수의 조작을 하는 경우, 그 조건의 변화에 의해 출현 또는 소멸하는 이베 트가 없을것인가 라고 하는 판정이 들어가기 (위해)때문에, 맵에 존재하는 이벤트 페이지의 양에 비례해 처리 시간이 걸립니다. 이 때문에, 복수의 parallel processing를 상시 실행 시킨다 같은 사용법은 권유 할 수 없습니다.

배틀 이벤트의 설정

배틀 이벤트의 설정

전투중에 발생하는 이벤트의 (일)것을 배틀 이벤트라고 부릅니다.

배틀 이벤트에는, 맵 이벤트와 같이 이벤트 페이지가 「출현」한다 (이)라고 하는 개념은 없습니다. 항상 모든 이벤트 페이지가 번호순서에 체크되어 조건을 채우고 있는 페이지가 있으면 즉석에서 실행됩니다.

배틀 이벤트의 조건에는, 경과한 턴수, 에너지 미의 HP, 엑터의 HP, 스윗치의 4 종류로부터 복수 지정할 수가 있습니다. 각각의 설정 내용에 붙어 팝 힌트를 참조해 주세요.

실행 내용

플레이중의 게임에 어떠한 변화를 미치는 명령의 (일)것을 이벤트 커멘드와 부릅니다.

실제로 처리되는 이벤트의 실행 내용은, 이 이벤트 커멘드를 필요할 뿐(만큼) 리스트에 등록 하는 것에 따라 정의 합니다. 이벤트 커멘드에는 [문장의 표시],[장소 이동],[배틀의 처리] 등, 변화 풍부한 명령이 합계 90 종류 준비되어 있습니다.

실행 내용의 편집 방법은 모든 종류의 이벤트로 공통입니다. 이벤트 커멘드의 추가는, 이하의 순서로 행합니다.

  1. [◆] 마크가 붙어 있는 행을 더블 클릭 합니다.
  2. [이벤트 커멘드] 다이알로그 박스가 표시됩니다. 여기서 추가 하고 싶은 커멘드의 버튼을 누릅니다. 버튼의 팝 힌트를 호출하면(자), 각각의 커멘드의 간단한 설명을 읽을 수 있습니다.
  3. 일부의 커멘드를 제외해, 이벤트 커멘드의 구체적인 동작을 설정한다 다이알로그 박스가 표시됩니다. 필요한 설정이 종료하면(자) [OK] 버튼 (을)를 누릅니다.
  4. 더블 클릭 한 행의 위치에, 이벤트 커멘드가 추가 (삽입) 되고 .

실행 내용의 리스트상에서는, 이벤트 커멘드를 선택한 상태로 오른쪽 클릭 하면(자) pop-up menu가 표시되어 카피나 붙이고 등의 편집 조작을 할 수가 있습니다. [Shift] 키를 누르면서 이벤트 커멘드를 선택한다 (와)과 복수의 항목을 일괄 해 조작하는 것이 가능합니다.

문장의 표시

게임 화면에 메세지를 표시하기에는, 이벤트 커멘드 [문장의 표시] (을)를 사용합니다. 이것은 통상, 전이벤트 커멘드 그 중에서 와도 사용 빈도의 높다 커멘드입니다.

문장중에는, 이하의 제어 문자를 사용할 수 있습니다.

\V[n]
변수 n 차례의 값에 옮겨놓을 수 있습니다.
\N[n]
엑터 n 차례의 이름에 옮겨놓을 수 있습니다.
[n]
이후의 문자를 n 차례의 색으로 표시합니다.
0 1 2 3 4 5 6 7
\G
소지금의 윈도우를 엽니다.
\\
문자 '\'에 옮겨놓을 수 있습니다.

문장의 입력중에 [F2] 키를 누르면(자), 실제로 게임 화면에 표시되는 메세지 윈도우의 프리뷰를 표시할 수가 있습니다.


�����ͺ��̽�

데이터베이스

  • 데이터베이스의 내용
  • 데이터 항목의 편집
  • 최대수의 변경

게임에 사용되는 다양한 데이터를 모은 것을 데이타베이스라고 부릅니다.

데이타베이스의 내용

데이타베이스의 내용을 편집하기에는, 메인 메뉴의 [툴] 로부터 [데이타베이스] 를 선택합니다. 다이알로그 박스내의 탭을 바꾸기로 보다 , 이하의 데이터를 종류별로 편집할 수가 있습니다.

엑터 | 게임중에 플레이어를 조작 할 수 있는 파티 멤버의 데이터입니다.
클래스 | 장비 할 수 있는 무기 방어용 기구나 습득하는 기술 등, 엑터의 특징을 결정하는 데이터입니다.
기술 | 주로 SP 를 소비해 특별한 효과를 발휘하는, 기술이나 마법 등의 데이터입니다.
아이템 | 회복약이나 이벤트 아이템 등, 장비품 이외의 아이템의 데이터입니다.
무기 | 공격력 등을 올리는 무기의 데이터입니다. 아이템의 일종으로서 다루어집니다.
방어용 기구 | 물리 방어나 마법 방어를 올리는 방어용 기구의 데이터입니다. 아이템의 일종으로서 다루어집니다.
에너지 미 | 엔카운트바톨이나 이벤트 배틀로, 파티가 싸우는 상대의 데이터입니다.
무리 | 에너지 미의 그룹입니다. 게임에 두고 실제로 등장하는 단위가 됩니다.
스테이트 | butler의 능력이나 행동에 다양한 영향을 주는, 컨디션이나 상황의 데이터입니다.
애니메이션 | 무기나 기술의 시각 효과 등에 이용되는 애니메이션의 데이터입니다.
타일 세트 | 맵의 작성에 이용하는 타일 세트의 동작 사양을 정의 하는 데이터입니다.
common 이벤트 | 게임 전체를 통해서 범용적으로 호출하는 것 같은 이벤트의 데이터입니다.
시스템 | 초기 파티나 속성, SE 나 용어 등의 잡다한 데이터입니다.

이러한 데이터는, 기본적으로는 게임중에 써 교체될 것은 없습니다. 예를 들어 엑터에게는 [초기 레벨] 이라고 하는 설정 항목이 있습니다만, 실제로 레벨이 올라 성장해 가는 엑터는 다른 데이터로서 다루어져 있습니다.

데이터 항목의 편집

[시스템] 을 제외하는 각 페이지의 화면은 좌우에 분할되어 좌측으로 데이터의 ID (관리 번호)와 이름의 리스트, 우측으로 그 데이터 항목의 내용이 표시되어 있습니다. 데이터 항목의 편집은, 좌측의 리스트로부터 설정하는 것을 클릭으로 지정해, 우측으로 표시되는 설정 항목을 편집 한다고 하는 요령으로 합니다. 각 설정 항목의 의미에 대해서는 팝 힌트를 참조해 주세요.

데이타베이스의 윈도우로 [F4] 키,[F5] 키를 누르면(자), 각각 전의 항목, 다음의 항목을 원터치로 선택할 수가 있습니다. 특정의 설정 항목을 복수의 데이터에 걸쳐서 설정 할 것 같은 경우, 이 조작을 사용하면(자) 작업 효율을 높일 수가 있습니다.

리스트의 데이터 항목을 오른쪽 클릭하면(자) pop-up menu가 표시되어 카피나 붙이고 등의 조작을 할 수가 있습니다. 여기서 [멀티 카피] 를 선택하면(자), 카피하는 항목수를 지정하는 다이알로그 박스가 표시되어 지정한 항목수를 한 번에 카피할 수가 있습니다. 다른 프로젝트로부터 데이터의 일부분을 일괄 해 옮기고 싶은 경우 등에 효과를 발휘합니다.

최대수의 변경

데이터 항목의 수를 변경하기에는, 리스트아래에 있는 [최대수의 변경] 버튼을 누릅니다. 다이알로그 박스가 표시되어 1 에서 999 까지의 범위로 설정할 수가 있습니다.

최대수를 늘리면(자) 게임의 실행에 필요한 메모리 capacity가 증가해, 데이터의 read 속도도 늦어져 버립니다. 그다지 무의미하게 늘리지 않는 편이 좋을 것이다.

최대수를 줄일 경우, 그 수를 넘는 기존의 항목은 모두 삭제됩니다.


게임 오브젝트

스크립트

  • Ruby 와는
  • 스크립트 에디터
  • 섹션의 조작
  • 편집 조작
  • 스크립트의 사용 방법

게임의 실행을 주관하는 간이적인 프로그램의 (일)것을 스크립트와 부릅니다.

일반적으로는 [문장의 표시] 와 같은 명령을 스크립트라고 부르는 경우가 있습니다 하지만, RPGXP 에서는 이벤트 커멘드보다 한층 더 위의 , 프로그램에 가까운 개념을 가리켜 스크립트라고 부르고 있습니다. 모든 이벤트 커멘드는, 실은 프로그 램 본체는 아니고, 이 스크립트의 레벨로 해석되고 실행되어 있습니다.

스크립트의 편집은, 게임 시스템 그것을 커스터마이즈(customize) 한다고 한다 상급자전용의 기능이기 (위해)때문에, 난이도가 높아지고 있습니다. 그러나, 보통으로 게임을 작성할 뿐(만큼)이라면, 전혀(완전히) 기억할 필요는 없습니다. 처음은 스크 리프트의 (일)것은 걱정하지 않고 게임을 작성해, 디폴트의 시스템(뿐)만으로는 어딘지 부족하게 되었을 때에 재차 도전하면(자) 좋을 것이다.

Ruby 와는

RPGXP 의 스크립트 엔진에는, 독자적인 간이언어등으로(이며)는 없고, 실적의 있는 Ruby 라고 하는 스크립트 언어가 채용되어 있습니다. Ruby 의 공식 페이지는 http://www.ruby-lang.org/ 입니다.

Ruby 는 기다리는 아래 유키씨를 중심으로 개발되어 있는 프리 소프트웨어 (으)로, 대규모 게임을 기술하는데도 충분한 성능을 가지고 있습니다. 그러나, 원래는 텍스트 처리 등을 자랑으로 여기고 있는 언어이므로, 그대로 (으)로 게임을 개발하는 것은 곤란합니다. 거기서, Ruby 를 게임 개발 용도에 특화 시켰던 것이 RGSS (Ruby Game Scripting System)라고 하는 시스템입니다. 자세한 것은 RGSS 레퍼런스를 참조해 주세요.

덧붙여 Ruby 를 ruby 와 표기하는 것은 허용 됩니다만, RUBY, 루비, -는 언어명으로서는 허용 되어 있지 않습니다.

스크립트 에디터

메인 메뉴의 [툴] 로부터 [스크립트 에디터] 를 선택하면(자), 스크립트를 편집 하기 위한 큰 다이알로그 박스가 표시됩니다.

RPG 와 같이 대규모 게임을 실행하기에는 매우 많은 프로그램 하지만 필요해서, 전체를 적당한 단위에 분할해 관리할 필요가 있습니다. RPGXP 그럼, 이 단위의 (일)것을 섹션이라고 부릅니다. 스크립트 에디터의 좌측으로 표시되어 있는 것이 섹션의 리스트입니다.

스크립트 에디터는, 데이타베이스와 같은 감각으로 조작 할 수 있도록 설계되어 있습니다. 데이타베이스와 똑같이 [F4] 키,[F5] 키를 누르면(자), 각각 전의 섹션, 다음의 섹션을 원터치로 선택할 수가 있고 . 이것에 가세해[F6] 키에는, 커서 위치에 있는 단어를 섹션의 이름으로서 카피 한다고 하는 기능을 할당할 수 있고 있습니다.

섹션의 조작

섹션의 이름을 오른쪽 클릭하면(자) pop-up menu가 표시되고 . 여기서 [삽입] 을 선택하면(자), 선택되어 있던 위치의 앞에 공백의 섹션 숀이 새롭게 추가됩니다. 같이,[절취] 나 [붙이기] 등의 조작을 하기로 보다 , 섹션의 순서를 변경할 수가 있습니다.

데이타베이스와 달리, 각 섹션은 ID 로 관리되어 있는 것에서는 없습니다. 각 섹션은, 리스트에 표시되어 있는 순서, 즉 위에서 아래 (으)로 향해 실행되어 갑니다. pre-set의 스크립트에서는 최하부에 "Main" 라고 하는 섹션이 있어, 각종의 정의가 모두 끝났다 후에 실제의 게임의 동작이 시작된다고 하는 구조로 되어 있습니다.

편집 조작

윈도우 우측의 텍스트 문자 편집기 부분을 오른쪽 클릭하면(자), 우도의 같은 pop-up menu가 표시됩니다. 여기서 [잘라내] 나 [붙이기], 및 [검색] 이나 [치환] 이라고 하는 기본적인 편집 조작을 한다 일을 할 수 있습니다.

Ctrl+F 나 Ctrl+G 등의 단축 키는, 텍스트 문자 편집기에 포커스가 없는 경우에서도 유효합니다.

편집중의 섹션 뿐만이 아니고, 모든 섹션을 대상으로서 캐릭터 라인의 검색을 하고 싶은 경우는, 섹션 쪽의 pop-up menu (으)로부터 [검색] 을 선택합니다. 단축 키는 Ctrl+Shift+F 입니다.

스크립트의 사용 방법

스크립트는, 스크립트 에디터로 직접 편집하는 이외로, 다음의 3 종류 의 사용 방법이 있습니다.

  1. 이벤트 커멘드 [스크립트] 로 사용.
  2. 이벤트 커멘드 [조건 분기] 의 조건으로서 사용.
  3. [이동 루트] 내의 커멘드로서 사용.

이것들은, 예를 들어 「스크립트 에디터로 독자적으로 추가한 이벤트 커멘드를 호출한다」라고 할 경우에 이용 할 수 있습니다. 궁리 나름으로 여러가지 재미있는 사용법을 할 수 있을지도 모릅니다.


���� �԰�

소재 규격

  • 그래픽 소재
  • 오토 타일 상세
  • 윈도우 스킨 상세
  • 오디오 소재

RPGXP 에서는, 그래픽이나 오디오 등 모든 소재에 오리지날의 파일을 사용할 수가 있습니다.

메인 메뉴의 [툴] 로부터 [material 베이스] 를 선택하면(자), 각종 소재의 임포트나 export를 하기 위한 다이알로그 박스가 표시됩니다. 게임 폴더에 직접 파일을 카피해도 문제는 없습니다만, material 베이스에는 투명색설정 등의 기능도 있기 때문에, 익숙해지지 않는 집은 이쪽을 사용하면(자) 좋을 것이다.

그래픽 소재

PNG 파일과 JPG 파일을 사용할 수가 있습니다. PNG 파일 (은)는, 32 비트 칼라 (알파 채널)에 완전 대응하고 있습니다.

캐릭터 (Graphics/Characters)

맵 화면상에서 표시하는 캐릭터의 화상을 거둔 파일입니다.

캐릭터 1 체에 대해 1 파일을 사용합니다. 사이즈는 임의로, 4 방향 (아래, 왼쪽, 오른쪽, 상) ×4 패턴의 합계 16 패턴을 규정의 순서로 늘어놓습니다. 비트 맵의 폭의 1/4 , 높이의 것 1/4 이 캐릭터의 사이즈로서 다루어지고 .

butler (Graphics/Battlers)

배틀 화면상에서 표시하는 캐릭터의 화상을 거둔 파일입니다.

사이즈는 임의입니다만, 기본적으로는 640×320 의 배틀 화면에 들어가는 사이즈에 할 필요가 있습니다. 또, 높이가 40 이하의 화상을 사용하면(자), 데미지의 표시 등이 보기 힘들어집니다.

애니메이션 (Graphics/Animations)

주로 배틀 화면에서 효과로서 표시하는 애니메이션용의 화상을 거두었다 파일입니다.

셀 1 매당 192×192 의 화상을 횡방향에 5 매 늘어놓은 것을 1 블록과 해, 그 블록을 필요할 뿐(만큼) 세로에 길게 한 것을 1 파일이라고 합니다. 사이즈 의 상한은 없습니다만, read 속도 등의 관계상, 너무 큰 화상은 바람직하게 없습니다.

타일 세트 (Graphics/Tilesets)

맵을 구성하는 타일을 거둔 파일입니다.

타일 1 개당 32×32 의 화상을 횡방향에 8 매 늘어놓은 것을 1 블록과 해, 그 블록을 필요할 뿐(만큼) 세로에 길게 한 것을 1 파일이라고 합니다. 사이즈의 상한은 없습니다만, read 속도 등의 관계상, 너무 큰 화상은 바람직하지는 않습니다.

오토 타일 (Graphics/Autotiles)

경계선이 자동적으로 작성되는 특수한 타일을 거둔 파일입니다.

오토 타일 상세를 참조해 주세요.

파노라마 (Graphics/Panoramas)

맵의 안쪽에 표시하는 화상 (원경)을 거둔 파일입니다.

사이즈의 제한은 특별히 없습니다. 홈 페이지의 벽지의 요령으로, 상하 좌우가 연결되도록(듯이) 작성합니다.

fog (Graphics/Fogs)

맵의 전에 씌워 표시하는 화상을 거둔 파일입니다.

사이즈의 제한은 특별히 없습니다. 홈 페이지의 벽지의 요령으로, 상하 좌우가 연결되도록(듯이) 작성합니다.

배틀 백 (Graphics/Battlebacks)

배틀 화면에서 배경으로서 표시하는 화상을 거둔 파일입니다.

사이즈는 640×320 입니다.

아이콘 (Graphics/Icons)

기술이나 아이템의 이름의 옆에 표시하는 아이콘 화상을 거둔 파일입니다.

사이즈는 24×24 입니다.

타이틀 (Graphics/Titles)

타이틀 화면에서 표시하는 화상을 거둔 파일입니다.

사이즈는 640×480 입니다.

게임 오버 (Graphics/Gameovers)

게임 오버 화면에서 표시하는 화상을 거둔 파일입니다.

사이즈는 640×480 입니다.

윈도우 스킨 (Graphics/Windowskins)

윈도우를 구성하는 화상 등을 거둔 파일입니다.

윈도우 스킨 상세를 참조해 주세요.

픽쳐 (Graphics/Pictures)

게임중에 이벤트를 사용해 표시 하기 위한 화상을 거둔 파일입니다.

사이즈는 임의입니다.

트란지션 (Graphics/Transitions)

엔카운트시 등, 화면을 바꿀 때의 효과를 지정하는 파일입니다.

사이즈 640×480, 그레이 스케일 256 색의 PNG 파일이 아니면 되지 않습니다. 팔레트 번호의 작은 편으로부터 큰 편으로 향해 화면이 써 교체됩니다.

오토 타일 상세

오토 타일은, 원칙으로서 우도와 같은 줄의 12 개의 패턴이 기본이 됩니다.

A

대표 패턴. 타일 팔레트의 표시와 다른 오토 타일과의 의존관계(dependencies) 판정에 이용됩니다.

B

친패턴. 여기에 놓여진 패턴과 같은 대표 패턴을 가지는 오토 타일에 인접해 배치했을 때, 친타일 측에 경계선이 작성되지 않게 됩니다.

C

네 귀퉁이에 친패턴과의 경계를 가지는 패턴입니다.

D

각변에 친패턴과의 경계를 가지는 패턴, 및 어디에도 경계를 가지지 않는다 중앙의 패턴입니다.

애니메이션 하는 오토 타일

물의 표현등으로(이며) 타일을 애니메이션 시키고 싶다 경우는, 기본 구조의 블록을 필요할 뿐(만큼) 옆에 늘어놓아 배치합니다. 패턴의 수는 임의입니다.

타일의 애니메이션만이 필요한 경우는, 기본 구조를 사용하지 않고 32×32 의 타일을 그대로 옆에 늘어놓아 배치하는 것도 할 수 있습니다.

윈도우 스킨 상세

윈도우 스킨은, 우도와 같은 192×128 의 화상입니다. 통상, 32 비트의 PNG 파일을 사용합니다.

A

윈도우의 배경. 128×128 의 패턴이, 실제의 윈도우에 맞추어 확대 축소해 묘화 됩니다. 엄밀에는, 윈도우의 주위를 2 픽셀 두 개(살) 작게 한 사이즈가 됩니다. 이것은 모퉁이의 환 있고 윈도우를 자연스럽게 보인다 모아 두고의 사양입니다. 또, 일부의 윈도우에서는, 이 배경 부분만이 반투명으로 묘화 됩니다. 반투명 윈도우를 위해서(때문에), 화상 그것을 반투명으로 할 필요는 없습니다.

B

윈도우의 테두리 및 화살표. 네 귀퉁이의 16×16 는 그대로 묘화 되어 나머지의 테두리 (옆의 부분)는 윈도우에 맞추어 16 픽셀의 굵음으로 타일링장에 묘화 됩니다. 화살표는, 윈도우의 내용을 스크롤 할 수 있는 경우의 표적으로서 사용합니다.

C

커멘드 커서. 윈도우내에서 선택되어 있는 항목을 나타내기 위해서(때문에) 사용합니다. 주위의 2 픽셀은 종횡에만 확대 축소되어 나머지는 커서 의 크기에 맞추어 평면적으로 확대 축소해 묘화 됩니다.

D

포즈 싸인. 메세지 윈도우의 버튼 입력 대기 상태를 나타내기 위해서(때문에) 사용합니다. 16×16 의 패턴 4 종으로 애니메이션 합니다.

E

아로카솔. 배틀 화면에서 엑터나 에너지 미를 선택 할 경우에 사용합니다. 32×32 의 패턴 2 종이 교대로 묘화 됩니다. 이것은 윈도우의 일부가 아닙니다만, 편의상 이 파일에 포함되어 있습니다.

오디오 소재

MID, OGG, WMA, MP3, WAV 의 5 종류의 파일을 사용할 수가 있고 (MID 형식은 BGM 와 ME 마시는 것) .

BGM (Audio/BGM)

배경 음악 (BackGround Music)입니다. 주로 MID 파일을 사용합니다.

BGS (Audio/BGS)

배경음 (BackGround Sound)입니다. 주로 OGG 파일을 사용합니다.

ME (Audio/ME)

효과 음악 (Music Effect)입니다. 주로 MID 파일을 사용합니다.

SE (Audio/SE)

효과음 (Sound Effect)입니다. 주로 OGG 파일을 사용합니다.

각 파일 형식의 특징은, 이하와 같습니다.

MID | DirectMusic Synthesizer 로 연주되는 MIDI 파일 입니다. BGM 의 경우, MIDI 데이터중에 콘트롤 체인지의 111 번이 있으면(자), 곡을 끝까지 연주한 뒤의 리피트 위치의 표적으로서 인식합니다.
OGG | 음질, 압축율 모두 뛰어난 음성 압축 형식인 Ogg Vorbis 의 데이터를 포함한 파일입니다. 다만, RPGXP 에서는 시냇물 재생에는 대응해 있지 않고, OGG 파일의 전체를 읽�


전투 계산식

  • 제일 명중 판정
  • 위기 히트 판정
  • 데미지 계산
  • 제２ 명중 판정
  • 도주 성공율

RPGXP 의 디폴트의 전투 시스템에서는, 이하의 계산식이 채용되어 있습니다.

행동하는 butler를 A, 그 행동의 대상이 되는 butler를 B 로 나타냅니다.

제일 명중 판정

통상 공격의 경우
제일 명중율 = A 의 스테이트의 명중율 %
기술의 경우
공격력 F 가 1 이상 (물리 공격)의 경우
제일 명중율 = 기술의 명중율 × A 의 스테이트의 명중율 % ÷ 100
공격력 F 가 0 (물리 공격 이외)의 경우
제일 명중율 = 기술의 명중율
아이템의 경우
제일 명중율 = 아이템의 명중율
  • A 가 정상적인 상태의 경우, 스테이트의 명중율은 100 .

위기 히트 판정

통상 공격의 경우
위기율 = 4 × A 의 손재주가 있음 ÷ B 의 민첩함
기술의 경우
위기율 = 0
아이템의 경우
위기율 = 0

데미지 계산

통상 공격의 경우
위력 = A 의 공격력 - (B 의 물리 방어 ÷ 2)
배율 = 20 + A 의 완력
분산도 = 15
  • 위력의 최소치 : 0
기술의 경우
기술의 위력의 부호가 정의 경우
위력 = 기술의 위력
+ (A 의 공격력 × 기술의 공격력 F ÷ 100)
- (B 의 물리 방어 × 기술의 물리 방어 F ÷ 200)
- (B 의 마법 방어 × 기술의 마법 방어 F ÷ 200)
  • 위력의 최소치 : 0
기술의 위력의 부호가 부의 경우
위력 = 기술의 위력
배율 = 20
+ (A 의 완력 × 기술의 완력 F ÷ 100)
+ (A 의 손재주가 있음 × 기술의 손재주가 있음 F ÷ 100)
+ (A 의 민첩함 × 기술의 민첩함 F ÷ 100)
+ (A 의 마력 × 기술의 마력 F ÷ 100)
분산도 = 기술의 분산도
아이템의 경우
HP 회복양의 부호가 부의 경우
위력 = - HP 회복양
- (B 의 물리 방어 × 아이템의 물리 방어 F ÷ 20)
- (B 의 마법 방어 × 아이템의 마법 방어 F ÷ 20)
  • 위력의 최소치 : 0
HP 회복양의 부호가 정의 경우
위력 = - HP 회복양
배율 = 20
분산도 = 아이템의 분산도
데미지 = 위력 × 배율 ÷ 20 × 속성 수정 × 위기 수정 × 방어 수정 (± 분산도 %)

  • 속성 수정 : 이 행동의 속성에 해당하는 B 의 속성 유효도 중 최미만의 것.
    A:200%, B:150%, C:100%, D:50%, E:0%, F:-100%
    덧붙여 B 의 방어용 기구나 스테이트에 해당하는 방어 속성이 붙어 있는 경우는 반감한다.
    같은 방어 속성이 복수 붙어 있는 경우, 반감 효과는 거듭할 수가 있다.
  • 위기 수정 : 데미지의 부호가 정으로, 위기 히트 때 2 .
  • 방어 수정 : 데미지의 부호가 정으로, B 가 방어하고 있을 때 1/2 .

제２ 명중 판정

데미지의 부호가 정의 경우
B 가 정상적인 상태의 경우
회피력 = 8 × B 의 민첩함 ÷ A 의 손재주가 있음 + B 의 회피 수정
통상 공격의 경우
제니 명중율 = 100 - 회피력
기술의 경우
제니 명중율 = 100 - (회피력 × 기술의 회피 F ÷ 100)
아이템의 경우
제니 명중율 = 100
B 에 「공격을 회피할 수 없다」스테이트가 부가되어 있는 경우
제２ 명중율 = 100
데미지의 부호가 부 (회복)의 경우
제２ 명중율 = 100

도주 성공율

도주 성공율 = 50 × 엑터의 민첩함 평균치 ÷ 에너지 미의 민첩함 평균치


스크립트 입문

메인 메뉴의 [툴] 로부터 [스크립트 에디터] 를 선택하면(자), 거기에는 본 적이 없는 영숫자가 줄지어 있는 것이겠지요. 그야말로 트크르의 심장부라고도 말해야 할, 게임의 실행을 주관하는 프로그램인 것입니다. 간이적인 것이라고는 하여 프로그램인 이상, 초보자의 (분)편이 실용적인 조립 방법 (을)를 습득하는데는 시간이 걸립니다. 우선은 스크립트와는 어떻게 동작하는도 의인가, 기초로부터 차분히 배워 가는 것을 권유합니다.

이 「스크립트 입문」은, 트크르의 기본적인 사용 방법을 습득하고 있는 (분)편을 대상으로서 쓰여져 있습니다. 프로그램 언어의 예비 지식은 없어도 상관하지 않습니다 하지만, 트크르의 기능을 어느 정도 이해하고 있는 것이 최저 조건이 됩니다.

목차

  • 기초편
    • 시작합시다
    • 수치의 계산
    • 변수
    • 캐릭터 라인
    • 조건 분기
    • 루프
    • 함수
    • 오브젝트
    • 화상의 표시
    • 배열
    • 해시
    • 클래스 정의
  • 해독편
    • 데이타베이스
    • 게임 오브젝트
    • 스프라이트의 관리
    • 윈도우의 관리
    • interpreter
    • 장면 클래스


기초편

  • 시작합시다
  • 수치의 계산
  • 변수
  • 캐릭터 라인
  • 조건 분기
  • 루프
  • 함수
  • 오브젝트
  • 화상의 표시
  • 배열
  • 해시
  • 클래스 정의


시작합니다

시작합시다

  • 프로젝트의 작성
  • 섹션의 작성
  • 프로그램의 종료
  • 코멘트
  • 문법과 라이브러리

기초편에서는, 단체로 완결 하는 짧은 프로그램을 만들면서 RGSS 의 기본을 해설해 갈 것입니다.

우선은, 학습을 시작하기 위한 준비를 합시다.

프로젝트의 작성

최초로, 스크립트 입문용의 새로운 프로젝트를 작성합시다.

스크립트는 게임의 실행 그것과 관계되는 데이터이기 때문에, 현재 작성중 의 프로젝트를 그대로 사용하면(자), 잘못해 게임을 정상적으로 실행할 수 없게 해 끝낼 가능성이 없는다고 한정하지 않습니다. 거기서, 망가져도 상관없는 프로젝트를 사용해 학습을 진행시켜 나가는 것을 권유합니다.

덧붙여 RPGXP 의 스크립트 데이터는 Data 폴더내의 Scripts.rxdata 와 말하는 파일에 보존되어 있기 때문에, 이 파일 (혹은 프로젝트 전체)의 백업을 취해 두면, 기존의 프로젝트를 사용해도 에도시대의 추방형벌 이전.

섹션의 작성

프로젝트를 작성하면(자), 메인 메뉴의 [툴] 로부터 [스크립트 에디터] 를 선택합시다.

스크립트 에디터가 표시되면(자), 맨 위에 새로운 섹션을 작성 해 주세요. 오른쪽 클릭하면(자) 표시되는 pop-up menu로부터 [삽입] 을 선택하면 OK 입니다.

섹션의 이름은 뭐든지 상관하지 않습니다만, 알기 쉽게, 여기에서는 "TEST" 로 해둡니다. 이름의 입력은 윈도우의 좌하에 있다 [이름] 으로부터 할 수 있습니다.

프로그램의 종료

우선은, 다음과 같이 입력해 주세요.

exit

Ruby 에서는 알파벳의 대문자와 소문자는 구별되므로, EXIT 라든지 Exit 라고 입력 해서는 안됩니다. 물론 전각 문자 등도 안 됨입니다. 모두 반각 소문자로 입력해 주세요. 입력이 끝나면(자) [OK] 버튼을 눌러 스크립트 에디터를 닫아 실행 (테스트 플레이)해 봅시다.

테스트 플레이를 하려고 하면(자), 윈도우가 일순간 표시되어 곧바로 닫고 끝낼 것입니다. 즉, 여기서 쓴 exit 라고 해 하지만, 프로그램을 종료 시키는 명령이라고 하는 것입니다.

최초의 TEST 섹션내에 exit 라고 쓰여지고 있기 (위해)때문에, 프로그램은 거기서 종료합니다. 그것 이하의 섹션에 쓰여져 있는 스크립트가 실행 될 것은 없습니다. 향후의 샘플 프로그램에서는 exit 를 생략 섬 가, 무엇인가 시험할 때에는, 마지막 행에 exit 를 쓰도록(듯이) 해 주세요. 쓰지 말고 실행하면(자), 그때마다 게임의 타이틀 화면이 표시되어 끝내기 때문(에)입니다.

코멘트

Ruby 에서는,# 문자로부터 줄 끝까지를코멘트와 합니다.

코멘트는 프로그램의 실행에 완전히 영향을 주지 않으므로, 만들기손만이 보는 것이 가능한 메모를 기입하기 위해서(때문에) 사용 할 수 있습니다.

exit    # 프로그램의 종료

이것은 이벤트 커멘드 [주석] 의 역할과 같고, 프로그램이 처리 하고 있는 내용의 간단한 설명을 기술해, 알기 쉽고 하기 위해서 사용합니다. 비록 자신이 만든 프로그램 하더라도, 시간이 지나면(자) 어떠한 처리를 하고 있었는지 잊어 버리거나 하는 것입니다. 학습용은 아니고 실제로 사용한다 프로그램을 짤 때는, 가능한 한 코멘트를 붙이도록(듯이) 유의하는 것 (을)를 권유합니다.

덧붙여 프로그램의 설명으로서 이후의 페이지에서는 스크립트의 옆에 코멘트를 쓰는 것이 많이 있습니다. 그 경우, 굳이 코멘트의 내용까지 흉내내 쓸 필요는 없습니다. # 이후의 문장은, 어디까지나 알기 쉽게 설명하기 위해서 써 있는 것이라면 판단해 주세요.

문법과 라이브러리

프로그램 언어의 구조는 대략적으로문법과라이 브라리로 나눌 수가 있습니다.

문법이라고 하는 것은, 언어를 사용해 무엇인가의 처리를 기술할 때의 룰의 (일)것입니다. 일본어나 영어 등의 자연 언어와 똑같이,프로그래밍 언어에도 문법이 있습니다. 예를 들어 조건 분기의 문법, 루프의 문법이라고 했다 상태입니다. 「# 이라고 하는 문자로부터 줄 끝까지가 코멘트가 된다」라고 하는 것도 문법의 하나입니다. 「언어」라고 하는 말은, 좁은 의미에서는 이 「문법」만을 가리키는 경우 (이)가 있습니다.

라이브러리라고 하는 것은, 캐릭터 라인의 처리나 화상의 표시 등, 응용적인 기능을 가진 부품집의 (일)것입니다. 일본어나 영어 등의 자연 언어로 「단어」 (이)나 「숙어」에 상당하는 것이라고 생각하면 알기 쉬울 것이다. 영어의 문법을 학 응 (이)다(뿐)만으로는 영어를 사용할 수 안 되는 것과 같게, 어휘를 늘린다 (라이브러리의 사용법을 기억할) 필요가 있는 것입니다.

이 「스크립트 입문」기초편에서는, 문법의 학습이 중심이 됩니다. 최초의 집은 「문법을 학습해, 구체적으로 무슨 도움이 되는 것인가」라고 하는 것이 보이기 어렵다 모아 두고 지루하게 느낄지도 모릅니다만, 기본적인 문법을 이해해 논리를 조립 라고 하는 최초의 벽만 넘어갈 수 있으면, 레퍼런스를 읽어 실천적인 사용법을 기억 가는 것은, 실은 그만큼 어려운 (일)것이 아닙니다.

그러면 시작합시다!


수치의 계산

  • 수치
  • 표시
  • 계산의 방법

Ruby 에 있어서의 수치나 계산의 기초를 해설합니다. 예로서 계산기와 같이 간단한 계산을 사용해 해설 해 나갑시다.

수치

Ruby 로 취급할 수 있는 수치에는,정수와부동 소수점 수의 2 종류가 있습니다.

3           # 정수
52          # 정수
-99         # 정수
1.5         # 부동 소수점수(실수)
3.0         # 부동 소수점수(실수)

부동 소수점수(실수)라고 하는 것은, 주로 소수점 이하의 계산이 필요한 때에 사용한다 수입니다. 같은 수에서도 3 이라고 쓰면 정수로서 3.0 이라고 쓰면 부동 소수점수(실수)라고 해 다루어집니다. 정수 쪽이 계산이 고속의 모아 두어 소수점 이하가 불필요한 경우에는 정수를 사용합니다.

표시

수치를 화면에 표시해 봅시다. 무엇인가의 값을 표시하고 싶을 때 (은)는,p 라고 하는 명령을 사용합니다.

소문자의 p, 반각 스페이스, 표시하고 싶은 값의 순서에 입력해 개행해 관 차이. 향후 여러가지 명령이나 기호가 나옵니다만, 코멘트 등을 제외해 모두 반각 문자로 입력할 필요가 있습니다. 무심코 전각 스페이스 등을 넣고 끝내면(자), 발견 하기 어려운 에러가 되기 때문에 주의합시다.

p 3

이 p 라고 하는 명령은 디버그가끔 자주(잘) 사용됩니다만, 공부를 위해서(때문에) 수치 등을 표시하는 목적으로도 편리합니다.

이것을 실행하면(자), 메시지 박스에 3 과 표시될 것입니다. 본래, p 는 메시지 박스를 표시하는 명령이라고 하는 것은 아닙니다만, 게임 개발에 특화한 RGSS 에서는 달리 적당한 출력처가 없기 때문에 이번이야 (이)가 되어 있습니다.

계산의 방법

Ruby 에 계산을 시켜 봅시다.

p 1 + 1             # 가산 (덧셈)
p 10 - 3            # 감산 (뺄셈)
p 7 * 5             # 곱셈 (곱셈)
p 24 / 4            # 제산 (나눗셈)

이와 같이, 보통 식을 쓰면 그 결과가 출력 됩니다. + (이)나 - 등의 기호는연산자라고 부릅니다.

덧붙여 프로그램에서는, 곱셈을 *, 나눗셈을 / 로 나타냅니다. 익숙해져 있지 않은 (분)편은, 중요한 (일)것이므로 기억해 둡시다.

우선 순위

보통 계산과 똑같이,* 라고 / 는 + 과 - 보다 우선됩니다. 이 순서를 바꾸고 싶을 때는 외모 ( )를 사용해 계산합니다.

p 2 * 2 + 3 * 4     # => 16
p 2 * (2 + 3) * 4   # => 40
p 2 * (2 + 3 * 4)   # => 28

1 번째의 식은 4+12, 2 번째의 식은 2*5*4, 3 번째의 식은 2*14 과 해석된다 의로, 이와 같이 다른 계산 결과가 됩니다.

외모는 몇 겹이나 거듭할 수가 있습니다 (이중 미에에 괄경우에서도 사용하는 기호는 같습니다) .

덧붙여 샘플 프로그램의 코멘트중에 => 라고 하는 기호가 사용되고 있다 때는, 주로 그 행의 출력 결과를 나타내는 것이라고 합니다. 이것은 설명을 알기 쉽게 하기 위한 편의적인 것입니다.

소수점 이하의 계산

정수를 정수로 나눌 경우, 나머지는 잘라서 버릴 수 있어 답도 정수가 됩니다. 소수점 이하의 답을 내고 싶은 경우는, 부동 소수점수(실수)를 사용합니다. 나누어지는 수인가 나누는 수의 적어도 어느 쪽인가가 부동 소수점수(실수) (소수점 이하를 명기한 형태)인 , 답도 부동 소수점수(실수)가 되다는 것입니다.

p 15 / 4            # => 3
p 15.0 / 4          # => 3.75
p 15 / 4.0          # => 3.75

잉여의 계산

잉여 (나눗셈의 나머지)를 요구하기에는,% 라고 하는 기호를 사용합니다.

p 14 % 4            # => 2
p 13 % 4            # => 1
p 12 % 4            # => 0

예를 들어 1 번째의 식을 실행할 경우, 14 를 4 로 나눌 경우의 넘치는 수, 즉 2 라고 하는 수치가 계산 결과적으로 출력 됩니다.

나무승의 계산

억지로 기억할 필요는 없습니다만, 나무승 (같은 수를 지정 회수만 곱셈 한 답)을 요구하기에는,** 이라고 하는 기호를 사용합니다.

p 2 ** 4            # => 16

이 예에서는 2 의 4 승, 즉 2*2*2*2 을 계산하고 있습니다.


변수

  • 변수의 이름
  • 대입과 참조
  • 자기 대입
  • 글로벌 변수

변수라는 것은, 어떠한 값에 이름을 붙인 것입니다.

변수의 이름

변수는 이름을 붙여 관리됩니다. 예를 들어 x 나 y, 혹은 좀 더 길다 level 라든지 gold 와 같은 이름입니다. 이름의 길이에는 제한이 없습니다.

변수에는 몇개의 종류가 있습니다만, 처음은 가장 기본적 로컬 변수마시는 것을 취급합니다. 로컬 변수의 이름의 규칙은 이하와 같습니다. 특히 1 번째의 조건에 주의해 주세요.

  1. 선두의 문자가, 영소문자 또는 _ (언더 스코아)인 것.
  2. 두번째 이후의 문자가 영문자, 숫자, 또는 _ (언더 스코아)인 것.
  3. 예약어(reserved word)는 아닌 것.

예약어(reserved word)라고 하는 것은 이하의 것입니다. 이것들은 Ruby 로 특별한 의미를 가진다 단어로서 「예약」되어 있으므로, 변수명으로서는 사용할 수 없습니다.

alias    def      false    nil      return   unless
and      do       for      not      self     until
begin    else     if       or       super    when
break    elsif    in       redo     then     while
case     end      module   rescue   true     yield
class    ensure   next     retry    undef

이외라면 기본적으로 어떤 이름에서도 사용할 수 있습니다.

대입과 참조

실제로 변수를 사용해 봅시다.

x = 3
y = 4
p x + y     # => 7

1 행 째와 2 행 째로는, 변수에의대입을 해 지금 . = (이)라고 하는 기호는대입 연산자라는 것입니다. 수학으로 사용하는 등호와 같이 「좌변과 우변이 동일하다」라고 하는 의미는 아니고, 「좌변의 변수가 우변의 값을 가리키도록(듯이) 한다」라고 하는 의미가 됩니다. 상기의 예에서는, 1 행 째에 x 라는 이름의 변수에 3 이, 2 행 째에 y 와 말하는 이름의 변수에 4 가 각각 대입됩니다.

3 행 째로는, 변수 x 와 y 를참조하고 있습니다. 참조 (이)라고 하는 것은, 그 변수의 값을 취득한다고 합니다. 변수는 직접 수치를 쓸 경우와 완전히 똑같이 계산 등을 할 수가 있습니다. 여기에서는 x + y 라고 하는 식은 3 + 4 와 해석되어 계산 결과는 7 이 됩니다.

덧붙여 한번도 대입되어 있지 않은 로컬 변수를 갑자기 참조하려고 하면(자), 그 시점에서 에러가 되어 버립니다.

p zzz       # ERROR!!

변수는, 무엇인가를 대입하고 나서 사용하는 것이라고 기억해 두어 주세요.

zzz = 5
p zzz       # => 5

이와 같이, 1 행 째에 zzz 라고 하는 변수에 5 를 대입한 후에는, 참조 하는 것이 할 수 있도록 됩니다.

자기 대입

변수가 자기 자신의 값을 참조해, 계산한 결과를 재차 자신에게 대입한다 일을자기 대입이라고 부릅니다.

x = 1
x += 7
x -= 3
x *= 2
p x         # => 10

2 행 째의 x += 7 이라고 하는 것은, x = x + 7 과 같은 의미입니다. 즉, 변수 x 에 7 을 가산 한다고 하는 것입니다. 같이-=,*=,/=,%= 등도 사용할 수 있습니다. 이러한 연산자를자기 대입 연산자와 부릅니다.

자기 대입은, 트크르의 변수로 하는 계산의 처리에 가치관이 닮아 있습니다. 이 예에서는, 우선 1 행 째에 대입한 값 1 에 2 행 째에 7 을 더하고 있습니다. 이 시점에서 x 의 값은 8 이 되어 있습니다. 게다가 3 을 빼, 마지막에 2 를 걸고 있기 때문에 계산 결과는 10 이 되는 것입니다.

글로벌 변수

로컬 변수는 일시적으로 사용 하기 위한 변수이므로, 함수나 클래스 등의 정의 (후술)로부터 밖으로 나오면(자), 그 값은 잃게 되어 버립니다. 이것에 대해서, 프로그램의 어디에서라도 참조 할 수 있는글로벌 변수라고 한다 것이 있습니다. 글로벌 변수는, 프로그램중의 어디서 사용되고 있어도, 같은 이름이면, 반드시 같은 변수로서 다루어집니다.

다음과 같이,$ 라고 하는 문자로 시작되는 변수는 글로벌 변수로서 다루어집니다. 대입 등 방법은, 로컬 변수와 완전히 같습니다.

$global

어디에서라도 참조 할 수 있다고해도, 로컬 변수부터 글로벌 변수 (을)를 사용하는 편이 좋다고 하는 것은 없습니다. 글로벌 변수는 그 강력함 그러므로, 함부로 사용하면(자) 프로그램이 이해하기 어려워져 버릴 우려가 . 사용할 때에는 충분히 주의합시다.


?? ??

캐릭터 라인

  • print
  • 변수에의 대입
  • backslash 기법
  • 식 전개

일반적으로, 몬지가 이어진 데이터의 (일)것을캐릭터 라인이라고 부릅니다.

print

다브르크트 "" 또는 싱르크트 ''로 둘러싸였다 부분은, 그대로 캐릭터 라인의 데이터로서 다루어집니다.

p "트크르 "                    # => "트크르 "
p '트크르'                    # => "트크르 "

p 라면 다브르크트까지 함께 출력 되어 버리므로, 대신에 print 라고 하는 명령을 사용해 봅시다.

print "트크르 "                # => 트크르

이번은 다브르크트가 붙지 않게 되었습니다. p 는 값의 내용을 인간에게 알아 (쉽)싼 형태로 표시하는 명령이므로, 캐릭터 라인이라고 하는 것이 한눈에 알도록(듯이) 다브르크트 돌출하고 표시되어 있었습니다. print 는 p 와 닮아 있습니다만, 이쪽은 캐릭터 라인 그것을 표시할 수가 있습니다.

변수에의 대입

캐릭터 라인도 수치와 전혀(완전히) 똑같이, 변수에 대입할 수가 있습니다.

a = "트크르 "
print a                         # => 트크르

캐릭터 라인에 캐릭터 라인을 더하면(자), 연결된 캐릭터 라인이 답이 됩니다.

a = "RPG"
b = "트크르 "
print a + b                     # => RPG 트크르

캐릭터 라인에 정수를 걸면(자), 그 회수만 반복해진 캐릭터 라인이 답이 됩니다.

a = "트크르 "
print a * 2                     # => 트크르트크르

backslash 기법

캐릭터 라인중의 엔기호 ￥ 는, 거기에 계속되는 문자에 의해 개행 등의 특수한 문자로서 다루어집니다. 예를 들어 ￥n 라고 하는 것은 개행을 나타냅니다.

backslash 기법에는 ￥t (탭)나 ￥s (스페이스) 등 여러가지 것이 있습니다만, 지금은 ￥n 가 개행을 나타내는 것 (와)과 ￥￥ 와 엔기호를 둘 거듭했을 때에 ￥ 문자 그것을 겉와 (일)것, 이 둘을 기억해 두어 주세요.

a = "RPG 트크르 XP"
b = "\\10, 290"
print a + "\n" + b              # => RPG 트크르 XP
                                #    \10, 290

싱르크트 ''로 둘러싸인 캐릭터 라인에서는, ￥￥ (엔기호 그 것)과 ￥' (싱르크트)를 제외해 backslash 기법은 사용할 수 없습니다. 이 때문에, 문자 그것을 표현하고 싶은 경우는 이쪽을 사용했다 편이 편리한 (일)것이 있습니다.

print '트크르 \n'              # => 트크르 \n

그런데, 왜 엔기호인데 「backslash 기법」이라고 부르겠지요 인가. 그것은, 일본어 폰트로 엔기호 ￥ 를 할당할 수 있고 있는 장소가, 본래 backslash \ 의 문자 코드로 있기 때문에입니다. 문자의 외형은 달라 가, 컴퓨터의 내부 정보적으로는 같은 것인 것입니다.

식 전개

캐릭터 라인안에는,#{식} 이라고 하는 형식으로 식의 내용을 묻을 수가 있습니다.

game = "RPG"
print "#{game}트크르 "         # => RPG 트크르

상기의 예에서는, 1 행 째에 game 라는 이름의 변수에 "RPG" 라고 한다 캐릭터 라인을 대입하고 있습니다. 2 행 째로는, 캐릭터 라인의 #{game} 라고 하는 부분에 변수 game 에 대입되어 있는 캐릭터 라인 "RPG" 를 묻어, 앞으로에 계속되는 "트크르 " 와 편성해, 하나의 캐릭터 라인으로서 출력 해 있습니다. RPGXP 의 이벤트 커멘드 [문장의 표시] 에서는, 문장내에 ￥V[n] 나 ￥N[n] 등의 제어 문자를 사용하는 것으로 변수의 값이나 엑터의 이름을 메세지에 묻을 수가 있습니다만, 그것과 닮은 것 같은 기능이라고 생각해 주세요.

이 기능은, 예를 들어 pre-set의 스크립트에서는 실제로 이런 식으로 사와 있습니다.

print("파일 #{filename} 가 발견되지 않습니다. ")

print 의 호출에 외모 ( )가 붙어 있습니다만, 이것은 식의 우선 순위 등이 혼동하기 쉽지 않으면 생략 할 수가 있습니다 (이 장으로 print 의 사용예로서 소개해 온 것은, 외모를 생략 한 형태입니다) . pre-set의 스크립트는 기본적으로 외모를 생략 하지 않는 형태로 통일되어 있기 때문에, 여기에서도 외모를 붙일 수 있고 있습니다.

이것은 물론,

print("파일 " + filename + " 가 발견되지 않습니다. ")

이와 같이 써도 같은 것입니다만, 식 전개의 기법을 사용하는 것으로 프로그램을 읽기 쉽게 하고 있습니다.

덧붙여 backslash 기법과 같이, 싱르크트 ''로 둘러싸였다 캐릭터 라인에서는 식 전개도 유효하게 되지 않습니다.


조건 분기

  • 비교 연산자
  • 진위값
  • 논리 연산자
  • if ? elsif ? else ? end
  • unless ? end
  • case ? end
  • 조건 연산자

특정의 조건을 채우고 있을까 반대 등에 의해서, 그 후의 동작이 바뀌도록(듯이) 해 하지만조건 분기입니다.

비교 연산자

구체적으로 처리를 분기 시키는 방법을 배우기 전에, 그 조건이 되는 식으로 사용되는 연산자 (을)를 기억해 둡시다.

다음의 6 개(살)의 연산자를비교 연산자라고 부릅니다. 이러한 연산자는, 주어진 식 (수치나 캐릭터 라인 등)을 비교해, 그 결과를 돌려줍니다.

== | 동일하다
! = | 동일하지 않다
< | 작다
> | 크다
<= | 작은가 동일하다
>= | 큰가 동일하다

여기서 중요한 것은, 동일한 (일)것을 판정 하는 연산자는 = 은 아니고 == 로 있다고 합니다. 벌써 학습한 것처럼,= 이라고 하는 기호는 비교는 아니게 대입을 나타냅니다. 혼동 하지 않게 주의해 주세요.

진위값

비교 연산자의 연산 결과는진위값으로 불립니다. 진 (맞고 있다)인가, 가짜 (잘못되어 있다)인가의 두 상태를 나타낼테니까 입니다.

식이 맞고 있으면 true, 잘못되어 있으면 false 라고 하는 값이 됩니다. 확인해 봅시다.

p ("안녕하세요 " == "안녕하세요 ")        # => true
p ("안녕하세요 " == "안녕하세요 ")      # => false
p (3 + 1 == 3 + 5)                  # => false
p (3 + 1 == 2 + 2)                  # => true

논리 연산자

다음의 6 개(살)의 연산자를논리 연산자라고 부릅니다.

and && | 「? , 한편,?」라고 하는 의미
or || | 「? , 또는,?」라고 하는 의미
not ! | 「? 나오지 않다」라고 하는 의미

영단어의 연산자와 기호의 연산자는, 어느쪽이나 기본적으로는 같은 의미입니다. pre-set의 스크립트에서는, 주로 영단어 쪽을 사용하고 있습니다. 이것들 의 논리 연산자를 사용하는 것으로, 보다 복잡한 조건을 지정할 수가 있습니다.

p (100 > 77 and 1 + 1 == 2)         # => true
p (100 > 77 && 1 + 1 == 2)          # => true

1 행 째의 식과 2 행 째의 식은, 모두 같음 「100 은 77보다 크고 한편 1 + 1 은 2 이다」라고 하는 내용을 나타내고 있습니다. 물론, 100 은 77 보다 큰 수이고, 1 + 1 의 답은 2 가 됩니다 의로, 양쪽 모두의 식이 성립 한다고 하게 됩니다. 따라 true (진, 맞고 있다)가 출력 됩니다.

그럼, 다음의 식은 어떨까요.

p (1 + 1 == 3 or 2 + 2 == 3)        # => false
p (1 + 1 == 3 || 2 + 2 == 3)        # => false

1 행 째의 식과 2 행 째의 식은, 모두 「1 + 1 은 3 인 또는 2 + 2 는 3 이다」라고 하는 내용을 나타내고 있습니다. 그렇지만, 1 + 1 은 3 이 아닙니다 해, 2 + 2 도 3 은 아니기 때문에, 이 경우, 양쪽 모두의 식이 성립하지 않으면 하는 것이 됩니다. 비교 연산자 or (||)에서는, 어느 쪽인가 한편의 식이 성립하고 있으면 true (진, 맞고 있다)가 됩니다만, 여기에서는 양쪽 모두의 식 하지만 성립하고 있지 않기 때문에, false (가짜, 잘못되어 있다)와 출력 됩니다.

또, not (! )(은)는, 우에에 든 예와는 조금 달라, not (! )의 뒤에 있다 조건 (식)이 성립하고 있지 않다, 라고 하는 내용을 나타냅니다. true 와 false 를 반대로 하는 연산자라고 생각해 주세요.

p (not true)                        # => false
p (!  true)                          # => false

이 경우는 「true 나오지 않다」라고 하는 내용이 되므로, false 가 출력 되고 .

if ? elsif ? else ? end

if ? end 라고 하는 것은 조건 분기의 구문입니다. 이것은 영어의 if (만약? 이다면)와 같고, 「만약, if 의 앞으로에 계속되는 조건에 들어맞는다면, 이하의 처리를 실행한다」라고 말한 의미가 됩니다. 다음의 예에서는 3? 5 행 째가 조건 분기가 되어 있습니다.

a = 20              # 변수 a 에 20 을 대입한다.

if a >= 10          # 만약 a 가 10 이상이면,
  print "big"       #   big 와 표시한다.
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 "small"     #   small 와 표시한다.
end                 # 분기 종료.

unless ? end

if 와는 반대로, 있는 조건이 채워지고있지 않은때에 어떠한 처리를 하고 싶은 경우, unless 를 사용합니다.

a = 7               # 변수 a 에 7 을 대입한다.

unless a >= 10      # 만약 a 가 10 이상으로있고라면,
  print "small"     #   small 와 표시한다.
end                 # 분기 종료.

case ? end

특정의 변수의 값에 의해 분기 시키고 싶은 경우는, case 를 사용하면(자) 편리합니다.

a = 0               # 변수 a 에 0 을 대입한다.

case a              # 분기 개시.
when 0              #  a 가 0 때,
  print "굿 "      #   굿과 표시한다.
when 1              #  a 가 1 때,
  print "쵸키 "    #   쵸키와 표시한다.
when 2              #  a 가 2 때,
  print "파 "      #   파와 표시한다.
end                 # 분기 종료.

1 행 째의 a = 의 나머지의 0 이라고 하는 값을 1 이나 2 로 변경해, 제대로 분기 할 수 있어 있는 것을 확인해 봅시다. a 에 1 을 대입하면(자) "쵸키 " 라고 한다 캐릭터 라인이 표시되어 2 를 대입하면(자) "파 " 와 표시됩니다.

조건 연산자

? 및 : 이라고 하는 기호를 사용하는, 연산자 형식의 조건 분기도 있습니다.

a = 3

p (a >= 10 ?  "big" : "small")   # => "small"

이 예에서는, 변수 a 의 값이 10 이상일 때 "big", 9 이하이다 때에 "small" 와 표시합니다. 조건 연산자의 문법은 「조건식 ? 진정한 때의 치 : 위 때의 값」이라고 됩니다. 조건식이 a >= 10, 진정한 때의 값이 "big", 가짜 때의 값이 "small" 에 해당해, 각각 ? (와)과 : 를 사용해 나타나고 있다고 합니다.

물론 if 를 사용해도 전혀(완전히) 같은 것이 가능합니다.

a = 3

if a >= 10
  p "big"
else
  p "small"
end

if 를 사용한 문법에서는 예를 들어 이와 같이 쓰게 됩니다만, 조건 연산자를 사용하는 (분)편이, 보다 간결하게 쓸 수 있다고 하는 장점이 있습니다. 이 기법은 pre-set의 스크립트에서도 다용 되어 있기 때문에, 기억해 두면(자) 좋을 것이다.

</html


루프

  • while ? end
  • 범위 오브젝트
  • for ? in ? end
  • loop do ? end
  • break
  • next

특정의 처리를 반복하고 싶을 때에 사용해 하지만루프입니다.

while ? end

특정의 조건이 채워지고 있는 동안 루프 시키고 싶은 경우, while 를 사용합니다.

a = 0               # 변수 a 에 0 을 대입한다.
i = 1               # 변수 i 에 1 을 대입한다.

while i <= 5        # 변수 i 가 5 이하의 사이 루프 시켜,
  a += i            #   변수 a 에 각각의 i 의 값을 가산한다.
  i += 1            #   변수 i 의 값을 1 늘린다.
end                 # 루프 종료.

p a                 # 계산 결과를 표시한다.

이것은 1 에서 5 까지의 수의 합계를 요구하는 프로그램입니다. 여기서, 변수 i 는 1 에서 5 까지의 수치를 만들어 내기 위해서(때문에) 이용되고 있습니다. 물론 변수명은 i 나오지 않아도 상관하지 않습니다만, 일반적으로 루프의 처리용 변수로서는 i, j, k 라고 하는 이름이 자주(잘) 사용됩니다.

그런데, 이 프로그램으로 의미가 파악하기 어려운 것은 i += 1 이라고 하는 행이겠지요. 이 행이 없으면 i 가 언제까지나 1 인 채이므로 i <= 5 라고 하는 조건이 쭉 채워지고 계속하게 되어, 엔들레스 루프가 되어 버립니다. 그 때문에, 여기에서는 매회 i 에 1 을 더해 가는 것으로 1, 2, 3 …과 수치를 변화 시키고 있습니다.

변수 a 및 i 의 값의 변화를 겉으로 하면(자), 이하와 같이 됩니다.

루프 | a 의 값 | i 의 값
초기 상태 | 0 | 1
1 주 후 | 1 | 2
2 주 후 | 3 | 3
3 주 후 | 6 | 4
4 주 후 | 10 | 5
5 주 후 | 15 | 6

루프를 5 바뀌 돈 시점으로, a 중(안)에서는 1+2+3+4+5 이라고 하는 계산이 되었다 것으로 되고, i 의 값이 5 를 넘기 위해서(때문에) end 로 반복이 종료합니다.

그리고, p 로 최종적인 a 의 값을 표시하게 되어, 답의 15 라고 하는 수치가 표시 되다는 것입니다.

범위 오브젝트

수치의 범위, 예를 들어 「1 에서 5 까지」라고 하는 것 같은 개념을 나타내는 것 (을)를범위 오브젝트라고 부릅니다.

1..5

위의 식은 「1 에서 5 까지」를 나타내고 있습니다. 이와 같이 .. (이)라고 한다 연산자를 사용하는 것으로, 범위 오브젝트를 작성할 수가 있습니다.

또,... (이)라고 하는 연산자를 사용하는 것도 할 수 있습니다.

1...5

.. (와)과의 차이는 「종단을 포함하지 않는다」라고 하는 것입니다. 그러니까, 이 경우는 실제로는 「1 에서 4 까지」를 나타내게 됩니다.

for ? in ? end

범위 오브젝트로 표현된 범위내에서 루프 시키고 싶은 경우는 for 를 사용합니다.

a = 0               # 변수 a 에 0 을 대입한다.

for i in 1..5       # 변수 i 를 1 에서 5 까지의 범위로 변화 시켜,
  a += i            #   변수 a 에 각각의 i 의 값을 가산한다.
end                 # 루프 종료.

p a                 # 계산 결과를 표시한다.

이것은 while 를 사용한 프로그램과 완전히 같은 1 에서 5 까지의 수의 합계를 요구하는 프로그램입니다만, while 를 사용할 경우 보다 스마트하게 되어 있는 것이 알까요. while 에서는 변수 i 에 1 을 가산 해 나가는 것으로 1 에서 5 까지의 범위를 표현하고 있었습니다만, for 에서는 변수 i 에 대해서 「1 에서 5 까지의 범위」의 수를 순서에 대입 해 나가는 것으로 나타내고 있습니다. 외형의 차이는 있습니다 하지만, 실제로는, 완전히 같은 처리가 행해지고 있습니다.

Ruby 에는 여러가지 문법이 있어, 루프 하나 매우 다양한 방법이 존재합니다. 그렇게 말한 문법의 거의는, 이 예의 같게 「 보다 간단하게 쓴다 모아 두고」에 있다고 생각해 주세요. 실제, 조건 분기와 루프마저 이해하고 있으면, 대부분의 논리는 표현 가능하게 됩니다.

loop do ? end

반복하는 회수나 조건을 지정하지 말고 루프 시키고 싶은 경우, 즉 엔들레스 루프를 만들고 싶은 경우는 loop 를 사용합니다. 이것은 while 나 for 와는 조금 성질이 달라 가, 통상, 그 차이를 특히 의식할 필요는 없습니다.

i = 0               # 변수 i 에 0 을 대입한다.

loop do             # 루프 개시.
  i += 1            #   변수 i 의 값을 1 늘린다.
  p i               #   변수 i 의 값을 표시한다.
end                 # 루프 종료.

이것은 「i 의 값을 1 두 개(살) 늘리면서, 그 값을 표시한다」라고 하는 프로 그램입니다만, 종료 조건이 없습니다. 이것을 실행하면(자), 1, 2, 3 …과 끝없게 표시가 계속됩니다. 즉 「빠진다」됩니다. 만약 이런 식으로 메시지 박스의 표시가 끝 없게 행해져 프로그램을 종료하려고 해도 할 수 없게 되어 버릴 경우는, F12 키를 누르면서 메세지 박스를 닫아 그대로 우상의 클로우즈 버튼을 클릭합시다.

break

루프를 도중에서 중단하고 싶은 경우에는 break 라고 하는 명령을 사용합니다.

i = 0               # 변수 i 에 0 을 대입한다.

loop do             # 루프 개시.
  i += 1            #   변수 i 의 값을 1 늘린다.
  if i == 5         #   만약 변수 i 의 값이 5 라면,
    break           #     루프를 중단한다.
  end               #   조건 분기 종료.
  p i               #   변수 i 의 값을 표시한다.
end                 # 루프 종료.

방금전의 프로그램에 「i 가 5 가 되면(자) 중단 해 주세요」라고 하는 조건을 더하고 했다. 이것을 실행하면(자), 1, 2, 3, 4 와 표시되어 거기서 종료가 됩니다.

break 는, while 나 for 등, 다른 방법으로 작성한 루프에서도 사용하는 것이 할 수 있습니다.

next

루프를 중단하지 않고, 다음의 반복에 처리를 옮길 때는 next 라고 하는 명령을 사용합니다.

for i in 1..5       # 변수 i 를 1 에서 5 까지의 범위로 변화 시켜,
  if i == 3         #   만약 변수 i 의 값이 3 이라면,
    next            #     다음의 반복에.
  end               #   조건 분기 종료.
  p i               #   변수 i 의 값을 표시한다.
end                 # 루프 종료.

이것을 실행하면(자), 1, 2, 4, 5 와 표시됩니다.


함수

  • 함수의 호출
  • 함수의 정의
  • 인수
  • 디폴트 인수
  • 함수의 재정의

수치의 계산이나 캐릭터 라인의 표시 등, 일련의 처리에 이름을 붙여 하나에 집계한 것을함수라고 부릅니다.

함수의 호출

지금까지 사용해 온 exit, p, print 라고 하는 명령도 실은 함수의 일종입니다.

함수를 스스로 정의 하는 방법을 배우기 전에, 좀 더 함수인것 같은 함수를 사용해 봅시다. random number를 생성하는 rand 라고 하는 함수를 알아 (쉽)쌀 것이다.

p rand(100)

이것은, 실행할 때마다 다른 숫자 (0? 99)를 표시하는 프로그램입니다. rand 함수는, 0 이상 한편 지정된 정수부터 적은 범위중에서 랜덤에 숫자를 선택해 돌려주는 함수입니다. 이 「지정하는 값」의 일(것)을인수 (끌어 수)라고 부릅니다. 인수는 통상, 함수명의 뒤의 외모 () 내에서 지정합니다. 위의 예에서는 100 이라고 하는 것이 rand 함수의 인수입니다. 인수에는, 수치 등을 직접 지정하는 것만으로는 없고, 다음의 예의 같게 임의의 식을 사용할 수가 있습니다.

x = 10
y = 20
p rand(x + y)       # p rand(30)와 같다

인수와는 반대로, 함수가 그 처리 결과적으로 호출해 앞으로 돌려주어 오는 값의 것 (을)를반환값이라고 부릅니다. 즉, rand 함수의 반환값은 특정의 범위의 랜덤인 수치이다고 합니다. 함수의 반환값은, 보통 값이나 변수 (와)과 똑같이 취급할 수가 있습니다.

p rand(6) + 1

이것은 rand 함수의 반환값에 1 을 가산해, 그 결과를 표시 한다고 하는 의미 입니다. rand 함수에 6 을 인수로서 건네줄 경우의 반환값은 0 에서 5 의 범위의 random number가 되기 때문에 거기에 1 을 더한다고 하는 것은, 사이코로와 같이 1 으로부터 6 까지의 범위의 값을 랜덤에 표시 한다고 하게 되는 것입니다.

exit 나 rand 와 같은 함수는 미리 시스템에 짜넣어지고 있다 의로,편입 함수로 불리고 있습니다.

함수의 정의

함수의 정의는 def 로 시작되어 end 로 끝납니다. 구체적으로는 이하와 같은 문법입니다.

def 함수의 이름
  함수의 내용
end

함수의 이름의 붙이는 방법은, 기본적으로 로컬 변수와 같음이라고 생각해 주세요. 선두에 대문자를 사용하는 것도 할 수 있습니다만, 함수 에 따르는 말한 이름을 붙이는 것은 권유 할 수 없습니다. 덧붙여 함수명의 예외로서 마지막 문자에는 ? 또는 ! (와)과 말하는 기호를 사용할 수가 있습니다.

예를 들어, 방금전의 rand(6) + 1 이라고 하는 처리를 dice 라는 이름의 함수로서 정의 하는 경우, 다음과 같이 됩니다. 이와 같이 정의해 두면, 이 이후 dice 와 썼을 뿐으로 1 에서 6 까지의 random number를 얻을 수 있게 되는 것입니다.

def dice
  return rand(6) + 1
end

p dice              # p rand(6) + 1 과 같다

여기서 return 라고 하는 것은, 함수의 처리를 종료 하기 위한 명령입니다. 함수가 RPGXP 의 common 이벤트라고 하면(자), return 는 [이벤트 처리의 중단] 에 상당한다 (와)과 생각해 주세요. return 의 우측으로 쓰여진 식이, 그 함수의 반환값이 됩니다. 함수를 도중에서 중단하는 경우 이외는 return 를 생략 하는 것도 가능합니다만, 책 가 알기 쉬울 것이다. pre-set의 스크립트에서도, return 는 많은 경우, 생략하지 않고 쓰여져 있습니다.

인수

인수를 취하는 함수는, 이하와 같이 정의 합니다.

def abs(x)
  if x < 0          # 만약 x 가 0 미만이면,
    return -x       #   함수를 종료해, -x 를 반환값이라고 한다.
  else              # 그 이외이면,
    return x        #   함수를 종료해, x 를 반환값이라고 한다.
  end               # 분기 종료.
end

p abs(-3)           # => 3

이것은 인수로서 주어진 값의 절대치를 돌려주는 함수입니다. 이 「인수로서 주어진 값」을 만일 x 로서 정의 하고 있습니다. 이 x 의 일(것)을가인수라고 부릅니다. 함수 내부에서는 조건 분기를 사용해, x 가 0 보다 적은 (마이너스의 ) 때로는 -x 를, 그 이외 때 (0 이상 때)에는 x 를 반환값이라고 합니다. 마지막 행에서는,-3 이라고 하는 인수를 지정 해 실제로 abs 함수를 호출해, 그 결과를 p 함수로 출력 하고 있습니다. x 가 가인 수인데 대해, 이 -3 의 일(것)을열매 인수라고 부릅니다.

덧붙여서, 절대치라고 하는 것은 수학에 나오는 개념으로, 원점 (이 경우는 0 과 생각합니다)로부터의 거리를 표현하는 수치의 (일)것입니다. -3 도 +3 도, 0 을 원점과 할 경우 에는, 각각 0 의 위치로부터 3 떠난 거리에 있는 숫자라고 하게 됩니다.

복수의 인수를 취하는 함수도 정의 할 수가 있습니다. 복수의 인수는, 칸마 ', ' (으)로 단락지어 지정합니다.

def sum(x, y)
  return x + y      # 함수를 종료해, x + y 를 반환값이라고 한다.
end

p sum(2, 3)         # => 5

이것은 인수로서 주어진 두 수치의 화를 돌려주는 함수입니다. 물론 실제로는 2 + 3 이라고 쓰는 편이 빨리 알기 쉬우니까, 통상 이러한 단순한 함수를 정의 할 것은 없습니다. 어디까지나, 문법을 설명 하기 위한 예제라고 생각해 주세요.

디폴트 인수

호출시에 생략 가능한 인수의 (일)것을디폴트 인수와 부릅니다. 디폴트 인수는, 가인수에 대입 기호 = 를 붙이는 것으로 지정 할 수 있고 . 디폴트 인수를 설정해 두면(자), 외모 () 내의 열매 인수의 곳에 값이 지정되어 있지 않은 경우, 가인수에는 자동적으로 디폴트 인수가 대입되는 것 (이)가 됩니다.

def dice(n = 6)
  return rand(n) + 1
end

p dice              # p dice(6)와 같다

위의 예에서는, 인수 없음으로 호출했을 때에는 1? 6 의 random number를 돌려줍니다만, 인수를 지정하면(자), random number의 최대치를 변경하는 것이 할 수 있도록 되어 있습니다. 예를 들어, dice(8)로서 호출하면 1? 8 의 random number를 돌려주는 것입니다.

많은 편입 함수도, 이와 같이 인수가 생략 가능하게 되어 있습니다.

함수의 재정의

다음의 프로그램에서는, hello 라는 이름의 함수를 2 회 정의 해 지금 .

def hello
  return "안녕하세요"
end

def hello
  return "안녕하세요"
end

p hello         # => "안녕하세요"

Ruby 에서는, 함수의 이름이 중복 할 경우에서도 에러로는 되지 않습니다. 이러한 경우는 후부터 정의 되는 편이 우선되어 낡은 정의는 소멸한다 됩니다.


오브젝트

  • 오브젝트와 클래스
  • 메소드
  • 슈퍼 클래스

Ruby 는 객체 지향 언어입니다. 여기에서는,오브젝트와는 어찌된 일인지를 해설합니다.

오브젝트와 클래스

Ruby 로 다루어지는 모든 데이터는오브젝트와 불리고 있습니다.

3               # 정수 오브젝트
1.5             # 부동 소수점수(실수) 오브젝트
"Ruby"          # 캐릭터 라인 오브젝트
1..10           # 범위 오브젝트

오브젝트의 종류의 (일)것을클래스라고 부릅니다. 예를 들어 캐릭터 라인 오브젝트는 String, 범위 오브젝트는 Range 와 말하는 클래스에 속하고 있습니다. Ruby 에 짜넣어지고 있는 클래스의 일람 (은)는,RGSS 레퍼런스 (안)중에 있다 편입 클래스 의 페이지로 확인할 수가 있습니다.

특정의 클래스에 속하는 오브젝트인 것을 강조 하기 위한(해) 에,인스턴스라는 말을 사용하는 것도 있습니다. 클래스라는 것은, 말하자면 거기에 속하는 오브젝트에 있어서의 히나가타가 되는 것입니다. 대범한 설계도가 클래스에 갖춰지고 있고, 오브젝트의 행위 있고를 결정하고 있다 됩니다. 오브젝트는 반드시 몇개의 클래스에 속하고 있습니다. 따라, 「이 클래스에 속하고 있는 오브젝트」라고 하는 표현을 「이 클래스의 인스턴스」라고 바꾸어 말할 수가 있다고 하는 것인 것입니다.

메소드

시험삼아 String 클래스의 페이지가 어떻게 되고 있을까 봅시다. 지금의 단계에서는 의미가 자주(잘) 모른다 일지도 모르지 않습니다만, 그것은 걱정하지 않아서 상관하지 않습니다. 실제로 스스로 스크립트를 짤 때는 이 레퍼런스를 빈번하게 참조하게 되기 때문에 가능한 한 빠른 동안에 익숙해져 둘 필요가 있습니다.

메소드라는 것이 나열 되어 있는 것이 확인 할 수 있었다 입니까. 이것은, 그 클래스에 속하는 오브젝트 전용의 함수와 같은 것입니다.

메소드 일람안정도로 size 라고 하는 항목이 있네요. 이것을 사용해 봅시다.

a = "Ruby"

p a.size        # => 4

String 클래스의 size 메소드는, 캐릭터 라인의 바이트수를 돌려주는 메소드 입니다. 여기서 말하는 「바이트」란 capacity의 (일)것을 나타냅니다. 예를 들어 반각영숫자 1 문자는 1 바이트입니다. "Ruby" 라고 하는 캐릭터 라인은 4 문자이기 때문에 4 라고 하는 숫자가 되 돌아 오는 것입니다 (덧붙여서, 전각 1 문자는 3 바이트와 해 돌려주어 옵니다. 일본에서 자주(잘) 사용되고 있는 Shift-JIS 라고 하는 문자 코드에서는 전각 1 문자는 2 바이트입니다만, RGSS 에서는 UTF-8 라고 하는 문자 코드를 사용해 모아 두고입니다) .

또 하나 시험해 봅시다. 캐릭터 라인을 대문자 로 변환하는 upcase 메소드입니다.

a = "Ruby"

p a.upcase      # => "RUBY"

이와 같이, 오브젝트의 메소드를 호출할 때는 변수명의 뒤에 ". " (이)라고 하는 기호를 써, 그 후에 호출하는 메소드를 기술합니다. 조작의 대상이 되는 오브젝트의 (일)것을리시버와 부릅니다. 여기에서는 a.upcase 의 a 가 리시버입니다.

그런데, 캐릭터 라인 이외의 오브젝트에 대해서, 예를 들어 upcase 메소드를 호출하거나 하면(자) 어떻게 되는 것일까요.

a = 3

p a.upcase      # ERROR!!

이것은 에러가 됩니다. 왜냐하면 3 은 정수이기 (위해)때문에, upcase 라고 한다 메소드는 정의되어 있지 않기 때문에입니다.

덧붙여 이러한 메소드의 이름을 암기 하려고 할 필요는 없습니다. 캐릭터 라인에 대해서 무엇인가의 조작을 하고 싶은 경우는 String 클래스의 메소드를 사용한다 (이)라고 하는 것만 기억해 두면, 레퍼런스를 열어 하고 싶은 처리를 찾을 뿐(만큼) (으)로 좋기 때문에입니다. 빈번하게 사용하는 메소드는, 자연과 기억해 버리게 된다 그렇지.

슈퍼 클래스

3 이나 65 등의 정수는,Fixnum 클래스의 인스턴스입니다.

Fixnum 의 메소드 일람을 봐, 메소드의 수가 적은 것을 신기하게 생각했다 (분)편은 없습니까. 물론, 정수에 대해서 사용 할 수 있는 메소드가 이만큼 해인가 없는 것이 아닙니다. 그 열쇠는슈퍼 클래스와 말하는 란에 있습니다. Integer 와 쓰여져 있네요.

Integer 클래스에는 chr 라고 하는 메소드가 있습니다. 이것은, 그 숫자를 문자 코드로 하는 문자를 돌려준다고 하는 것입니다. 시험해 봅시다.

a = 65

p a.chr         # => "A"

제대로 호출할 수가 있었습니다. 65 라고 하는 것은 Fixnum 클래스의 인스턴스였다는 두인데, 왜 Integer 클래스의 메소드인 chr (을)를 호출해도 에러가 되지 않는 것일까요. 그것은, Fixnum 클래스는 Integer 클래스로부터계승되어 있기 때문(에)입니다.

계승이라고 하는 것은, 있는 클래스를 확장해 새로운 클래스를 만드는 것입니다. 기본적인 행위 있고가 되는 원래의 클래스가 있어, 그곳으로부터 파생한 새로운 클래스 (이)가 있는 상태. 이 풀어, 원이 된 클래스를슈퍼 클래스, 새로운 클래스를서브 클래스라고 부릅니다.

즉, Fixnum 클래스라고 하는 것은 Integer 클래스를 확장해 만들어졌다 새로운 클래스라고 하는 것입니다. 바꾸어 말하면(자), Integer 클래스는 Fixnum 클래스의 슈퍼 클래스라고 하는 것이 됩니다. Integer 클래스의 성질은 계승에 의해 모두 Fixnum 클래스에 계승해지고 있기 (위해)때문에, 메소드 등도 그대로 사용할 수 있습니다. 물론, Integer 클래스의 슈퍼 클래스인 Numeric 클래스나, 그 또 슈퍼 클래스의 Object 클래스로 정의 되어 있는 메소드도, Fixnum 클래스의 인스턴스로부터 호출하는 것이 가능합니다.

여기까지의 설명을 읽어, 왜 일부러 복수의 클래스에 분할되어 있다 의 것인지 의문으로 생각하는 (분)편도 있겠지요. 조금 어려운 이야기가 됩니다만, 계승의 의의는, 다른 클래스에 공통의 행위 있고를 갖게할 수 있기로 있습니다. 예를 들어, 부동 소수점수(실수)는 Float 클래스의 인스턴스로, 이것은 Numeric 클래스로부터 계승되어 있습니다. 정수와 부동 소수점수(실수)는 다른 것입니다만, 어느쪽이나 「수」를 나타낸다고 한다 점에서는 공통되고 있기 (위해)때문에, 그 공통 부분을 Numeric 클래스로 정의 하는 것 (으)로 중복을 잃고 있다는 것입니다.


화상의 표시

  • Graphics 모듈
  • 스프라이트와 비트 맵
  • 프롭퍼티

오브젝트를 이해해 보았자 조금 기분을 바꾸어, RGSS 의 게임 라이브러리를 사용해 화상을 표시해 봅시다.

Graphics 모듈

RGSS 의 게임 라이브러리 중에서 가장 중요한 것은 Graphics 모듈입니다. 이것은, 문자 그대로 게임내의 그래픽 전반을 처리 하기 위한 메소드의 모임에서, 게임 화면에 표시되는 모든 그래픽은, 이 모듈의 기능을 사용해 처리되어 있습니다.

모듈이라고 하는 것은, 같은 분야의 메소드를 모은 용기와 같은 것이라고 생각해 주세요. 클래스를 닮고 있습니다만, 모듈의 인스턴스를 생성할 수 없습니다 해, 그 필요도 없습니다.

그러면 우선, 다음과 같이 입력해 주세요.

loop do
  Graphics.update
end

loop do ? end 라고 하는 것은 엔들레스 루프를 작성하는 방법이었지요. 둘러싸였다 곳의 처리, 여기에서는 Graphics.update 라고 하는 행의 실행을 몇번이나 반복하면(자) 말하는 의미가 됩니다. 이 한가운데의 행에서는, Graphics 모듈의 update 메 솟드를 호출하고 있습니다. 이것은 오브젝트의 메소드 호출과 같은 형태 식이기 때문에 비교적 알기 쉬울 것이다.

Graphics.update 는, 게임 화면을 갱신해, 시간을 1 프레임 진행하면(자) 말하는 역할을 완수합니다. 이 타이밍에, 화면에 표시되어 있는 그래픽 하지만 일제히 써 교체된다고 합니다. 이 형태가 RGSS 에서의 게임 실행의 기본과 됩니다. RPG 라고 하는 대규모 게임을 실행하는 복잡한 스크립트도, 이 기본형태에 여러가지 처리를 첨가해 만들어지고 있습니다.

덧붙여 여기서 든 예(뿐)만으로는 아무것도 표시되지 않습니다. 새까만 화면을 몇번이나 고쳐 쓴다고 하는 처리를 반복뿐입니다. 이후로, 실제로 화상을 표시한다 방법을 배워 갑시다.

스프라이트와 비트 맵

방금전의 스크립트에 2 행 추가해, 다음과 같이 해 봅시다. 화면 좌상에 소악마의 화상이 표시되면 성공입니다.

devil = Sprite.new
devil.bitmap = Bitmap.new("Graphics/Battlers/075-Devil01")

loop do
  Graphics.update
end

Sprite 와 Bitmap 라고 하는 새로운 클래스가 나왔습니다. Sprite 는 게임 화면상에 어떠한 화상을 표시 하기 위한 기본 개념이 되는스프라이트를, Bitmap 는 스프라이트 등의 전송원이 되는비트 맵의 내용 그것을 나타내는 클래스입니다.

1 행 째로는, Sprite 클래스의 인스턴스를 새롭게 작성해, 그것을 devil 라고 하는 변수에 대입하고 있습니다. 정수나 캐릭터 라인 등의 오브젝트를 작성할 때는 3 이라든지 "Ruby" (와)과 같이 값을 직접 쓸 수가 있었습니다만, 스프라이트를 작성할 때 에는 이와 같이 Sprite.new 와 기술할 필요가 있습니다.

2 행 째로는, RGSS-RTP 에 포함되어 있는 화상 파일 ("075-Devil01")(을)를 읽어들여 Bitmap 클래스의 인스턴스를 새롭게 작성하고 있습니다. 게다가, devil 오브젝트의 bitmap 라고 한다 프롭퍼티 (후술)에 대해서 그것을 설정하고 있습니다. 이렇게 하는 것으로, 이 비트 맵을 스프라이트의 전송원으로서 할당한다고 하는 의미가 되어 입니다.

Bitmap.new 의 인수로서 지정하는 패스명은, 단락 문자에 ¥ 에서는 없게 / 를 사용하고 있기로 주의해 주세요. 캐릭터 라인의 「박스락 슈 기법」의 항으로 벌써 학습한 것처럼 ¥ 는 캐릭터 라인중에서 특별한 의미를 가지기 (위해)때문에,/ 를 사용하는 편이 실수가 없기 때문에입니다.

프롭퍼티

Sprite 클래스의 bitmap 의

화상의 표시

  • Graphics 모듈
  • 스프라이트와 비트 맵
  • 프롭퍼티

오브젝트를 이해해 보았자 조금 기분을 바꾸어, RGSS 의 게임 라이브러리를 사용해 화상을 표시해 봅시다.

Graphics 모듈

RGSS 의 게임 라이브러리 중에서 가장 중요한 것은 Graphics 모듈입니다. 이것은, 문자 그대로 게임내의 그래픽 전반을 처리 하기 위한 메소드의 모임에서, 게임 화면에 표시되는 모든 그래픽은, 이 모듈의 기능을 사용해 처리되어 있습니다.

모듈이라고 하는 것은, 같은 분야의 메소드를 모은 용기와 같은 것이라고 생각해 주세요. 클래스를 닮고 있습니다만, 모듈의 인스턴스를 생성할 수 없습니다 해, 그 필요도 없습니다.

그러면 우선, 다음과 같이 입력해 주세요.

loop do
  Graphics.update
end

loop do ? end 라고 하는 것은 엔들레스 루프를 작성하는 방법이었지요. 둘러싸였다 곳의 처리, 여기에서는 Graphics.update 라고 하는 행의 실행을 몇번이나 반복하면(자) 말하는 의미가 됩니다. 이 한가운데의 행에서는, Graphics 모듈의 update 메 솟드를 호출하고 있습니다. 이것은 오브젝트의 메소드 호출과 같은 형태 식이기 때문에 비교적 알기 쉬울 것이다.

Graphics.update 는, 게임 화면을 갱신해, 시간을 1 프레임 진행하면(자) 말하는 역할을 완수합니다. 이 타이밍에, 화면에 표시되어 있는 그래픽 하지만 일제히 써 교체된다고 합니다. 이 형태가 RGSS 에서의 게임 실행의 기본과 됩니다. RPG 라고 하는 대규모 게임을 실행하는 복잡한 스크립트도, 이 기본형태에 여러가지 처리를 첨가해 만들어지고 있습니다.

덧붙여 여기서 든 예(뿐)만으로는 아무것도 표시되지 않습니다. 새까만 화면을 몇번이나 고쳐 쓴다고 하는 처리를 반복뿐입니다. 이후로, 실제로 화상을 표시한다 방법을 배워 갑시다.

스프라이트와 비트 맵

방금전의 스크립트에 2 행 추가해, 다음과 같이 해 봅시다. 화면 좌상에 소악마의 화상이 표시되면 성공입니다.

devil = Sprite.new
devil.bitmap = Bitmap.new("Graphics/Battlers/075-Devil01")

loop do
  Graphics.update
end

Sprite 와 Bitmap 라고 하는 새로운 클래스가 나왔습니다. Sprite 는 게임 화면상에 어떠한 화상을 표시 하기 위한 기본 개념이 되는스프라이트를, Bitmap 는 스프라이트 등의 전송원이 되는비트 맵의 내용 그것을 나타내는 클래스입니다.

1 행 째로는, Sprite 클래스의 인스턴스를 새롭게 작성해, 그것을 devil 라고 하는 변수에 대입하고 있습니다. 정수나 캐릭터 라인 등의 오브젝트를 작성할 때는 3 이라든지 "Ruby" (와)과 같이 값을 직접 쓸 수가 있었습니다만, 스프라이트를 작성할 때 에는 이와 같이 Sprite.new 와 기술할 필요가 있습니다.

2 행 째로는, RGSS-RTP 에 포함되어 있는 화상 파일 ("075-Devil01")(을)를 읽어들여 Bitmap 클래스의 인스턴스를 새롭게 작성하고 있습니다. 게다가, devil 오브젝트의 bitmap 라고 한다 프롭퍼티 (후술)에 대해서 그것을 설정하고 있습니다. 이렇게 하는 것으로, 이 비트 맵을 스프라이트의 전송원으로서 할당한다고 하는 의미가 되어 입니다.

Bitmap.new 의 인수로서 지정하는 패스명은, 단락 문자에 ¥ 에서는 없게 / 를 사용하고 있기로 주의해 주세요. 캐릭터 라인의 「박스락 슈 기법」의 항으로 벌써 학습한 것처럼 ¥ 는 캐릭터 라인중에서 특별한 의미를 가지기 (위해)때문에,/ 를 사용하는 편이 실수가 없기 때문에입니다.

프롭퍼티

Sprite 클래스의 bitmap 의

화상의 표시

  • Graphics 모듈
  • 스프라이트와 비트 맵
  • 프롭퍼티

오브젝트를 이해해 보았자 조금 기분을 바꾸어, RGSS 의 게임 라이브러리를 사용해 화상을 표시해 봅시다.

Graphics 모듈

RGSS 의 게임 라이브러리 중에서 가장 중요한 것은 Graphics 모듈입니다. 이것은, 문자 그대로 게임내의 그래픽 전반을 처리 하기 위한 메소드의 모임에서, 게임 화면에 표시되는 모든 그래픽은, 이 모듈의 기능을 사용해 처리되어 있습니다.

모듈이라고 하는 것은, 같은 분야의 메소드를 모은 용기와 같은 것이라고 생각해 주세요. 클래스를 닮고 있습니다만, 모듈의 인스턴스를 생성할 수 없습니다 해, 그 필요도 없습니다.

그러면 우선, 다음과 같이 입력해 주세요.

loop do
  Graphics.update
end

loop do ? end 라고 하는 것은 엔들레스 루프를 작성하는 방법이었지요. 둘러싸였다 곳의 처리, 여기에서는 Graphics.update 라고 하는 행의 실행을 몇번이나 반복하면(자) 말하는 의미가 됩니다. 이 한가운데의 행에서는, Graphics 모듈의 update 메 솟드를 호출하고 있습니다. 이것은 오브젝트의 메소드 호출과 같은 형태 식이기 때문에 비교적 알기 쉬울 것이다.

Graphics.update 는, 게임 화면을 갱신해, 시간을 1 프레임 진행하면(자) 말하는 역할을 완수합니다. 이 타이밍에, 화면에 표시되어 있는 그래픽 하지만 일제히 써 교체된다고 합니다. 이 형태가 RGSS 에서의 게임 실행의 기본과 됩니다. RPG 라고 하는 대규모 게임을 실행하는 복잡한 스크립트도, 이 기본형태에 여러가지 처리를 첨가해 만들어지고 있습니다.

덧붙여 여기서 든 예(뿐)만으로는 아무것도 표시되지 않습니다. 새까만 화면을 몇번이나 고쳐 쓴다고 하는 처리를 반복뿐입니다. 이후로, 실제로 화상을 표시한다 방법을 배워 갑시다.

스프라이트와 비트 맵

방금전의 스크립트에 2 행 추가해, 다음과 같이 해 봅시다. 화면 좌상에 소악마의 화상이 표시되면 성공입니다.

devil = Sprite.new
devil.bitmap = Bitmap.new("Graphics/Battlers/075-Devil01")

loop do
  Graphics.update
end

Sprite 와 Bitmap 라고 하는 새로운 클래스가 나왔습니다. Sprite 는 게임 화면상에 어떠한 화상을 표시 하기 위한 기본 개념이 되는스프라이트를, Bitmap 는 스프라이트 등의 전송원이 되는비트 맵의 내용 그것을 나타내는 클래스입니다.

1 행 째로는, Sprite 클래스의 인스턴스를 새롭게 작성해, 그것을 devil 라고 하는 변수에 대입하고 있습니다. 정수나 캐릭터 라인 등의 오브젝트를 작성할 때는 3 이라든지 "Ruby" (와)과 같이 값을 직접 쓸 수가 있었습니다만, 스프라이트를 작성할 때 에는 이와 같이 Sprite.new 와 기술할 필요가 있습니다.

2 행 째로는, RGSS-RTP 에 포함되어 있는 화상 파일 ("075-Devil01")(을)를 읽어들여 Bitmap 클래스의 인스턴스를 새롭게 작성하고 있습니다. 게다가, devil 오브젝트의 bitmap 라고 한다 프롭퍼티 (후술)에 대해서 그것을 설정하고 있습니다. 이렇게 하는 것으로, 이 비트 맵을 스프라이트의 전송원으로서 할당한다고 하는 의미가 되어 입니다.

Bitmap.new 의 인수로서 지정하는 패스명은, 단락 문자에 ¥ 에서는 없게 / 를 사용하고 있기로 주의해 주세요. 캐릭터 라인의 「박스락 슈 기법」의 항으로 벌써 학습한 것처럼 ¥ 는 캐릭터 라인중에서 특별한 의미를 가지기 (위해)때문에,/ 를 사용하는 편이 실수가 없기 때문에입니다.

프롭퍼티

Sprite 클래스의 bitmap 의 같은 것을프롭퍼티라고 부릅니다. 실은 이것은 Ruby 언어 사양에 있는 개념은 아니고, RGSS 독자적인 용어입니다. 게임 라이브러리에는 대입 연산자를 사용해 내용의 설정이 할 수 있도록 정의 되어 있는 메소드가 많기 때문에, 그러한 것을 편의적이게 프롭퍼티와 부르고 있습니다. 예를 들어, 스프라이트의 좌표를 나타내는 x, y 라고 한다 프롭퍼티의 값을 변경하면(자), 이와 같이 됩니다.

devil = Sprite.new
devil.bitmap = Bitmap.new("Graphics/Battlers/075-Devil01")
devil.x = 320
devil.y = 240

loop do
  Graphics.update
end

3 행 째로는, 스프라이트의 X 좌표를 지정하는 프롭퍼티 x 에 320 이라고 하는 값을 설정하고 있습니다. 같이 4 행 째로는, 스프라이트의 Y 좌표를 지정하는 프롭퍼티 y 에 240 이라고 하는 값을 설정하고 있습니다. 이것을 실행하면(자), 스프라이트의 표시 위치가 화면 중앙 부근으로 되어 있을 것입니다.

한층 더 손봅시다.

devil = Sprite.new
devil.bitmap = Bitmap.new("Graphics/Battlers/075-Devil01")
devil.ox = devil.bitmap.width / 2
devil.oy = devil.bitmap.height / 2
devil.x = 320
devil.y = 240

loop do
  Graphics.update
end

완전하게 중앙에 표시되게 되었어요. 이것은 ox, oy 라고 한다 프롭퍼티를 설정하는 것으로, 스프라이트의원점을 변경 했기 때문에입니다. RPGXP 의 이벤트 커멘드 [픽쳐의 표시] 에서는 원점을 [좌상],[중심] 으로부터 선택할 수가 있습니다만, 그것과 같은 개념입니다. 디폴트의 상태에서는, 원점은 화상의 좌상이 되어 있습니다. 대입 연산자의 우측에서 불려 가고 있는 width, height 라고 하는 것은 Bitmap 클래스의 메소드로, 각각 화상의 폭과 높이를 취득하는 것입니다. 그것들을 2 로 나눈 값, 즉 화상의 중심을 원점으로서 설정했다고 하는 것입니다.

여기까지 오면,Sprite 클래스나 Bitmap 클래스의 설명을 읽어, 책 있고 (아)어 두는 것이 웬지 모르게 이해할 수 있는 것 같은 생각이 들어 오는 것은 아닐까요. 재미있을 것 같은 프롭퍼티나 메소드를 찾아내면(자), 스스로 자꾸자꾸 시험 성. 그것이 RGSS 습득에의 지름길입니다.


배열

  • 배열의 생성
  • 배열의 요소에의 대입
  • 배열의 조작
  • 배열에 의한 루프

복수의 오브젝트를 일괄 해 취급하고 싶을 때 사용해 하지만배열입니다.

배열의 생성

배열은 [] 이라고 하는 기호안에 요소를 늘어놓는 것으로 생성 할 수 있습니다.

a = ["아렛크스 ", "브라이언 ", "캐롤 "]

이 프로그램에서는, "아렛크스", "브라이 안", "캐롤 " 라고 하는 3 개(살)의 캐릭터 라인을 격납 한 배열을 작성해, 그것을 a 라고 하는 변수에 대입하고 있습니다.

배열안의 오브젝트를 꺼낼 때에는, 이와 같이 합니다.

a = ["아렛크스 ", "브라이언 ", "캐롤 "]

p a[0]          # => "아렛크스 "
p a[1]          # => "브라이언 "
p a[2]          # => "캐롤 "

이와 같이, a[0] 이나 a[1] 등, 각각의 요소를 별개의 변수와 같이 취급한다 일을 할 수 있습니다. 여기서 0, 1, 2 와 같은 숫자를, 배열의첨자 (첨자)(이)라고 부릅니다. 첨자는 1 에서가 아니게 0 으로부터 시작되어 있기로 주의 해 주세요. 0 으로부터 시작되어, 왼쪽에 있는 요소로부터 순서에 0, 1, 2 …와 할당해져 삽니다.

배열에는 캐릭터 라인 뿐만이 아니고, 임의의 오브젝트를 격납 할 수가 있습니다. 또, 첨자를 지정하지 않고 배열 오브젝트 그것을 p 로 표시하는 것도 가능 입니다.

a = [2000, "아렛크스 ", true, 1..50]

p a             # => [2000, "아렛크스 ", true, 1..50]

배열의 요소에의 대입

배열의 각 요소는 보통 변수와 같게 취급할 수 있기 때문에 대입으로 값을 변경하는 것도 할 수 있습니다.

a = [10, 20, 30]
a[0] = 100

p a             # => [100, 20, 30]

이 예에서는, 우선 10, 20, 30 이라고 하는 3 개(살)의 수치를 격납 한 배열을 작성해, 최초의 요소에 후부터 100 을 대입하고 있습니다. 이 때 a[0] 에는 10 이라고 한다 수치가 격납 되어 있습니다만, 대입에 의해 100 으로 바꾸어 넣을 수 있기 (위해)때문에, 출력 결과와 같이 되는 것입니다. 이 행위 있고는 보통 변수와 같네요.

최초로 작성한 배열의 범위외의 첨자를 지정해 대입하면(자), 자동적으로 배열이 확장됩니다.

a = [10, 20, 30]
a[3] = 40

p a             # => [10, 20, 30, 40]

배열이 작성된 시점에서는 요소는 3 개(살)이었지만, a[3] 이라고 하는 범위외의 요소 에 대해서 대입을 했기 때문에, 자동적으로 요소 4 개(살)의 배열이 되었습니다. C 언어 등에서는 이러한 대입은 용서되고 있지 않습니다만, Ruby 는 유연한 언어이므로 안심 입니다.

범위를 날려 보면(자) 어떻게 되는 것일까요?

a = [10, 20, 30]
a[5] = 60

p a             # => [10, 20, 30, nil, nil, 60]

nil 라고 하는 값이 나타났습니다. 이것은 true 나 false 등이라고 같은의사 변수의 일종으로, 의미는 「아무것도 없다」라고 하는 것입니다. true 가 「진」, false 가 「가짜」를 나타내는 것과 똑같이, nil 는 「무」를 나타냅니다.

배열의 조작

배열은 Array 클래스의 인스턴스입니다. 이 클래스로 정의 되어 있는 메소드를 호출한다 것에 의해 데이터의 조작을 할 수가 있습니다.

예를 들어, 배열의 요소수를 알고 싶은 경우는 size 라고 하는 메소드를 사용합니다. String 클래스의 size 메소드는 캐릭터 라인의 바이트수를 돌려준다 것이었지만, Array 클래스의 size 메소드는 배열의 요소수를 돌려줍니다. 배열이 하늘 때는 0 을 돌려줍니다.

a = ["아렛크스 ", "브라이언 ", "캐롤 "]

p a.size        # => 3

배열안에 특정의 값이 포함되어 있을지 어떨지 알고 싶은 경우는, include? (이)라고 하는 메소드를 사용합니다.

a = ["아렛크스 ", "브라이언 ", "캐롤 "]

p a.include? ("브라이언 ")      # => true
p a.include? ("데이지 ")        # => false

3 행 째로는 include? 메소드를 사용해, 배열에 "브라이언 " 라고 하는 값이 포함되어 있을지 어떨지를 확인해 있습니다. 이 경우, 1 행 째의 배열의 생성으로 "브라이언 " 와 말하는 값이 설정되어 있기 때문에, true (진)와 출력 됩니다. 같이 4 행 째로는 "데이지 " 라고 하는 값이 포함되어 있을까 제발(아무쪼록)을 확인하고 있습니다. 그러한 값은 존재하지 않으므로, false (가짜) (와)과 출력 됩니다.

배열에 의한 루프

for 루프에는 범위 오브젝트 뿐만이 아니고, 배열을 지정한다 일도 할 수 있습니다.

a = ["아렛크스 ", "브라이언 ", "캐롤 "]

for s in a
  p s
end

여기에서는 변수 s 를 이용해, 배열 a 에 격납 되어 있는 요소를 루프 시키면서 출력 시키고 있습니다. 루프 시키는 범위가 a 에 격납 되어 있는 요소야 (으)로, "아렛크스", "브라이언", "캐롤 " (이)라고 하는 순으로 메시지 박스에 표시되어 거기서 루프 종료가 됩니다.


해시

  • 해시의 생성
  • 해시에의 값의 추가
  • 해시의 조작
  • 해시에 의한 루프

배열과 자주(잘) 닮은 데이터 구조에해시라는 것이 있습니다.

해시의 생성

해시는 연상 배열이라고도 불립니다. 배열과의 차이는, 값을 꺼내기 (위해)때문에 의키 (배열의 첨자에 상당하는 것)로서 임의의 오브젝트를 사용 할 수 있는 것입니다. 해시는 {} 이라고 하는 기호안에 요소를 늘어놓는 것으로 생성 할 수 있습니다.

a = {"아렛크스 "=>2000, "등산용 륙색 "=>2003}

이 예에서는, "아렛크스 " 와 "등산용 륙색 " 가 값을 꺼낸다 모아 두고의 키로, 2000 과 2003 이 실제의 값입니다. 이와 같이, 해시를 직접 생성 할 경우에는 => 라고 하는 기호를 사용해 키와 값을 늘어놓습니다.

해시안의 오브젝트를 꺼낼 때에는, 이와 같이 합니다.

a = {"아렛크스 "=>2000, "등산용 륙색 "=>2003}

p a["아렛크스 "]        # => 2000
p a["등산용 륙색 "]            # => 2003
p a["우사응"]        # => nil

마지막 예로부터 알도록(듯이), 존재하지 않는 키를 지정할 경우는 nil 가 돌아가 .

여기에서는 캐릭터 라인을 키라고 했습니다만, 물론 캐릭터 라인이 아니어도 상관하지 않습니다. 키로서 정수 밖에 사용하지 않는 데이터에서도, 그 번호가 날아 나는 일이 되는 것 같은 경우에는 배열보다 해시를 사용하는 편이 편리한 (일)것이 있습니다.

덧붙여 해시의 역당겨, 즉 「값에 대응하는 키를 조사한다」경우에는 [] 의 안에 값을 써 키를 꺼낼 수 없습니다. 여기에서는 해설하지 않습니다 하지만, 그러한 조작을 하기 위한 메소드는 별로 준비되어 있습니다.

해시에의 값의 추가

실제로는, 해시는 프로그램중에서 직접 데이터를 지정해 생성하는 것보다도, 우선 하늘의 해시를 만들어 두어 데이터를 추가 해 나가는 것 쪽이 많을지도 알려지지 않습니다. 하늘의 해시를 생성할 때는, 단지 {} 와 책 부서지고입니다.

a = {}

배열의 요소에 대입하는 것과 완전히 똑같이, 해시에 값을 추가하는 것이 할 수 있습니다.

a = {}
a["아렛크스 "] = 2000

p a                 # => {"아렛크스 "=>2000}

해시의 조작

해시는 Hash 클래스의 오브젝트입니다. 배열과 똑같이, 이 클래스로 정의 되어 있다 메소드를 호출하는 것에 따라 데이터의 조작을 할 수가 있습니다.

예를 들어, 해시로부터 값을 삭제하는 경우는 delete 라고 하는 메소드 (을)를 사용합니다.

a = {"아렛크스 "=>2000, "등산용 륙색 "=>2003}
a.delete("등산용 륙색 ")

p a                 # => {"아렛크스 "=>2000}

해시가 특정의 키를 가지고 있을지 어떨지 알고 싶은 경우는, include? (이)라고 하는 메소드를 사용합니다.

a = {"아렛크스 "=>2000, "등산용 륙색 "=>2003}

p a.include? ("아렛크스 ")    # => true
p a.include? ("우사응")    # => false

3 행 째로는 include? 메소드를 사용해, 해시에 "아렛크스 " 라고 하는 키가 포함되어 있을지 어떨지를 확인해 있습니다. 이 경우, 1 행 째의 해시의 생성으로 "아렛크스 " 와 말하는 키가 설정되어 있기 때문에, true (진)와 출력 됩니다. 같이 4 행 째로는 "우사응" 라고 하는 키가 포함되어 있을까 제발(아무쪼록)을 확인하고 있습니다. 그러한 키는 존재하지 않으므로, false (가짜) (와)과 출력 됩니다.

해시에 의한 루프

Hash 클래스에는, 키의 일람을 배열로서 취득하는 keys 라고 한다 메소드가 있습니다.

a = {3=>6, 4=>10, 5=>15}
p a.keys            # => [5, 3, 4]

이와 같이, => 의 좌측에 있는 키의 일람이 배열로서 출력 됩니다. 해시에는 순서가 없기 때문에, 순서는 부정입니다.

전장에서는, 배열을 for 루프 로 지정하는 방법에 대해서 학습했습니다. 그것을 응용하면(자), keys 메소드의 반환값을 for 루프 로 지정하면 해시의 키에 의한 루프를 만들 수 있는 것을 알네요.

a = {3=>6, 4=>10, 5=>15}

for k in a.keys
  p k
end

이것을 실행하면(자) 3, 4, 5 가 무순서로 표시됩니다.

또, values 라고 하는 메소드를 사용하면, 값 쪽의 일람을 배열과 해 취득할 수 있습니다.

a = {3=>6, 4=>10, 5=>15}

for v in a.values
  p v
end

이것을 실행하면(자) 6, 10, 15 가 무순서로 표시됩니다.


클래스 정의

  • 클래스의 정의
  • 메소드의 정의
  • 오브젝트 초기화
  • 메소드의 오버라이드(override)

기초편의 마지막에, 새로운 클래스를 정의 하는 방법에 대해서 해설합니다.

클래스의 정의

지금까지 String 클래스나 Array 클래스, 혹은 Sprite 클래스 등, 미리 시스템에 짜넣어진 클래스를 이용하는 방법에 대해서 학습해 왔습니다. 실은 클래스는 사용할 뿐만 아니라, 독자적으로 정의 하는 것도 할 수 있습니다. (이)라고 하는 것보다, 「클래스를 만드는 것」이 「프로그래밍」이라고 거의 동의 (이)라고 말해도 과언이 아닙니다. 실은 pre-set의 스크립트는, 마지막 Main 라고 하는 섹션을 제외해 모든 것이 클래스 정의인 것입니다.

예를 들어 Person 라고 하는 클래스를 정의 하기에는 다음과 같이 합니다.

class Person
end

클래스 정의의 외측선은 끊은 이것만입니다. 이것은 「아무것도 하지 않는 클래스」입니다만, 벌써 이 단계에서,

alex = Person.new

(와)과 같이, Person 클래스의 인스턴스를 만들 수가 있습니다.

계승의 지정도 간단합니다. 예를 들어, Monkey 라고 하는 클래스를 계승해 Person 라고 하는 클래스를 정의 할 경우에는 다음과 같이 합니다.

class Person < Monkey
end

메소드의 정의

메소드의 정의 방법은, 보통 함수의 경우와 같습니다. 클래스 정의안에 def ? end 를 쓰면, 그것이 자동적으로 그 클래스의 메소드가 됩니다.

class Person
  def hello
    print "안녕하세요 "
  end
end

여기에서는, 본 거리 "안녕하세요 " 라고 하는 캐릭터 라인을 표시할 뿐(만큼)의 hello 메소드를 정의 하고 있습니다. 이 정의의 뒤,

alex = Person.new
alex.hello                  # => 안녕하세요

이와 같이 hello 메소드를 호출할 수가 있는 것입니다.

인스턴스 변수

개개의 오브젝트에 속하는 변수의 (일)것을인스턴스 변수라고 부릅니다. @ (이)라고 하는 문자로 시작되는 이름의 변수를 사용하면(자), 자동적으로 인스턴스 변수로서 다루어집니다. 로컬 변수는 def ? end 등의 블록내밖에 유효하게 되지 않습니다만, 인스턴스 변수를 사용하면, 그 오브젝트가 존재하는 한, 값이 보존 됩니다.

class Person
  def name
    return @name
  end
  def name=(name)
    @name = name
  end
  def hello
    print "나는 " + @name + "다 "
  end
end

alex = Person.new
alex.name = "아렛크스 "
alex.hello                  # => 나는 아렛크스다

이 예에서는 @name 라고 하는 인스턴스 변수를 준비해, name, name= 라고 한다 메소드를 사용해 오브젝트의 밖으로부터 액세스 할 수 있도록 하고 있습니다. 이러한 메소드를아크세사이라고 부르는. 아크세사는, 좀 더 간단하게 다음과 같이 쓰는 것도 할 수 있습니다.

  attr_accessor :name

이와 같이 쓰는 것으로,: 의 우측으로 쓴 이름과 동명의 인스턴스 변수 에 대해서 read 및 기입을 할 수 있는 메소드가 자동적으로 정의 됩니다. 여기에서는 @name 라고 하는 인스턴스 변수에 액세스 할 수 있는 메소드라고 한다 됩니다. 즉,

  def name
    return @name
  end
  def name=(name)
    @name = name
  end

(와)과 같은 의미가 됩니다.

pre-set의 스크립트에서는 이 attr_accessor 가 다용 되어 있습니다. 취득 (read)의 메소드만을 정의 하는 경우는, attr_accessor 의 대신에 attr_reader 를 사용합니다.

오브젝트 초기화

오브젝트가 작성되었을 때에, 인스턴스 변수 등을 특정의 값에 초기화하고 싶은 (일)것이 있습니다. initialize 라는 이름의 메소드를 정의 해 두면(자), new 로 생성되었을 때에 자동적으로 불려 갑니다.

class Person
  def initialize
    @name = "무명씨"
  end
end

2 행 째부터 시작되는 initialize 메소드의 정의에서는, 인스턴스 변수 @name 의 초기값으로서 "무명씨" 라고 하는 캐릭터 라인이 대입되어 있습니다. 이와 같이 하는 것으로, 새로운 Person 오브젝트가 생성되었다 때, 인스턴스 변수를 자동적으로 초기화 할 수 있는 것입니다.

initialize 메소드에 가인수를 설정할 경우, new 가 그 인수를 취한다 같게 됩니다.

class Person
  def initialize(name)
    @name = name
  end
end

alex = Person.new("아렛크스 ")

위의 예에서는 initialize 메소드에 name 라고 하는 가인수가 설정되어 있어 그것을 인스턴스 변수 @name 의 초기값으로서 사용 하도록 되어 있습니다. 인수 name 는 실제로는 Person 클래스의 new 로 건네주게 됩니다. 마지막 행으로 Person 오브젝트를 생성할 때에 "아렛크스 " 라고 하는 인수가 지정 되어 있기 때문에, @name 의 값도 "아렛크스 " 에 설정됩니다.

메소드의 오버라이드(override)

슈퍼 클래스로 정의 되어 있는 것과 동명의 메소드를 서브 클래스로 재정의 하는 것을오버라이드(override)라고 부릅니다. 서브 클래스의 메소드로부터, 슈퍼 클래스의 같은 메소드를 호출한다 경우는 super 라고 하는 키워드를 사용합니다.

class Hahaha
  def laugh(x)
    return "는 " * x
  end
end

class Wahaha < Hahaha
  def laugh(x)
    return "와" + super
  end
end

man = Wahaha.new
p man.laugh(4)      # => "와는 하하하 "

이 예에서는, Wahaha 클래스의 laugh 메소드가 우선 불려 가 그 안으로부터 super 에 의해 Hahaha 클래스의 laugh 메소드가 불려 갑니다. 그 결과, 마지막 행의 laugh 메소드 호출은 "와" + "는 " * 4 와 해석 되어"와는 하하하 " 가 출력 됩니다.


해독편

  • 데이타베이스
  • 게임 오브젝트
  • 스프라이트의 관리
  • 윈도우의 관리
  • interpreter
  • 장면 클래스


데이타베이스

  • $data_xxxx
  • 데이타베이스의 내용
  • 데이타베이스에의 액세스

해독편에서는, pre-set의 스크립트가 무엇을 하고 있는 것인가 읽어 푼다 모아 두고의 힌트를 제공해 갈 것입니다.

여기에서는, RPGXP 의데이타베이스가 스크립트내에서 어떻게 다루어지고 있을까를 해설합니다.

$data_xxxx

스크립트 에디터 좌측의 리스트로부터, Scene_Title 라는 이름의 섹션을 찾아 주세요. 이 섹션이 시작하고 쪽에, 다음과 같은 부분을 찾아낼 수가 있겠지요. 이것은, 타이틀 화면이 표시된다 직전의 타이밍에 실행되는 스크립트입니다.

    # 데이타베이스를 로드
    $data_actors        = load_data("Data/Actors.rxdata")
    $data_classes       = load_data("Data/Classes.rxdata")
    $data_skills        = load_data("Data/Skills.rxdata")
    $data_items         = load_data("Data/Items.rxdata")
    $data_weapons       = load_data("Data/Weapons.rxdata")
    $data_armors        = load_data("Data/Armors.rxdata")
    $data_enemies       = load_data("Data/Enemies.rxdata")
    $data_troops        = load_data("Data/Troops.rxdata")
    $data_states        = load_data("Data/States.rxdata")
    $data_animations    = load_data("Data/Animations.rxdata")
    $data_tilesets      = load_data("Data/Tilesets.rxdata")
    $data_common_events = load_data("Data/CommonEvents.rxdata")
    $data_system        = load_data("Data/System.rxdata")

코멘트에 쓰여져 있는 거리, 여기에서는 트크르? 꼬아 보존되었다 파일로부터 데이타베이스의 정보를 읽어들여, 각종 데이터를 스크립트 (으)로부터 참조 할 수 있도록 하고 있습니다. $ (이)라고 하는 문자로 시작되는 변수 (은)는글로벌 변수이기 때문에, 이러한 데이터는 향후, 스크립트의 어디에서라도 참조 할 수 있다고 하는 것을 압니다.

load_data 라고 하는 것은 RGSS 편입 함수의 하나로, 지정된 파일로부터 데이터를 읽어 붐비는 함수입니다. 예를 들어 최초의 행은, Data 폴더내의 Actors.rxdata (이)라고 하는 파일로부터 읽어들인 데이터를 $data_actors 라고 하는 변수에 대입 한다고 하는 의미가 됩니다.

데이타베이스의 내용

각 오브젝트는 다음의 겉과 같이 되어 있습니다.

변수명 | 내용 | 클래스
$data_actors | 엑터 | RPG::Actor 의 배열
$data_classes | 클래스 | RPG::Class 의 배열
$data_skills | 기술 | RPG::Skill 의 배열
$data_items | 아이템 | RPG::Item 의 배열
$data_weapons | 무기 | RPG::Weapon 의 배열
$data_armors | 방어용 기구 | RPG::Armor 의 배열
$data_enemies | 에너지 미 | RPG::Enemy 의 배열
$data_troops | 무리 | RPG::Troop 의 배열
$data_states | 스테이트 | RPG::State 의 배열
$data_animations | 애니메이션 | RPG::Animation 의 배열
$data_tilesets | 타일 세트 | RPG::Tileset 의 배열
$data_common_events | common 이벤트 | RPG::CommonEvent 의 배열
$data_system | 시스템 | RPG::System

엑터로부터 common 이벤트까지의 12 종의 데이터는, 데이타베이스로 표시되는 번호에 대응한 배열이 되어 있습니다. 다만 RPGXP 에서는 데이터 ID 가 1 번으로부터 시작되기 때문에, 데이터 ID 와 배열의 첨자를 가지런히 하기 위해서(때문에), 배열의 최초 (0 번째 )의 요소는 nil 가 되어 있습니다.

데이타베이스에의 액세스

예를 들어, 다음의 스크립트는 엑터 1 번의 이름을 나타냅니다.

$data_actors[1]. name

다음의 스크립트는 에너지 미 2 번의 MaxHP 를 나타냅니다.

$data_enemies[2]. maxhp

다음의 스크립트는 아이템 3 번에 지정되어 있는 아이콘의 파일명을 나타냅니다.

$data_items[3]. icon_name

다음의 스크립트는 스윗치 4 번의 이름을 나타냅니다.

$data_system.switches[4]

이 요령으로, 참조하고 싶은 데이터의 속성 (변수) 명을 레퍼런스로 조사해 주세요. p 함수로 표시해 실험하고 싶은 경우는, 이벤트 커멘드의 [스크 리프트] 로부터 실행해 보는 것이 좋을 것이다.


게임 오브젝트

  • $game_xxxx
  • 게임 오브젝트의 내용
  • 그 외의 관련 클래스

데이타베이스는, 원칙으로서 게임중에 써 교체되는 것이 없다 불변의 데이터입니다. 그것에 대해, 예를 들어 맵 화면상을 돌아다닌다 캐릭터 등, 그 상태가 시시각각 변해가는 것 같은 데이터를 취급하는 것이게임 오브젝트입니다.

$game_xxxx

Scene_Title 섹션안 정도, command_new_game 라고 하는 메소드의 안에 다음과 같은 부분이 있습니다. 이것은, 타이틀 화면에서 [뉴 게임] 하지만 선택되었을 때에 실행되는 스크립트입니다.

    # 각종 게임 오브젝트를 작성
    $game_temp          = Game_Temp.new
    $game_system        = Game_System.new
    $game_switches      = Game_Switches.new
    $game_variables     = Game_Variables.new
    $game_self_switches = Game_SelfSwitches.new
    $game_screen        = Game_Screen.new
    $game_actors        = Game_Actors.new
    $game_party         = Game_Party.new
    $game_troop         = Game_Troop.new
    $game_map           = Game_Map.new
    $game_player        = Game_Player.new

데이타베이스의 $data_xxxx 계와 똑같이, 이것들도 또글로벌 변수입니다. Game_Xxxx 라는 이름의 클래스의 인스턴스를 작성해, 이러한 변수로 참조 할 수 있도록 해 있습니다. 이 Game_Xxxx 라는 이름에는 본 기억이 있네요. 스크립트 에디터로, 위 쪽의 섹션에 이러한 이름이 붙어 있습니다. 즉, 이러한 섹션으로 정의 된 클래스를, 여기서 실체화해 있다는 것입니다.

게임 오브젝트의 내용

각 오브젝트는 다음의 겉과 같이 되어 있습니다. 데이타베이스의 경우와 달라, 이러한 오브젝트가 소속하는 클래스는 RGSS 에 미리 짜 붐비어지고 있는 것은 아니고, 스크립트 에디터 중(안)에서 정의 되어 있습니다.

변수명 | 내용 | 클래스
$game_temp | 한때 데이터 | Game_Temp
$game_system | 시스템 데이터 | Game_System
$game_switches | 스윗치 | Game_Switches
$game_variables | 변수 | Game_Variables
$game_self_switches | 셀프 스윗치 | Game_SelfSwitches
$game_screen | 화면 효과 | Game_Screen
$game_actors | 엑터 리스트 | Game_Actors
$game_party | 파티 | Game_Party
$game_troop | 무리 | Game_Troop
$game_map | 맵 | Game_Map
$game_player | 플레이어 | Game_Player

이러한 클래스는 원칙으로서 데이터 구조를 제공하는 것만으로, 그래픽을 표시하거나 버튼 입력을 받아들이거나 하는 기능은 가지고 있지 않습니다. 다만 Game_Player 클래스만은 편의상, 방향 버튼에 의한 이동이나 결정 버튼 에 의한 이벤트 기동 등의 처리를 포함하고 있습니다.

그 외의 관련 클래스

글로벌 변수로부터 직접 액세스 할 수 있는 게임 오브젝트는 전술의 것 뿐입니다만, 실은 이러한 오브젝트의 내부에, 한층 더 다른 클래스의 오브 젝트가 포함되어 있습니다. 그것들을 이하의 오모테에 나타냅니다.

클래스 | 내용 | 설명
Game_Picture | 픽쳐 | Game_Screen 의 내부에서 사용
Game_Actor | 엑터 | Game_Actors 의 내부에서 사용
Game_Enemy | 에너지 미 | Game_Troop 의 내부에서 사용
Game_CommonEvent | common 이벤트 | Game_Map 의 내부에서 사용
Game_Event | 맵 이벤트 | Game_Map 의 내부에서 사용

게다가 중요한 클래스로서 다음의 둘이 있습니다. 이 둘은 스크립트의 분량이 매우 많기 때문에, 복수의 섹션에 분할해 정의 되어 있습니다.

클래스 | 내용 | 설명
Game_Battler | butler | Game_Actor, Game_Enemy 의 슈퍼 클래스
Game_Character | 캐릭터 | Game_Player, Game_Event 의 슈퍼 클래스

슈퍼 클래스라고 하는 것은, 클래스를계승하신다 옆의 (일)것이었습니다. 엑터와 에너지 미, 플레이어와 이벤트에는 각각 공통의 성질이 있기 때문에 그 공통 부분을 하나의 클래스에 정리하고 있다 (이)라고 하는 것입니다.

마지막에 하나만 남은 Game_Xxxx 계 클래스를 나타냅니다.

클래스 | 내용 | 설명
Game_BattleAction | 액션 | Game_Battler 의 내부에서 사용

이것은 전투중의 행동 (액션)을 맡는 클래스로, butler의 내부 처리용으로 사용되고 있습니다.

이 「스크립트 입문」은 pre-set의 스크립트의 대범한 전체상을 파악하는 것이 목적이므로, 이 아키라로 다룬 클래스의 내용을 개개에 해설한다 일까지는 할 수 없지 않습니다. 그러나, 실제로 스크립트의 개조에 도전할 때에는, 이것들이 어떠한 정의로 되어 있을까라고 하는 것은 매우 중요하게 됩니다. 코멘트도 좀많게 붙일 수 있고 있기 때문에 최초 중은 자주(잘) 몰라도, 흥미가 있는 곳(중)을 바라보는 것을 권유합니다.


스프라이트의 관리

  • 스프라이트
  • 스프라이트 세트
  • Spriteset_Map
  • Spriteset_Battle

게임 오브젝트 그것은, 화면에 표시 하기 위한 메소드 등 (은)는 무엇 하나 가지고 있지 않습니다. 게임 오브젝트의 내용을 반영해, 화면에 그래픽으로서 표시 하기 위한 클래스가 필요합니다.

스프라이트

스크립트 에디터 좌측의 리스트에 있는 섹션 중(안)에서, Game_Xxxx 의 역할은 벌써 해설했습니다. 다음에 눈에 붙는 것은 Sprite_Xxxx 라는 이름 의 섹션이겠지요. 이것들은 그대로 클래스명이 되어 있습니다.

클래스 | 내용 | 슈퍼 클래스
Sprite_Character | 캐릭터 표시용 | RPG::Sprite
Sprite_Battler | butler 표시용 | RPG::Sprite
Sprite_Picture | 픽쳐 표시용 | Sprite
Sprite_Timer | 타이머 표시용 | Sprite

이러한 클래스는, 기초편으로 학습했다 Sprite 클래스, 또는 그 고기능 버젼인 RPG::Sprite 클래스를 계승해, 각 화상의 스프라이트를 실제로 표시 시키는 기능을 가지고 있고 .

각 스프라이트 클래스의 인스턴스는, 대응하는 게임 오브젝트를 상시 감시 하고 있어, 그 상태가 변화했을 때, 그것을 자동적으로 화면에 반영 시키게 되어 있습니다. 예를 들어 Sprite_Character 는 캐릭터 표시용의 스프라이트이기 때문에 Game_Character 로부터 계승된 클래스의 인스턴스를 감시하고 있습니다. 캐릭터가 맵상에서 조금이라도 움직이면, 그 움직임을 즉석에서 스프라이트에 반영 할 수 있는 것입니다. 실제로는, 이 「반영」 의 처리는 update 라는 이름의 메소드가 불려 간 시점으로 행해지고 있습니다. 이 메소드를 호출하고 있는 것은, 다음에 해설하는스프라이트 세트입니다.

스프라이트 세트

스프라이트 세트에는 다음의 두 클래스가 있습니다.

클래스 | 내용
Spriteset_Map | 맵 화면 표시용
Spriteset_Battle | 배틀 화면 표시용

이러한 클래스는, 각각의 화면을 구성하는 거의 모든 화상 (윈도우와 아로카솔 이외)(을)를 일원적으로 관리하고 있습니다. 전항에서 해설한 스프라이트 클래스는 물론, 맵 그것이나 기후 효과 등, 모든 그래픽 오브젝트가 모아져 update 라고 한다 이름의 메소드를 호출하는 것만으로, 모든 그래픽이 게임의 상황 에 맞추어 갱신되게 되어 있습니다.

스프라이트 세트의 update 메소드를 호출하고 있는 것은, 후의 장으로 해설하는장면 클래스입니다.

이러한 클래스에서는,뷰포트이나 스프라이트의 Z 좌표라고 하는 개념이 중요한 역할을 과 하고 있습니다. 이것들은 각 화상을 표시하는 우선 순위에 관계하는 것입니다. Viewport 클래스의 해설도 아울러 참조해 주세요.

Spriteset_Map

맵 화면의 스프라이트 세트는 다음과 같은 구성에 되어 있습니다 (숫자는 Z 좌표) .

@viewport3 (5000) | - | 화면의 플래시
@timer_sprite (500) | - | 타이머
@viewport2 (200) | @picture_sprites (1..50) | 픽쳐
@viewport1 (0) | @fog (3000) | fog
 | @weather (1000) | 기후
 | @character_sprites (0..800) | 캐릭터
 | @tilemap (0..800) | 맵
 | @panorama (-1000) | 파노라마

Spriteset_Battle

배틀 화면의 스프라이트 세트는 다음과 같은 구성에 되어 있습니다 (숫자는 Z 좌표) .

@viewport4 (5000) | - | 화면의 플래시
@timer_sprite (500) | - | 타이머
@viewport3 (200) | @picture_sprites (51..100) | 픽쳐
@viewport2 (101) | @actor_sprites (1..4) | butler (엑터)
@viewport1 (0) | @weather (1000) | 기후
 | @enemy_sprites (1..320) | butler (에너지 미)
 | @battleback_sprite (0) | 배틀 백


윈도우의 관리

  • 윈도우의 기본
  • 윈도우의 응용
  • 아로카솔

메세지 윈도우나 현상 윈도우를 시작으로 해, RPG 에서는 매우 많은 윈도우를 취급하지 않으면 안됩니다. 이러한 윈도우가 어떻게 관리되어 있는 것인가를 해설합니다.

윈도우의 기본

Window_Xxxx 라는 이름을 붙일 수 있던 섹션이 대량으로 있네요. 예에 의해 이것들은 그대로 클래스명에 대응하고 있습니다. 그 중에서도 특히 중요한 것은, 최초의 두 클래스입니다.

클래스 | 내용 | 슈퍼 클래스
Window_Base | 기본 윈도우 | Window
Window_Selectable | 항목의 선택을 할 수 있는 윈도우 | Window_Base

우선, RGSS 에는 Window 라고 한다 클래스가 짜넣어지고 있는 것을 알아 둘 필요가 있습니다. 이 클래스는 기초 편에서는 채택하지 않았습니다가, 윈도우의 테두리나 배경의 묘화, 내용의 스크로 르라고 하는 비교적저레벨인 처리를 맡는 클래스입니다.

Window_Base 클래스는 이 Window 클래스를 계승해, RPG 의 윈도우에 필요한 기본 기능을 추가하고 있습니다. 이 클래스의 가장 중요한 기능은, 현재 윈도우 스킨으로서 설정되어 있는 화상 파일을 자동적으로 읽어들이는 기능입니다. 또, 각종 문자색도 이 클래스로 정의 되어 있습니다.

Window_Selectable 클래스는, Window_Base 클래스를 계승해, 방향 버튼 등의 입력을 검지해 커서를 이동 시키는 처리를 추가한 것입니다. 예를 들어 아이템의 선택 등, 게임에는 무엇인가를 선택하는 윈도우가 빈번하게 필요하게 됩니다. 그러한 윈도우에 공통의 기능을, 이 클래스로 정의 하고 있다 의입니다. 실제의 커서 이동 처리는, update 라는 이름의 메소드가 불러 출함 시점에서 행해지고 있습니다.

윈도우의 update 메소드를 호출하고 있는 것은, 후의 장으로 해설 하는장면 클래스입니다.

윈도우의 응용

나머지의 윈도우계의 클래스를 단번에 소개합니다. 이러한 클래스는, 모두 Window_Base 클래스 또는 Window_Selectable 클래스로부터 계승 되어 있습니다.

클래스 | 내용 | 슈퍼 클래스
Window_Command | 커멘드 윈도우 (범용) | Window_Selectable
Window_Help | 헬프 윈도우 | Window_Base
Window_Gold | 소지금 표시 윈도우 | Window_Base
Window_PlayTime | 메뉴 화면용 플레이 시간 윈도우 | Window_Base
Window_Steps | 메뉴 화면용 보수 윈도우 | Window_Base
Window_MenuStatus | 메뉴 화면용 현상 윈도우 | Window_Selectable
Window_Item | 아이템 선택 윈도우 | Window_Selectable
Window_Skill | 기술 선택 윈도우 | Window_Selectable
Window_SkillStatus | 기술 화면용 현상 윈도우 | Window_Base
Window_Target | 아이템, 기술 화면용 대상 선택 윈도우 | Window_Selectable
Window_EquipLeft | 장비 화면용 왼쪽의 윈도우 | Window_Base
Window_EquipRight | 장비 화면용 오른(쪽) 윈도우 | Window_Selectable
Window_EquipItem | 장비 화면용 아이템 윈도우 | Window_Selectable
Window_Status | 현상 화면용 현상 윈도우 | Window_Base
Window_SaveFile | 세이브, 로드 화면용 파일 윈도우 | Window_Base
Window_ShopCommand | 숍 화면용 용건 선택 윈도우 | Window_Selectable
Window_ShopBuy | 숍 화면용 구입 윈도우 | Window_Selectable
Window_ShopSell | 숍 화면용 매각 윈도우 | Window_Selectable
Window_ShopNumber | 숍 화면용 개수 입력 윈도우 | Window_Base
Window_ShopStatus | 숍 화면용 현상 윈도우 | Window_Base
Window_NameEdit | 이름 입력 화면용 이름 윈도우 | Window_Base
Window_NameInput | 이름 입력 화면용 문자 선택 윈도우 | Window_Base
Window_InputNumber | 수치 입력 윈도우 | Window_Base
Window_Message | 메세지 윈도우 | Window_Selectable
Window_PartyCommand | 배틀 화면용 파티 커멘드 윈도우 | Window_Selectable
Window_BattleStatus | 배틀 화면용 현상 윈도우 | Window_Base
Window_BattleResult | 배틀 화면용 결과 표시 윈도우 | Window_Base
Window_DebugLeft | 디버그 화면용 왼쪽의 윈도우 | Window_Selectable
Window_DebugRight | 디버그 화면용 오른(쪽) 윈도우 | Window_Selectable

아로카솔

아로카솔이라는 것은, 배틀 화면에서 행동 대상으로서 엑터나 에너지 미를 선택 할 경우에 사용하는 커서의 (일)것입니다. 이것은 성질적으로는 윈도우에 가깝기 때문에, 편의상 여기서 채택해 둡니다.

클래스 | 내용 | 슈퍼 클래스
Arrow_Base | 아로카솔 | Sprite
Arrow_Enemy | 에너지 미 선택용 아로카솔 | Arrow_Base
Arrow_Actor | 엑터 선택용 아로카솔 | Arrow_Base

Arrow_Base 클래스에는, 커서 화상의 점멸 등의 기본적인 처리가 함 있습니다. Arrow_Enemy, Arrow_Actor 클래스는 각각 $game_troop 나 $game_party 등의 게임 오브젝트를 참조해, 방향 버튼의 좌우 입력에 따라 butler를 선택하는 처리를 실장하고 있습니다. 윈도우와 같이, 점멸이나 커서 이동의 처리는 update 라는 이름의 메소드가 불려 갔다 시점에서 행해지고 있습니다.


interpreter

  • Interpreter 클래스
  • 이벤트 코드

RPGXP 의이벤트 커멘드가 스크립트내에서 어떻게 다루어지고 있을까를 해설합니다.

Interpreter 클래스

이벤트 커멘드에는 [문장의 표시] 나 [장소 이동] 이라고 하는 바리에이 숀 풍부한 명령이 있어, 그것들을 편성하는 것으로 게임의 진행을 제어 할 수 있도록 설계되어 있습니다. 그러나, 그렇게 말한 이벤트 커멘드의 리스트도, 스크립트내에서는 RPG::EventCommand 클래스 의 인스턴스를 격납 한 배열에 지나지 않습니다. 이 이벤트 커멘드의 데이터를 해석해, 실행하는 역할을 맡는 것이interpreter입니다.

스크립트 좌측의 리스트에는 Interpreter 1? 7 이라는 이름이 붙었다 섹션이 있습니다만, 이것은 Interpreter 라고 하는 하나의 거대한 클래스를 분할 정의 자제뿐입니다. 이것은 pre-set의 스크립트로 정의 되어 있으면서 무엇보다 대규모 클래스입니다.

이 클래스의 인스턴스는, 다음의 3 개(살)의 클래스가 보관 유지합니다.

  • Game_System
  • Game_Event
  • Game_CommonEvent

이와 같이 게임 오브젝트의 내부에서만 사용되는 것을 생각하면(자), interpreter도 광의에는 게임 오브젝트의 일종이다고 말할 수 있습니다.

개개의 이벤트나 common 이벤트가 interpreter를 가질 필요가 있어 (은)는parallel processing를 실현 하기 위한(해)입니다. 통상의 (병렬이 아니다) 이벤트 실행 루틴, 즉 메인의 interpreter은 Game_System 클래스에 포함되어 있습니다.

이벤트 코드

각 이벤트 커멘드에는 이하의 겉과 같은 코드를 할당할 수 있고 있습니다. Interpreter 클래스는 이러한 코드에 의해 이벤트 커멘드를 판별해, 각각의 처리를 하는 메소드를 호출하고 있습니다.

101: 문장의 표시
102: 선택지의 표시
103: 수치 입력의 처리
104: 문장 옵션 변경
105: 버튼 입력의 처리
106: 웨이트
108: 주석
111: 조건 분기
112: 루프
113: 루프의 중단
115: 이벤트 처리의 중단
116: 이벤트의 한때 소거
117: common 이벤트
118: 라벨
119: 라벨 점프
121: 스윗치의 조작
122: 변수의 조작
123: 셀프 스윗치의 조작
124: 타이머의 조작
125: 골드의 증감
126: 아이템의 증감
127: 무기의 증감
128: 방어용 기구의 증감
129: 엑터의 교체
131: 윈도우 스킨의 변경
132: 배틀 BGM 의 변경
133: 배틀 종료 ME 의 변경
134: 세이브 금지의 변경
135: 메뉴 금지의 변경
136: 엔카운트 금지의 변경
 201: 장소 이동
202: 이벤트의 위치 설정
203: 맵의 스크롤
204: 맵의 설정 변경
205: fog의 색조 변경
206: fog의 불투명도 변경
207: 애니메이션의 표시
208: 투명상태의 변경
209: 이동 루트의 설정
210: 이동 완료까지 웨이트
221: 트란지션 준비
222: 트란지션 실행
223: 화면의 색조 변경
224: 화면의 플래시
225: 화면의 시이크
231: 픽쳐의 표시
232: 픽쳐의 이동
233: 픽쳐의 회전
234: 픽쳐의 색조 변경
235: 픽쳐의 소거
236: 기후의 설정
241: BGM 의 연주
242: BGM 의 용암
245: BGS 의 연주
246: BGS 의 용암
247: BGM / BGS 의 기억
248: BGM / BGS 의 복귀
249: ME 의 연주
250: SE 의 연주
251: SE 의 정지
 301: 배틀의 처리
302: 숍의 처리
303: 이름 입력의 처리
311: HP 의 증감
312: SP 의 증감
313: 스테이트의 변경
314: 전회복
315: EXP 의 증감
316: 레벨의 증감
317: 파라미터의 증감
318: 기술의 증감
319: 장비의 변경
320: 엑터의 이름 변경
321: 엑터의 클래스 변경
322: 엑터의 그래픽 변경
331: 에너지 미의 HP 증감
332: 에너지 미의 SP 증감
333: 에너지 미의 스테이트 변경
334: 에너지 미의 출현
335: 에너지 미의 변신
336: 에너지 미의 전회복
337: 애니메이션의 표시
338: 데미지의 처리
339: 액션의 강제
340: 배틀의 중단
351: 메뉴 화면의 호출
352: 세이브 화면의 호출
353: 게임 오버
354: 타이틀 화면으로 돌린다
355: 스크립트

이벤트 코드는 위의 것으로 모두라고 하는 것은 아니고, 예를 들어 [문장의 표시] 커멘드의 2 행 째 이후에는 401 이라고 하는 코드가 할당 있는 등, 특수한 경우가 존재합니다. 다만, 이벤트 커멘드의 처리 자체는 pre-set의 Interpreter 클래스로 완성되어 있기 때문에 통상, 이러한 내부 코드를 걱정할 필요는 없습니다. 이러한 구조에 되어 있다, 라고 하는 것만 기억해 두면 OK 입니다.


장면 클래스

  • 장면 클래스의 종류
  • 장면 클래스의 구조
  • Main 섹션
  • 마지막에

맵 화면이나 메뉴 화면 등, 각 화면의 처리를 담당하고 있어 하지만장면 클래스입니다.

장면 클래스의 종류

각 장면 클래스에 대응하는 화면을 다음의 오모테에 나타냅니다. Scene_Battle 클래스 하지만 분할 정의 되어 있는 이외는, 클래스명과 섹션명이 일대일로 대응해 지금 . 덧붙여 Scene_File 클래스에 대해서는 Scene_Save 및 Scene_Load 의 슈퍼 클래스로서 정의 되어 있기 (위해)때문에, 이 겉에는 포함하고 있지 않습니다.

클래스 | 내용
Scene_Title | 타이틀 화면
Scene_Map | 맵 화면
Scene_Menu | 메뉴 화면
Scene_Item | 아이템 화면
Scene_Skill | 기술 화면
Scene_Equip | 장비 화면
Scene_Status | 현상 화면
Scene_Save | 세이브 화면
Scene_Load | 로드 화면
Scene_End | 게임 종료 화면
Scene_Battle | 배틀 화면
Scene_Shop | 숍 화면
Scene_Name | 이름 입력 화면
Scene_Gameover | 게임 오버 화면
Scene_Debug | 디버그 화면

장면 클래스의 구조

장면 클래스의 인스턴스는 $scene 라는 이름의 글로벌 변수에 보존되어 있습니다. 이 값이 nil 가 되지 않는 한 main 라는 이름의 메소드가 불려 가 게임의 실행을 계속하는 구조입니다. 전형적인 장면 클래스의 골격은 다음과 같이 되어 있습니다.

class Scene_Xxxx
  def main
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
  end
  def update
  end
end

Graphics.freeze 와 Graphics.transition 라고 하는 것은, 각각 이벤트 커멘드의 [트란지션 준비] 및 [트란지션 실행] 과 같은 것과 생각해 상관하지 않습니다. 이러한 메소드의 상세한 것에 대하여는 Graphics 모듈의 해설을 참조해 주세요. 메인 루프가 이러한 메소드로 둘러싸여 있는 것은, 화면이 잘라 바뀌었을 때에 크로스페이드의 효과를 사용 하기 위한(해)입니다.

if $scene ! = self 라고 하는 것은 「글로벌 변수 $scene 가 가리키고 있는 오브 젝트가 자기 자신이 아니면」이라고 하는 의미로, 요컨데 「다른 화면에 잘라 바뀔 경우」라고 하게 됩니다 (self 는 자신의 오브젝트를 나타낸다 유사 변수입니다) . 또, Input.update 는 게임패드나 키보드의 입력 정보를 갱신하는 메속 드입니다. 입력 관계의 처리에 대해서는 Input 모듈의 해설을 참조해 주세요.

그런데, 기초편에서는 다음의 형태가 RGSS 에서의 게임 실행의 기본이다고 한다 일을 설명했습니다. 장면 클래스의 main 메소드는 이것보다 복잡하게 되어 (은)는 있습니다만, 확실히 이 형태를 발전 시킨 것인 것을 알겠지요.

loop do
  Graphics.update
end

Main 섹션

드디어 마지막 섹션입니다. 지금까지의 섹션으로 갔다온 것은 모두 클래스의 정의이기 때문에, 사실상, 진정한 스크립트의 실행 개시는 여기로부터 (이)라고 생각하는 것도 할 수 있겠지요. Main 섹션은, 코멘트를 제외하면(자) 불과 11 행이 됩니다.

begin
  Graphics.freeze
  $scene = Scene_Title.new
  while $scene ! = nil
    $scene.main
  end
  Graphics.transition(20)
rescue Errno::ENOENT
  filename = $!.message.sub("No such file or directory - ", "")
  print("파일 #{filename} 가 발견되지 않습니다. ")
end

begin ? rescue ? end 라고 하는 것은예외 처리의 구문 입니다. 여기에서는, 스크립트의 실행중에 「파일이 발견되지 않다」라고 한다 의미의 예외가 발생했을 때에 rescue 이후에 처리가 지나도록(듯이) 지정하고 있습니다. 즉 「파일 XXX 가 발견되지 않습니다」라고 하는 에러 메세지를 표시해 종료 한다고 하는 것입니다. 예외 처리는 pre-set의 스크립트에서는 여기밖에 사용되고 있지 않으므로, 사용법은 기억하지 않아도 상관하지 않습니다.

Graphics.freeze 와 Graphics.transition 는 방금전도 나왔습니다. 최초로 「트란지션 준비」를 하는 것으로, 새까만 상태로부터 타이틀 화면이 용명으로 표시되도록(듯이) 하고 있습니다. 마지막 Graphics.transition 는, 반대로 새까만 상태에 용암 해 종료 하기 위한의 것입니다. 인수에 20 이 지정되어 있으므로, 보통 보다 약간 늦은 용암이 됩니다.

남은 것은 4 행. 타이틀 화면의 처리를 맡는 Scene_Title 클래스 의 인스턴스를 작성해, 글로벌 변수 $scene 에 설정하고 있습니다. 그리고, 전술과 같이 $scene 가 nil 가 되지 않는 이상 main 라는 이름의 메소드를 호출하게 되어 있습니다.

마지막에

피로님이었습니다. 「스크립트 입문」은 이것으로 종료입니다.

지금까지 학습한 지식이 있으면,RGSS 레퍼런스를 한 손에, pre-set의 스크립트를 해독 해 나가는 것이 할 수 있을 것입니다. 결코 RGSS 의 모든 것을 이해할 필요는 없습니다. 흥미가 있는 곳(중)만을 조사해 가는 동안에, 자연과 스크립트를 개조한다 아이디어가 떠올라 오는 것이겠지요.

가능성은 거의 무한. RGSS 를 사용해 무엇을 하는 것인가는, 당신 순서 입니다.


RGSS 레퍼런스

RGSS (Ruby Game Scripting System)는, 객체 지향 스크립트 언어 Ruby 로 Windows 용 2D 게임을 개발 하기 위한 시스템입니다. RGSS 를 사용한다 (와)과 C 등의 프로그램 언어보다 아득하게 간단하게, 완전 오리지날의 게임 시스템 (을)를 구축할 수가 있습니다. Ruby 는 심플하고 초보자에게도 취급하기 쉽고, 한편 강력한 고급언어입니다.

본문서에 대해서

본문서는, Ruby 의 참조 설명서로부터 RGSS 를 사용하는데 있어서 최저한 필요한 정보를 발췌해, RGSS 의 독자 사양에 관한 해설을 더해 재편집한 것 입니다. RGSS 의 유저용으로, 게임프로그래밍에 두어 중요하지 않은 부분은 대폭 에 깎아, 각처의 기술에 변경을 더하고 있습니다. 그 때문 기술이 엄밀하게 정확한 것은 우는 있는 경우도 있습니다. Ruby 의 레퍼런스로서는, 극히 간이적인 것으로 아 (일)것으로 주의해 주세요.

오리지날의 Ruby, 및 본문서의 원문은 Ruby 의 공식 페이지 http://www.ruby-lang.org/ 로부터 입수 가능합니다. Ruby 에 관해서 보다 상세한 정보 하지만 필요한 (분)편은, 이쪽을 참조해 주세요.

사용자 써포트에 대해서

스크립트 에디터의 편집에 의한 게임 작성 방법, 또는 그것에 따라 당겨 오코시 와 된 불편은, 엔타브레인유자사포트에서는 받아들이고 있지 않습니다. 또, Ruby 스크립트에 두고, 폐사 및, 기다리는 아래 유키씨는 서포트의 의무를 지지 않습니다. 편집할 때에는 충분히 RGSS 의 기능을 이해한 데다가 시도해 주세요.

상기 사이트, 그 외 Ruby 의 정보, 지원 사이트등에 두어, 어느 정도의 지식을 몸에 익힌 뒤, 사이트 운영의 관계자 및 다른 이용자의 귀찮게 안 되는 태도로 임한다 유의합시다.

목차

  • RGSS 의 사양
  • Ruby 의 문법
    • 자구 구조와 식
    • 변수와 정수
    • 리터럴
    • 연산자식
    • 제어 구조
    • 메소드 호출
    • 클래스와 메소드의 정의
  • 표준 라이브러리
    • 편입 함수
    • 편입 변수
    • 편입 클래스
    • 편입 모듈
    • 편입 예외 클래스
  • 게임 라이브러리
    • RGSS 편입 함수
    • RGSS 편입 클래스
    • RGSS 편입 모듈
    • RPGXP 데이터 구조
  • 부록
    • 정규 표현
    • sprintf 포맷


Ruby 의 문법

  • 자구 구조와 식
    • 식별자
    • 코멘트
    • 예약어(reserved word)
    • 식
  • 변수와 정수
    • 글로벌 변수
    • 인스턴스 변수
    • 로컬 변수
    • 정수
    • 유사 변수
  • 리터럴
    • 수치 리터럴
    • 캐릭터 라인 리터럴
      • backslash 기법
      • 식 전개
    • 배열식
    • 해시식
    • 범위식
    • 심볼
  • 연산자식
    • 대입
      • 자기 대입
      • 다중 대입
    • and
    • or
    • not
    • 조건 연산자
  • 제어 구조
    • 조건 분기
      • if
      • if 수식자
      • unless
      • unless 수식자
      • case
    • 반복
      • while
      • while 수식자
      • until
      • until 수식자
      • for
      • break
      • next
    • 예외 처리
      • raise
      • begin
      • rescue 수식자
    • 메소드 종료
      • return
  • 메소드 호출
    • super
    • 이테레이타
    • yield
  • 클래스와 메소드의 정의
    • 클래스 정의
    • 모듈 정의
    • 메소드 정의
      • 메소드의 평가
    • 특이 메소드 정의
    • 클래스 메소드 정의
    • 정의에 관한 조작
      • alias


자구 구조

자구 구조와 식

  • 식별자
  • 코멘트
  • 예약어(reserved word)
  • 식

Ruby 에서는 알파벳의 대문자와 소문자는 구별됩니다. 식별자와 일부의 리터럴의 도중을 제외해 임의의 장소에 공백 문자나 코멘트를 둘 수가 있습니다. 개행은 행이 분명하게 다음의 행에 계속할 때만 공백 문자로서 그 이외에서는 문장의 단락으로서 해석됩니다.

식별자

례:

foobar
ruby_is_simple

Ruby 의 식별자는, 영문자 또는 '_'로부터 시작되어, 영숫자 또는 '_'로부터 됩니다. 길이가 제한은 없습니다.

코멘트

례:

# this is a comment line

캐릭터 라인중 이외의 것 # 으로부터 줄 끝까지를 코멘트로 간주합니다.

예약어(reserved word)

예약어(reserved word)는 이하의 것입니다.

BEGIN    class    ensure   nil      self     when
END      def      false    not      super    while
alias    defined?  for      or       then     yield
and      do       if       redo     true
begin    else     in       rescue   undef
break    elsif    module   retry    unless
case     end      next     return   until

예약어(reserved word)는 클래스명, 변수명 등에 이용할 수 없습니다. 다만 접두사 $,@ 가 선두에 도착한 것은 예약어(reserved word)라고는 보이지 않습니다. 또, def 의 뒤나 메소드 호출의 피리어드의 뒤 등, 메소드명으로 와 분명히 아는 장소에서는 메소드명으로서 이용할 수가 있습니다.

식

례:

true
(1+2)*3
foo()
if test then ok else ng end

변수나 리터럴, 연산자식이나 제어 구조 등을 모두 포함해 「식」이라고 부릅니다.

이러한 식을 늘어놓은 것이 Ruby 의 프로그램이 됩니다. 식과 식의 사이는 매미 구두점 (;) 또는 개행으로 단락짓습니다. 다만, backslash에 계속되는 개행은 문장의 단락이 되지 않고, 다음의 행에 계속합니다.

식은 괄호에 의해 그룹 할 수가 있습니다.


변수와 정수

  • 글로벌 변수
  • 인스턴스 변수
  • 로컬 변수
  • 정수
  • 유사 변수

Ruby 의 변수와 정수의 종별은 변수명의 최초의 한 글자에 의해, 글로벌 변수, 인스턴스 변수, 로컬 변수, 정수의 어느 쪽인가에 구별됩니다. 통상의 변수의 2 문자눈 이후는 영숫자 또는 '_'입니다만, 편입 변수의 일부에는 「'$' + 1 문자의 기호」라고 하는 변수가 있습니다 (조 붐비어 변수를 참조) .

변수나 정수는, 특정의 오브젝트를 지시하는 것입니다. 변수나 정수에의 대입은, 그것들이 새로운 오브젝트를 가리키도록(듯이) 하기 위한 조작입니다. 따라, 대입에 보다 오브젝트가 카피되어 새롭게 만들어질 것은 없습니다.

글로벌 변수

례:

$foobar

'$'로 시작되는 변수는 글로벌 변수로, 프로그램의 어디에서라도 참조 할 수 있습니다 (그 만큼, 이용에는 주의가 필요합니다) . 글로벌 변수에는 선언은 필요 있습니다. 초기화되어 있지 않은 글로벌 변수를 참조했을 때의 값은 nil 입니다.

인스턴스 변수

례:

@foobar

'@'로 시작되는 변수는 인스턴스 변수이고, 특정의 오브젝트에 소속하고 있습니다. 인스턴스 변수는 그 클래스 는 서브 클래스의 메소드로부터 참조 할 수 있습니다. 초기화되어 있지 않다 인스턴스 변수를 참조했을 때의 값은 nil 입니다.

로컬 변수

례:

foobar

소문자 또는 '_'로 시작되는 식별자는 로컬 변수 또는 메소드 호출입니다.

로컬 변수의 스코프 (클래스, 모듈, 메소드 정의의 본체)에 있어서의 소문자로 시작되는 식별자에의 최초의 대입은, 그 스코프에 속하는 로컬 변수의 선언 (이)가 됩니다. 선언되어 있지 않은 식별자의 참조는 인수가 없는 메소드 호출 풍부해 됩니다.

정수

례:

FOOBAR

알파벳 대문자로 시작되는 식별자는 정수입니다. 정수의 정의 (와 초기화)는 대입에 의해 행해집니다만, 메소드 중(안)에서는 정의 할 수 없지 않습니다. 정의되어 있지 않은 정수에 액세스 하면(자) 예외 NameError 가 발생합니다.

정수는 그 정수가 정의 된 클래스 / 모듈안, 클래스를 계승하고 있다 클래스, 모듈을 인클루드 하고 있는 클래스 또는 모듈로부터 참조한다 일을 할 수 있습니다. 정수를 외부로부터 참조하기 위해서는 '::'연산자를 이용합니다.

class Foo
  FOO = 'FOO'
end

class Bar < Foo
  p FOO             # => "FOO"
end

p Foo::FOO          # => "FOO"

또, 클래스나 모듈의 이름도 정수와 동일 취급이 됩니다.

유사 변수

통상의 변수 이외로, 유사 변수로 불리는 특수한 변수가 있습니다.

self

현재의 메소드의 실행 주체.

nil

NilClass 클래스의 유일한 인스턴스. 가짜를 나타냅니다.

true

TrueClass 클래스의 유일한 인스턴스. 진을 나타냅니다.

false

FalseClass 클래스의 유일한 인스턴스. 가짜를 나타냅니다.

유사 변수의 값을 변경할 수 없습니다. 의사 변수에 대입하면(자) 문법 에러가 됩니다.


리터럴

  • 수치 리터럴
  • 캐릭터 라인 리터럴
    • backslash 기법
    • 식 전개
  • 정규 표현 리터럴
  • 배열식
  • 해시식
  • 범위식
  • 심볼

숫자의 1 이나 캐릭터 라인 "hello world" 와 같이 Ruby 의 프로그램안에 직접 기술 할 수 있는 값의 (것)일을 리터럴이라고 합니다.

수치 리터럴

123
0d123

정수

-123

부호 다하고 정수

123.45

부동 소수점수(실수)

. 1 등 '. '로 시작되는 부동 소수점수(실수)는 용서되지 않습니다. 0.1 이라고 쓸 필요가 있습니다.

1.2e-3

부동 소수점수(실수)

0xffff

16 진정수

0b1011

2 진정수

0377
0o377

8 진정수

수치 리터럴에는, '_'를 포함할 수가 있습니다. ruby interpreter는 '_'를 단지 무시해, 특별한 해석은 아무것도 하지 않습니다. 이것은, 큰 수치의 자리수가 한눈에 알도록(듯이) 기술하는데 편리합니다. 다만, 리터럴의 최초와 마지막에 '_'를 쓰거나'_'를 연속해 쓰거나 하면(자) 에러가 됩니다.

1_000_000_000   # => 1000000000
0xffff_ffff     # => 0xffffffff

캐릭터 라인 리터럴

례:

"this is a string expression\n"
'this is a string expression'

다브르크트 또는 싱르크트로 둘러싸인 캐릭터 라인은 String 클래스의 인스턴스입니다.

다브르크트로 둘러싸인 캐릭터 라인에서는backslash 기법과식 전개가 유효하게 됩니다. 싱르크트로 둘러싸인 캐릭터 라인에서는,\\ (backslash 그것)과 \' (싱르크트)를 제외해 캐릭터 라인의 내용의 해석은 행해지지 않습니다.

공백을 간에 끼운 캐릭터 라인 리터럴은 1 개(살)의 캐릭터 라인 리터럴로 간주해집니다.

p "foo" "bar"   # => "foobar"

backslash 기법

backslash \ 는 일본어 폰트의 엔기호 ¥ 와 같은 것입니다.

\t

탭 (0x09)

\n

개행 (0x0a)

\r

왕복대 리턴 (0x0d)

\f

개페이지 (0x0c)

\s

공백 (0x20)

\nnn

8 진수 표기 (n 는 0-7)

\xnn

16 진수 표기 (n 는 0-9, a-f)

식 전개

다브르크트 (")로 둘러싸인 캐릭터 라인, 및 정규 표현 중(안)에서는 #{식} 이라고 하는 형식으로 식의 내용 (를 캐릭터 라인화한 것)을 묻을 수가 있습니다. 식이 변수 기호 ($,@)로 시작되는 변수의 경우에는 {} 을 생략 해,#변수명이라고 한다 형식에서도 전개 할 수 있습니다. 문자 # 에 계속되는 문자가 {,$,@ 나오지 않으면, 그대로 문자 # 로서 해석됩니다. 명시적으로 식 전개를 멈추기에는 # 의 전에 백 slash를 둡니다.

$ruby = "RUBY"
p "my name is #{$ruby}"     # => "my name is RUBY"
p 'my name is #{$ruby}'     # => "my name is #{$ruby}"

정규 표현 리터럴

례:

/^Ruby the OOPL/
/Ruby/i
/my name is #{myname}/

/ (으)로 둘러싸인 캐릭터 라인은 정규 표현입니다. 정규 표현은 Regexp 클래스의 인스턴스입니다.

정규 표현으로서 해석되는 메타 캐릭터에 대해서 (은)는정규 표현을 참조해 주세요.

마지막의 것 / 의 직후의 문자는 정규 표현에 대한 옵션이 됩니다. 옵션의 기능은 이하와 같습니다.

i

정규 표현은 매치시에 대문자 소문자의 구별을 하지 않는다.

m

복수행 모드. 정규 표현 '. '가 개행에도 매치 하도록 된다.

Ruby 는 정규 표현중의 멀티 바이트 문자 (한자 등)를 올바르게 취급합니다.

정규 표현 중(안)에서는 캐릭터 라인과 같은backslash 기법이나식 전개도 유효합니다.

정규 표현 리터럴은 그 중에식 전개를 포함하지 않으면, 몇번평 값 되어도 동일한 정규 표현 오브젝트를 돌려줍니다. 식 전개를 포함한 경우는 평가마다 (식 전개의 결과를 앞으로) 정규 표현이 컴파일 되고 정규 표현 오브젝트가 생성됩니다.

배열식

례:

[1, 2, 3]

문법:

'['식 ', ' ... ']'

각각의 식을 평가한 결과를 포함한 배열을 돌려줍니다. 배열은 Array 클래스의 인스턴스입니다.

배열식은 평가될 때마다 매회 새로운 배열 오브젝트를 생성합니다.

해시식

례:

{1=>2, 2=>4, 3=>6}

문법:

'{'식 '=>'식 ', ' ... '}'
'{'식 ', '식 ', ' ... '}'

각각의 식을 평가한 결과를 키와 값으로 하는 해시 오브젝트를 돌려줍니다. 해시는 Hash 클래스의 인스턴스입니다.

해시 (연상 배열이라고도 부른다)는 임의의 종류의 오브젝트로부터 임의의 종류의 오브젝트에의 관련 짓고를 할 수가 있습니다.

해시식은 평가될 때마다 매회 새로운 해시 오브젝트를 생성합니다.

범위식

례:

1 .. 20

문법:

식 1 '..'식 2
식 1 '...'식 2

조건식 이외의 장소에서는 식 1 으로부터 식 2 까지의 범위 오브젝트를 반환 . 범위 오브젝트는 Range 클래스 의 인스턴스입니다.

.. 연산자에 의해 생성된 범위 오브젝트는 종단을 포함해,... 연산자에 따라 생성된 범위 오브젝트는 종단을 포함하지 않습니다.

범위식은 그 양단이 수치 리터럴이면, 몇번 평가되어도 같은 오브제크 트를 돌려줍니다. 그렇지 않으면 평가될 때마다 새로운 범위 오브젝트를 생 이룹니다.

심볼

례:

:class
:lvar
:method
:$gvar
:@ivar
:+

문법:

':'식별자
':'변수명
':'연산자

임의의 캐릭터 라인과 일대일에 대응하는 심볼을 돌려줍니다. 심볼은 Symbol 클래스의 인스턴스입니다.

심볼은 항상 일의의 오브젝트로, 몇번 평가되어도 같은 오브젝트를 돌려줍니다.


연산자식

  • 대입
    • 자기 대입
    • 다중 대입
  • and
  • or
  • not
  • 조건 연산자

례:

1+2*3/4

프로그래밍의 편리를 위해서(때문에) 일부의 메소드 호출과 제어 구조는 연산자형태 식을 잡습니다. Ruby 에는 이하에 드는 연산자가 있습니다.

높다   ::
       []
       **
       -(단항)  +(단항)  !   ~
       *  /  %
       +  -
       << >>
       &
       |  ^
       > >=  < <=
       <=> ==  === ! =  =~  ! ~
       &&
       ||
       ..  ...
       ? :(조건 연산자)
       =(+=, -= ... )
       not
낮은   and or

왼쪽의 「높다」 「낮다」는 연산자의 우선 순위입니다. 예를 들어 「&&」는 「||」 보다 우선 순위가 높기 때문에, 이하와 같이 해석됩니다.

a && b || c   # => (a && b) || c
a || b && c   # =>  a || (b && c)

대부분의 연산자는 특별한 형식의 메소드 호출입니다만, 일부의 것은 언어에 편입으로, 재정의 할 수 없지 않습니다.

  • 재정의 할 수 있는 연산자 (메소드)

    +@, -@ (은)는 단항 연산자 +, - 를 나타내 메소드 정의등으로(이며)는 이 기법을 이용합니다.

    |  ^  &  <=>  ==  ===  =~  >   >=  <   <=   <<  >>
+  -  *  /    %   **   ~   +@  -@  []  []=  `

  • 재정의 할 수 없는 연산자 (제어 구조)

    연산자의 편성인 자기 대입 연산자와 ! =, ! ~ 도 재정의 할 수 없지 않습니다.

    =  ? :  ..  ...  !   not  &&  and  ||  or  ::

대입

례:

foo = bar
foo[0] = bar
foo.bar = baz

문법:

변수 '='식
정수 '='식
식 '['expr..']' '='식
식 '. '식별자 '='식

대입식은 변수 등에 값을 설정하기 위해서 이용됩니다. 대입은 로 칼 변수나 정수의 선언이라고 해도 이용됩니다. 대입식의 좌변은 이 아래의 언젠가 나오지 않으면 되지 않습니다.

  • 변수

    변수 '='식

    좌변값이 변수의 경우, 식을 평가한 값이 변수에 대입됩니다.

  • 배열 참조

    식 1 '['식 2 ... ']' '='식 n

    식 1 을 평가해 얻을 수 있는 오브젝트에 대해서의 , 식 2 로부터 식 n 까지를 인수로 하는 []= 메소드 호출에 변환됩니다.

    class C
  def initialize
    @ary = [0,1,2,3,4,5,6,7]
  end
  def [](i)
    @ary[i * 2]
  end
  def []=( i, v )
    @ary[i * 2] = v
  end
end
c = C.new
p c[3]      # c. []( 3 )  에 변환되어 그 결과는 6
p c[3] = 1  # c. []=(3,1)에 변환되어 그 결과는 1

  • 속성 참조

    식 1 '. '식별자 '='식 2

    식 1 을 평가해 얻을 수 있는 오브젝트에 대해서, 식별자 = 라고 하는 메소드를, 식 2 를 인수로 해 호출합니다.

    class C
  def foo
    @foo
  end
  def foo=( v )
    @foo = v
  end
end
c = C.new
c.foo = 5   # c.foo=( 5 )와 같이 변환된다
p c.foo     # => 5

    속성은 attr_accessor 를 사용해 똑같이 정의 할 수 있습니다.

    class C
  attr_accessor :foo
end
c = C.new
c.foo = 5   # c.foo=( 5 )와 같이 변환된다
p c.foo     # => 5

자기 대입

례:

foo += 12       # foo = foo + 12
foo *= 3        # foo = foo * 3

문법:

식 1 op= 식 2     # 식 1 은 통상의 대입의 좌변의 언젠가

op 는 이하의 머지않아인가입니다. 연산자와 = 의 사이에 스페이스를 비워 안됩니다.

+, -, *, /, %, **, &, |, ^, <<, >>, &&, ||

이 형식의 대입은, 대부분의 경우에 두고

식 1 = 식 1 op 식 2

(이)라고 평가됩니다.

다중 대입

례:

foo, bar, baz = 1, 2, 3
foo, = list()
foo, *rest = list2()

문법:

식 [', ' [ 식 ', ' ... ] ['*' [ 식 ]]] = 식 [, 식 ... ]['*'식 ]
'*' [ 식 ] = 식 [, 식 ... ]['*'식 ]

다중 대입은 복수의 식 또는 배열로부터 동시에 대입을 합니다. 좌변의 각 식은 각각 대입 가능하지 않으면 되지 않습니다. 우변의 식이 하나 해 인가 주어지지 않았던 경우, 식을 평가한 값은 배열에 변환되어, 각 요소가 좌변의 각각의 식에 대입됩니다. 좌변의 요소의 수보다 배열의 요소의 수의 (분)편이 많은 경우에는, 남은 요소는 무시됩니다. 배열의 요소가 부족한 경우에는 대응하는 요소가 없는 좌변에는 nil 가 대입됩니다.

좌변의 마지막 식의 직전에 * 가 붙어 있으면(자), 대응한다 좌변이 없는 남은 요소가 배열로서 대입됩니다. 남은 요소가 없을 때에는 하늘의 배열이 대입됩니다.

foo, bar  = [1, 2]      # foo = 1; bar = 2
foo, bar  = 1, 2        # foo = 1; bar = 2
foo, bar  = 1           # foo = 1; bar = nil
foo, bar  = 1, 2, 3     # foo = 1; bar = 2
foo       = 1, 2, 3     # foo = [1, 2, 3]
*foo      = 1, 2, 3     # foo = [1, 2, 3]
foo, *bar = 1, 2, 3     # foo = 1; bar = [2, 3]

and

례:

test && set
test and set

문법:

식 '&&'식
식 and 식

우선, 좌변을 평가해, 결과가 진일 경우에는 우변도 평가 섬 . and 는 같은 기능을 하는 우선 순위의 낮은 연산자입니다.

or

례:

demo || die
demo or die

문법:

식 '||'식
식 or 식

우선 좌변을 평가해, 결과가 가짜일 경우에는 우변도 평가합니다. or 는 같은 기능을 하는 우선 순위의 낮은 연산자입니다.

not

례:

!  me
not me
i ! = you

문법:

'! '식
not 식

식의 값이 진일 때 가짜를, 가짜일 때 진을 돌려줍니다.

다음의 기법도 할 수 있습니다.

식 '! ='식          # ! (식 == 식)(와)과 같다
식 '=~'식          # ! (식 =~ 식)(와)과 같다

조건 연산자

례:

obj == 1 ?  foo : bar

문법:

식 1 ?  식 2 : 식 3

식 1 의 결과에 의해 식 2 또는 식 3 을 돌려줍니다.

if 식 1 then 식 2 else 식 3 end

(와)과 전혀(완전히) 같습니다.


제어 구조

  • 조건 분기
    • if
    • if 수식자
    • unless
    • unless 수식자
    • case
  • 반복
    • while
    • while 수식자
    • until
    • until 수식자
    • for
    • break
    • next
  • 예외 처리
    • raise
    • begin
    • rescue 수식자
  • 메소드 종료
    • return

Ruby 에서는 (C 언어 등 과는 달리) 제어 구조는 식이어, 어떠한 값을 돌려줍니다.

Ruby 는 C 언어나 Perl 로부터 계승한 제어 구조를 가집니다만, 그 외에이테레이타라고 하는 루프 추상화의 기 능이 있습니다. 이테레이타는 반복을 위시하는 제어 구조를 유저가 정의 하는 것이 할 수 있는 것입니다.

조건 분기

if

례:

if age >= 12 then
  print "adult fee\n"
else
  print "child fee\n"
end
gender = if foo.gender == "male" then "male" else "female" end

문법:

if 식 [then]
  식 ...
[elsif 식 [then]
  식 ... ]
...
[else
  식 ... ]
end

조건식을 평가한 결과가 진일 때, then 이하의 식을 평가합니다. if 의 조건식이 가짜이면 elsif 의 조건을 평가합니다. elsif 절은 복수 지정 할 수 있어 모든 if 및 elsif 의 조건식이 가짜였을 때 else 절이 있으면 그 식이 평가됩니다.

if 식은, 조건이 성립한 마디 (혹은 else 절)의 마지막에 평가한 식의 결과를 돌려줍니다. else 절이 없고 어느 조건도 성립되지 않으면 nil 를 돌려줍니다.

Ruby 에서는 false 또는 nil 만이 가짜로, 그 이외는 0 이나 공문자열도 포함해라 모두진입니다.

Ruby 에서는 if 를 연결하는 것은 elsif 이고, else if 에서도 elif 도 아닌 (일)것으로 주의해 주세요.

if 수식자

례:

print "debug\n" if $DEBUG

문법:

식 if 식

우변의 조건이 성립 할 경우에, 좌변의 식을 평가해 그 결과를 돌려줍니다. 조건이 성립하지 않으면 nil 를 돌려줍니다.

unless

례:

unless baby?
  feed_meat
else
  feed_milk
end

문법:

unless 식 [then]
  식 ...
[else
  식 ... ]
end

unless 는 if 와 반대로, 조건식이 가짜 때에 then 이하의 식을 평가합니다. unless 식에 elsif 를 지정할 수 없습니다.

unless 수식자

례:

print "stop\n" unless valid(passwd)

문법:

식 unless 식

우변의 조건이 성립하지 않을 때에, 좌변의 식을 평가해 그 결과를 돌려줍니다. 조건이 성립하지 않으면 nil 를 돌려줍니다.

case

례:

case $age
when 0 .. 2
  "baby"
when 3 .. 6
  "little child"
when 7 .. 12
  "child"
when 13 .. 18
  "youth"
else
  "adult"
end

문법:

case 식
[when 식 [, 식] ... [then]
  식 ..]..
[else
  식 ..]
end

case 는 하나의 식에 대한 일치 판정에 의한 분기를 합니다. when 절로 지정 된 값과 최초의 식을 평가한 결과를 연산자 === 를 이용해 비교해, 일치한다 경우에는 when 절의 본체를 평가합니다.

case 는, 조건이 성립한 when 절 (혹은 else 절)의 마지막에 평가한 식의 결과를 돌려줍니다. 어느 조건도 성립되지 않으면 nil 를 돌려줍니다.

반복

while

례:

ary = [0,2,4,8,16,32,64,128,256,512,1024]
i = 0
while i < ary.length
  print ary[i]
  i += 1
end

문법:

while 식 [do]
   ...
end

식을 평가한 값이 진정한 사이, 본체를 반복해 실행합니다.

while 는 nil 를 돌려줍니다. 또, 인수를 수반한 break 에 의해 while 식의 반환값을 그 값으로 하는 것도 할 수 있습니다.

while 수식자

례:

sleep(60) while io_not_ready?

문법:

식 while 식

우변의 식을 평가한 값이 진정한 사이, 좌변을 반복해 실행합니다. 좌변의 식이 begin 인 경우에는, 그것을 최초로 1회 평가하고 나서 반복합니다.

while 수식한 식은 nil 를 돌려줍니다. 또, 인수를 수반한 break 에 의해 while 수식한 식의 반환값을 그 값으로 하는 것도 할 수 있습니다.

until

례:

until f.eof?
  print f.gets
end

문법:

until 식 [do]
   ...
end

식을 평가한 값이 실로 될 때까지, 본체를 반복해 실행합니다.

until 는 nil 를 돌려줍니다. 또, 인수를 수반한 break 에 의해 until 식의 반환값을 그 값으로 하는 것도 할 수 있습니다.

until 수식자

례:

print(f.gets) until f.eof?

문법:

식 until 식

우변의 식을 평가한 값이 실로 될 때까지, 좌변을 반복해 실행합니다. 좌변의 식이 begin 인 경우에는, 그것을 최초로 1회 평가하고 나서 반복합니다.

until 수식한 식은 nil 를 돌려줍니다. 또, 인수를 수반한 break 에 의해 until 수식한 식의 반환값을 그 값으로 하는 것도 할 수 있습니다.

for

례:

for i in [1, 2, 3]
  print i*2, "\n"
end

문법:

for lhs ...  in 식 [do]
  식 ..
end

식을 평가한 결과의 오브젝트의 각 요소에 대해서 본체를 반복해 실행합니다. 이것은 이하의 식과 거의 같습니다.

(식). each '{' '|' lhs..'|'식 .. '}'

「거의」라고 하는 것은, do ... end 또는 { } 에 의한 블록은 새로운 로컬 변수의 유효 범위를 도입하는데 대해, for 는 로컬 변수의 스코프에 영향을 미치지 않는 점이 다르기 때문(에)입니다.

for 는, in 로 지정한 오브젝트의 each 메소드의 반환값을 돌려줍니다.

break

례:

i = 0
while i < 3
  print i, "\n"
  break
end

문법:

break [식]

break 는 가장 안쪽의 루프를 탈출합니다. 루프와는

  • while
  • until
  • for
  • 이테레이타

의 어느쪽이든을 가리킵니다. C 언어와 달리, break 는 루프를 탈출하는 작용 만을 가져, case 를 빠지는 작용은 가지지 않습니다.

break 에 의해 루프를 빠진 for 나 이테레이타는 nil 를 돌려줍니다. 다만, 인수를 지정할 경우는 루프의 반환값은 그 인수가 됩니다.

next

례:

str.each_line do |line|
  next if line.empty?
  print line
end

문법:

next [식]

next 는 가장 안쪽의 루프의 다음의 반복에 점프 합니다. 이테레이타로 (은)는,yield 호출의 탈출이 됩니다.

next 에 의해 빠진 yield 는 nil 를 돌려줍니다. 다만, 인수를 지정했다 경우, yield 의 반환값은 그 인수가 됩니다.

예외 처리

raise

례:

raise
raise "you lose"
raise SyntaxError.new("invalid syntax")
raise SyntaxError, "invalid syntax"

문법:

raise
raise message
raise exception
raise error_type, message

예외를 발생 시킵니다. 제일의 형식에서는 직전의 예외를 재발생 시킵니다. 제２의 형식 (인수가 캐릭터 라인의 경우)에서는, 그 캐릭터 라인을 메세지라고 한다 RuntimeError 예외를 발생 시킵니다. 제３ 형식 (인수가 예외 오브젝트의 경우)에서는, 그 예외를 발생 시킵니다. 제４ 형식에서는 제일 인수로 지정된 예외를, 제２ 인수를 메세지로서 발생 시킵니다.

발생한 예외는 begin 식의 rescue 절로 잡을 수가 있습니다.

raise 는 실제로는 Ruby 의 예약어(reserved word)에서는 없고, 편입 함수입니다.

begin

례:

begin
  do_something
rescue
  recover
ensure
  must_to_do
end

문법:

begin
  식 ..
[rescue [error_type,..] [then]
  식 ..]..
[ensure
  식 ..]
end

본체의 실행중에 예외가 발생할 경우, rescue 절 (복수 지정 할 수 있습니다)이 주어지고 있으면 예외를 포착 할 수 있습니다. 발생한 예외와 일치한다 rescue 절이 존재 할 경우에는 rescue 절의 본체가 실행됩니다. 발생한 예외는, 편입 변수 $! (을)를 사용해 참조할 수가 있습니다.

error_type 가 생략 되었을 때는 StandardError 의 서브 클래스인 모든 예외를 포착 합니다. Ruby 의 대부분의 편입 예외는 StandardError 의 서브 클래스 입니다. 편입 예외 클래스를 참조해 주세요.

rescue 에서는 error_type 는 통상의 인수와 똑같이 평가되어 그 어느쪽이든가 일치하면 본체가 실행됩니다. error_type 를 평가해 값이 클래스나 모듈이 아닌 경우에는 예외 TypeError 가 발생합니다.

ensure 절이 존재할 때는 begin 식을 종료하는 직전에 반드시 ensure 절의 본체를 평가합니다.

begin 는, 본체 또는 rescue 절로 마지막에 평가한 식의 결과를 돌려줍니다.

rescue 수식자

례:

File.open("file") rescue print "can't open\n"

문법:

식 1 rescue 식 2

식 1 으로 예외가 발생했을 때, 식 2 를 평가합니다. 포착 하는 예외 클래스를 지정할 수 없습니다 ( ,StandardError 예외 클래스의 서브 클래스밖에 포착 할 수 없지 않습니다) .

rescue 수식자를 수반하는 식은, 예외가 발생하지 않으면 식 1, 예외가 발생하면 식 2 의 결과를 돌려줍니다.

메소드 종료

return

례:

return
return 12
return 1,2,3

문법:

return [식[', '식 ... ]]

식의 값을 반환값으로서 메소드의 실행을 종료합니다. 식이 2 개(살) 이상 주어졌을 때에는, 그것들을 요소로 하는 배열을 메소드의 반환값과 합니다. 식이 생략 될 경우에는 nil 를 반환값이라고 합니다.


메소드 호출

  • super
  • 이테레이타
  • yield

례:

foo.bar()
foo.bar
bar()
print "hello world\n"
print

문법:

[식 '. '] 식별자 ['('식 ... ['*' [식]] ')']

메소드 호출식은 리시버 ('. '의 좌측의 식의 값)의 메소드를 불러 냅니다. 리시버가 지정되지 않을 때는 self 의 메소드를 호출 .

메소드명에는 통상의 식별자의 외, 식별자에 ? 또는 ! 의 계속된 것이 용서됩니다. 관습으로서 술어 (진위값을 돌려주는 메소드)에는 ? (을)를, 동명의 (! (이)가 없다) 메소드에 비해 보다 파괴적인 작용을 가지는 메속 드 (예: tr 와 tr! )에는 ! (을)를 붙이도록(듯이) 되어 있습니다.

마지막 인수의 직전에 * 가 붙어 있는 경우, 그 인수의 값이 전개되어 건네받습니다.

foo(*[1,2,3])   # foo(1,2,3)와 같다

super

례:

super
super(1,2,3)

문법:

super
super(식 , ... )

super 는 현재의 메소드가 오버라이드(override) 하고 있는 메소드를 호출해 . 괄호와 인수가 생략 될 경우에는 현재의 메소드의 인수가 그대로 당겨 건네받습니다. 인수를 건네주지 않고 오버라이드(override) 한 메소드를 호출하기에는 super()와 괄호를 명시합니다.

class Foo
  def foo(arg=nil)
    p arg
  end
end

class Bar < Foo
  def foo(arg)
    super(5)       # 5 를 인수로 해 호출한다
    super(arg)     # 5 를 인수로 해 호출한다
    super          # 5 를 인수로 해 호출하는 super(arg)의 약기법
    arg = 1
    super          # 1 을 인수로 해 호출하는 super(arg)의 약기법
    super()        # 인수 없음으로 호출한다
  end
end
Bar.new.foo 5

이테레이타

례:

[1,2,3]. each do |i| print i*2, "\n" end
[1,2,3]. each {|i| print i*2, "\n" }

문법:

method(arg1, arg2, ...)  do ['|'식 ... '|'] 식 ... end
method(arg1, arg2, ...) '{' ['|'식 ... '|'] 식 ... '}'

이테레이타와는 제어 구조 (특히 루프)의 추상화를 위해서(때문에) 이용되는 메소드 입니다. do ... end 또는 { ... } (으)로 둘러싸인 코드의 단편 (블록으로 불린다) (을)를 뒤에 붙여 메소드를 호출하면(자), 그 메소드의 내부로부터 블록을 평가 할 수 있습니다. 이러한 블록을 호출하는 메소드를 이테레이타라고 부릅니다. 이테레이타로부터의 블록의 호출은 yield 를 이용합니다. yield 에게 건네진 값은 | 과 | 의 사이에 끼워진 변수에 대입됩니다.

{ ... } 의 (분)편이 do ... end 블록보다 강하게 결합합니다.

foobar a, b do .. end   # foobar 가 이테레이타로서 불려 갑니다
foobar a, b { .. }      # b 가 이테레이타로서 불려 갑니다

블록 중(안)에서 처음으로 대입된 (선언된) 로컬 변수는 그 블록 중(안)에서만 유효합니다.

foobar {
  i = 20                # 로컬 변수 'i'가 선언되었다
   ...
}
                        # 'i'는 여기에서는 미정도리
foobar a, b do
  i = 11                # 완전히 별개의 변수 i 의 선언
   ...
end

이테레이타의 반환값은, 통상의 메소드와 같습니다만, 블록중에서 break 에 의해 중단될 경우는 nil 를 돌려줍니다. break 에 인수를 지정할 경우는 그 값이 이테레이타의 반환값이 됩니다.

yield

례:

yield data

문법:

yield '(' [ 식 [', '식 ... ]] ')'
yield [ 식 [', '식 ... ]]

인수를 블록의 인수로서 건네주어 블록을 평가 합니다. yield 는이테레이타를 정의 한다 위해(때문에)메소드 정의내에서 사용합니다.

def foo
  yield(1,2)
end

foo {|a, b| p [a, b]}

블록 인수의 대입은다중 대입과 같은 룰로 행해집니다. 또 yield 를 실행한 메소드에 블록이 건네받고 있지 않은 (이테레이타는 아니다) 때는 예외 LocalJumpError 이 발생합니다.

yield 는 블록내에서 마지막에 평가한 식의 값을 돌려줍니다. 또,next 에 의해 블록의 실행이 중단될 경우는 nil 를 돌려줍니다. next 에 인수를 지정할 경우는 그 값 하지만 yield 의 반환값이 됩니다.


클래스와 메소드의 정의

  • 클래스 정의
  • 모듈 정의
  • 메소드 정의
    • 메소드의 평가
  • 특이 메소드 정의
  • 클래스 메소드 정의
  • 정의에 관한 조작
    • alias

클래스 정의

례:

class Foo < Super
  def test
     :
  end
     :
end

문법:

class 식별자 ['<' superclass ]
  식 ..
end

클래스를 정의 합니다. 클래스명은 알파벳의 대문자로 시작되는 식별자입니다.

클래스 정의는, 식별자로 지정한 정수에의 클래스의 대입이 됩니다 (Ruby 에서는, 클래스도 오브젝트의 하나로 Class 클래스의 인스턴스입니다) .

클래스가 벌써 정의 되어 있을 때, 한층 더 같은 클래스명으로 클래스 정의를 쓰면(자) 클래스의 정의의 추가가 됩니다.

class Foo < Array
  def foo
  end
end

class Foo
  def bar
  end
end

클래스 정의식안은 self 가 그 클래스인 것 이외로 톱 레벨과의 차이는 없습니다. 클래스 정의식중에는 임의의 식을 쓰는 것이 할 수 있고 클래스 정의 시에 실행됩니다.

클래스 정의는 네스트 (상자)로 해 정의 할 수 있습니다. 이하의 예로 상자의 외측의 클래스 Foo 와 안쪽의 클래스 Bar 의 사이에는 (정수 Bar 가 Foo 안의 정수 Foo::Bar 인 것 이외로는) 계승 관계 등의 기능적인 관련은 전혀(완전히) 없습니다. 클래스의 네스트는, 의미적으로 관련하는 클래스를 외측의 클래스 / 모듈로 한묶음으로 하거나 포함 관계를 나타내기 위해서(때문에) 사용됩니다.

class Foo
  class Bar
  end
end

클래스 정의식은, 마지막에 평가한 식의 결과를 돌려줍니다. 마지막에 평가한 식 하지만 값을 돌려주지 않는 경우는 nil 를 돌려줍니다.

모듈 정의

례:

module Foo
  def test
     :
  end
     :
end

문법:

module 식별자
  식 ..
end

모듈을 정의 합니다. 모듈명은 알파벳의 대문자로 시작된다 식별자입니다.

모듈 정의는, 식별자로 지정한 정수에의 모듈의 대입이 됩니다 (Ruby 에서는, 모듈도 오브젝트의 하나로 Module 클래스의 인스턴스입니다) .

모듈이 벌써 정의 되고 있을 때, 한층 더 같은 모듈명으로 모듈정 도리를 쓰면(자) 모듈의 정의의 추가가 됩니다.

모듈 정의식은, 마지막에 평가한 식의 결과를 돌려줍니다. 마지막에 평가한 식 하지만 값을 돌려주지 않는 경우는 nil 를 돌려줍니다.

메소드 정의

례:

def fact(n)
  if n == 1 then
     1
  else
    n * fact(n-1)
  end
end

문법:

def 메소드명 ['(' [arg ['=' default]] ... [', ' '*' arg] ')']
  식 ..
[rescue [error_type,..] [then]
  식 ..]..
[ensure
  식 ..]
end

이 정의가 있는 장소에 메소드를 정의 합니다. 즉, 클래스 / 모듈 정의중이라면 그 클래스 / 모듈의 메소드를 정의 합니다. 톱 레벨 (이)라면 어디에서라도 부를 수 있는 메소드를 정의 합니다. 이러한 메소드는 결과 (으)로서 다른 언어에 있어서의 「함수」와 같이 사용할 수 있습니다.

메소드명으로서는 통상의 식별자의 달리, 재정의 가능한 연산자 (예: ==, +, - 등 연산자식을 참조)도 지정 할 수 있습니다.

가인수에 디폴트식이 주어질 경우, 메소드 호출로 열매 인수를 생략 해 때의 디폴트값이 됩니다 (디폴트식의 평가는 호출해 때에 메속 드 정의내의 문맥으로 행해집니다) .

마지막 가인수의 직전에 * 가 있는 경우에는 나머지의 열매 인수는 보고배열이라고 해 이 인수에 격납 됩니다.

례:

# 인수가 없는 메소드. 이하 end 는 생략
def foo
end

# 인수가 있는 메소드
def foo(arg, arg2)

# 디폴트 인수가 있는 메소드
def foo(arg = nil)

# 모두 가진다
def foo(arg, arg2, arg3 = nil, *rest)

# 연산자 형식
def ==(other)
def +(other)
def *(other)

메소드 정의에 두고, 가인수는 그 종류마다 이하의 순서밖에 지정하는 것 (은)는 할 수 없지 않습니다. 모두 생략 하는 것은 가능합니다.

  • 디폴트식이 없는 인수 (복수 지정가능)
  • 디폴트식이 있는 인수 (복수 지정가능)
  • * (을)를 따르는 인수 (1 개(살)만 지정가능)

그 외 특수한 형식을 취하는 메소드 정의를 이하에 듭니다.

# 단항 플러스 / 마이너스
def +@
def -@

# 요소 대입
def foo=(value)             # obj.foo = value

# [] (와)과 []=
def [](key)                 # obj[key]
def []=(key, value)         # obj[key] = value
def []=(key, key2, value)   # obj[key, key2] = value

또 메소드 실행시의 예외를 포착 하기 위해서 begin 식과 같은 rescue, ensure 절을 지정 할 수 있습니다.

메소드 정의식은, nil 를 돌려줍니다.

메소드의 평가

메소드가 불려 가면(자), 이하의 순서로 식이 평가됩니다.

  • 지정되어 있으면 인수의 디폴트식
  • 메소드의 본체
  • 지정되어 있으면 예외의 발생의 유무에 의해 메소드 정의식의 rescue 마디 또는 else 절
  • 지정되어 있으면 ensure 절

인수의 디폴트식도 포함해 모두 그 메소드의 문맥으로 평가 .

메소드의 반환값은 return 에 건네준 값입니다. return 하지만 불려 가지 않았던 경우는, 메소드의 본체로부터 ensure 절 실행 직전 까지의 마지막에 평가한 식의 값을 돌려줍니다.

또 메소드는 정의 하기 전에 호출할 수 없습니다. 예를 들어

foo
def foo
  print "foo\n"
end

(은)는 미정도리 메소드의 호출로 예외 NameError 를 발생 시킵니다.

특이 메소드 정의

례:

def foo.test
  print "this is foo\n"
end

문법:

def 식 '. '식별자 ['(' [ 인수 ['=' default]] ... [', ' '*'인수 ]')']
  식 ..
[rescue [error_type,..] [then]
  식 ..]..
[else
  식 ..]
[ensure
  식 ..]
end

특이 메소드와는 클래스는 아니게 어느 특정의 오브젝트에 고유의 메소드입니다. 특이 메소드의 정의는 네스트 할 수 있습니다.

클래스의 특이 메소드는 그 서브 클래스에도 계승됩니다. 말해 체 클래스의 특이 메소드는 다른 객체 지향 시스템에 차는 클래스 메소드의 기능을 하게 됩니다.

특이 메소드 정의식은, nil 를 돌려줍니다.

클래스 메소드 정의

Ruby 에 있어서의 클래스 메소드와는 클래스의 특이 메소드의 (일)것입니다. Ruby 로 (은)는, 클래스도 오브젝트이므로, 보통 오브젝트와 같게 특이 메소드 (을)를 정의 할 수 있습니다.

따라, 어떠한 방법으로 클래스 오브젝트에 메소드를 정의 하면, 가 클래스 메소드가 됩니다. 구체적으로는 이하와 같이 해 정의 하는 것이 할 수 있습니다 (모듈도 같습니다) .

# 특이 메소드 방식.
class Hoge
  def Hoge.foo
  end
end

# 클래스 정의의 밖에서도 좋다
def Hoge.bar
end

# 이하와 같이 하면 클래스명이 바뀌어도 메소드부의 변경이 불요
class Hoge
  def self.baz
  end
end

정의에 관한 조작

alias

례:

alias foo bar
alias :foo :bar

문법:

alias 신메소드명 구메소드명

메소드 혹은 글로벌 변수에 별명을 붙입니다. 메소드명에 (은)는 식별자 그것인가 Symbol 를 지정합니다 (obj.method (와)과 같은 식을 쓸 수 없습니다) . alias 의 인수는 메소드 호출등의 일절의 평가는 행해지지 않습니다.

별명을 붙일 수 있던 메소드는, 그 시점에서의 메소드 정의를 당겨 계 , 원래의 메소드가 재정의 되어도, 재정의전의 낡은 메소드와 동 말기능을 합니다. 있는 메소드의 동작을 바꾸어 재정의 하는 메소드 (으)로 원래의 메소드의 결과를 이용하고 싶을 때 등에 이용됩니다.

# 메소드 foo 를 정의
def foo
  "foo"
end

# 별명을 설정 (메소드 정의의 대피)
alias :_orig_foo :foo

# foo 를 재정의 (원래의 정의를 이용)
def foo
  _orig_foo * 2
end

p foo  # => "foofoo"

alias 식은 nil 를 돌려줍니다.


RGSS 의 사양

  • 게임의 기동
  • Game.ini
  • RGSS-RTP
    • 인스톨 정보
  • 암호화 어카이브(archive)
  • 그 외
    • 문자 코드
    • 나메라들인가 모드
    • 프롭퍼티

게임의 기동

게임 폴더

RGSS 는 통상, 게임 기동 파일 Game.exe (Windows 의 옵션 「등록되어 있는 확장자(extension)는 표시하지 않는다」가 유효하게 되어 있는 경우는, Game 라는 보고 표시됩니다)의 아이콘을 더블 클릭 하는 것으로써 실행합니다. 이 파일이 있는 폴더를 「게임 폴더」라고 부릅니다.

트크르 편집중의 게임은, 메뉴의 [테스트 플레이], 또는 데이타베이스 [무리] 의 [전투 테스트] 로부터 기동할 수가 있습니다. 이러한 경우는 디버그 모드 취급이 되어, Ruby 의 편입 변수 $DEBUG 가 자동적으로 세트 됩니다. 전투 테스트의 경우는 $BTEST 라고 하는 변수도 자동적으로 true 가 됩니다.

게임의 동작은, 구성 설정 파일 Game.ini (으)로 지정합니다.

Game.ini

Game.ini 파일은 트크르보다 자동적으로 작성, 갱신됩니다만, 메모장 등의 텍스트 문자 편집기로 직접 편집하는 것도 할 수 있습니다.

례:

[Game]
Library=RGSS100J.dll
Scripts=Data\Scripts.rxdata
Title=RubyQuest
RTP1=Standard
RTP2=
RTP3=
Library

RGSS 본체의 DLL 명. 이 파일은 통상, Windows 의 시스템 폴더에 인스톨 되어 있습니다.

게임 폴더에 지정된 DLL 가 있는 경우는, 그 쪽을 우선해 사용합니다.

Scripts

스크립트가 격납 되어 있는 데이터 파일. 게임 폴더로부터의 상대 패스로 지정합니다.

Ruby 는 확장자(extension) . rb 의 텍스트 파일을 스크립트로서 실행하는 것이 보통 그렇지만, RGSS 에서는 독자 형식으로 패키징 된 단일의 파일을 사용합니다. 이 파일은 통상, 트크르의 스크립트 에디터를 통하지 않으면 편집하는 것은 할 수 없지 않습니다. 데이터는 복수의 섹션으로부터 완성되고 있어 리스트의 표시순서에 실행 되어 갑니다.

Title

게임 타이틀. 윈도우의 타이틀 바에 이 이름이 표시됩니다.

RTP1
RTP2
RTP3

이 게임으로 사용하는 RGSS-RTP 의 등록명. 지정된 RTP 가 인스톨되어 있지 않은 경우는 에러 메세지가 표시됩니다.

RTP 를 하나도 지정하지 않고, 한편 RGSS 의 DLL (Library 로 지정)를 게임 폴더에 포함하면(자), RTP 의 인스톨을 필요로 하지 않는 게임을 작성 할 수 있습니다. 이 배포 방법은 적극적으로 추천 되는 것이 아닙니다만, 사용하는 소재의 대부분 하지만 오리지날인 경우 등은, 그 편이 이점이 클지도 모릅니다.

RGSS-RTP

RTP (RunTime Package)는, 배포하는 게임 데이터의 capacity를 작고 하기 위한 기구입니다. RTP 에는, 많은 게임으로 공통되어 사용되는 범용적인 화상, 음성 소재 등이 포함되어 있습니다. 게임을 플레이 하는 옆은, 그러한 소재 데이터를 어머나 조향타 째공통 파일로서 인스톨 두기로 보다 , 중복 하는 파일을 몇번이나 다운로드할 필요가 없어진다고 하는 이점이 있습니다.

RGSS-RTP 의 구성 파일은, 편입 게임 라이브러리의 이하의 메소드에 두어, 게임 폴더에 존재하는 것과 똑같이 액세스 할 수가 있습니다. 이러한 메소드에 건네주는 파일명은, 모두 확장자(extension)를 생략 하는 것이 가능합니다 (".png" 나 ".mid" 등이 자동적으로 판정 됩니다) .

Bitmap.new ,Audio.bgm_play ,Audio.bgs_play ,Audio.me_play ,Audio.se_play ,Graphics.transition

인스톨 정보

트크르 표준의 RTP 는 "Standard" 의 일종류만입니다만, 구조적으로는 복수의 RTP 를 동시에 사용 할 수 있도록 되어 있습니다. 인스톨러(installer) 작성의 지식이 있으면, 이하의 규칙에 따라, 유저 레벨로 독자적인 RTP 를 작성한다 일도 가능합니다. 다만, 그 경우, "Extension" 등의 범용적인 이름을 RTP 의 등록명으로서 사용하는 것은 추천 되지 않습니다. 장래, 공식으로 제공될지도 모르는 새로운 RTP 의 이름과 충돌해 버릴 가능성이 있기 때문(에)입니다.

RTP 는 디폴트로, 다음의 폴더에 인스톨 됩니다.

[CommonFilesFolder]\Enterbrain\RGSS\[RTPName]
여기서 [CommonFilesFolder] 는 Windows 의 「공통 파일 폴더」의 장소,[RTPName] 는 RTP 의 등록명입니다. 실제로는 다음과 같은 패스명이 됩니다.
C:\Program Files\Common Files\Enterbrain\RGSS\Standard

RTP 의 인스톨러(installer)는, 레지스트리 키 "HKEY_LOCAL_MACHINE\SOFTWARE\Enterbrain\RGSS\RTP" 에 캐릭터 라인값 (이름은 RTP 의 등록명)(을)를 작성해, 그 값으로서 패스명을 설정합니다. 이 키에 설정되어 있는 캐릭터 라인이, RGSS 로부터 RTP 로서 인식되게 됩니다.

암호화 어카이브(archive)

암호화 어카이브(archive)는, 게임의 내용을 타인에게 해석, 개조 되기 어렵고 하기 위한 기구입니다. 통상 Game.rgssad 라는 이름의 파일로, 이것에는 모든 데이터 파일과 화상 파일이 포함되어 있습니다 (음성 파일은 포함되지 않습니다) . 트크르? [게임 데이터의 압축] 을 할 때 [암호화 어카이브(archive)를 작성한다] 체크 박스에 체크를 넣는 것으로 작성 할 수 있습니다.

암호화 어카이브(archive)내에 있는 파일은, 편입 게임 라이브러리의 이하의 메소드에 두고, 게임 폴더에 존재하는 것과 똑같이 액세스 하는 것이 할 수 있습니다.

load_data ,Bitmap.new ,Graphics.transition

게임 폴더에 암호화 어카이브(archive)가 존재한다 경우,Game.ini 의 Sctipts 로 정의 되는 스크립트 데이터 (통상 Data\Scripts.rxdata)는 반드시 어카이브(archive)내로부터 읽어내집니다. 이것은, 외부의 스크립트에 의해 어카이브(archive)내의 파일이 읽어내져 끝내는 것을 방지 하기 위한 제한입니다.

기능의 성질상, 암호화 어카이브(archive)의 내부 포맷은 공개되지 않습니다. 이것을 해석하는 것은 사양 주세요.

그 외

문자 코드

RGSS 의 처리하는 문자 코드는 UTF-8 입니다. UTF-8 라는 것은, Unicode (온 세상의 문자 (을)를 표현 가능하게 하는 문자 코드)의 표기 방법의 일종입니다.

Ruby 의 편입 변수 $KCODE (이 레퍼런스에서는 해설하지 않습니다)는, 미리 'UTF8'에 설정되어 있습니다. 트크르의 출력 하는 스크립트 데이터나, 그 외의 캐릭터 라인 데이터는 모두 UTF-8 로 되어 있기 (위해)때문에, 문자 코드의 차이를 완전히 걱정하지 않고 이용할 수가 있습니다.

다만, Unicode 에 대응하고 있지 않은 Windows 98 / Me 에서의 동작을 보장 째, Unicode 문자를 게임중에 사용하는 것은 추천 되지 않습니다.

나메라들인가 모드

RGSS 의 게임은 초간 20 프레임에서의 동작이 표준입니다만, 게임의 프롭퍼티 (으)로 [나메라들인가 모드] 에 체크를 넣으면(자), 초간 40 프레임으로 동작 시키는 것이 할 수 있도록 되어 있습니다. 이 때문에 [나메라들인가 모드] 의 설정에 관계없이, 스크립트는 내부적으로는 초간 40 프레임으로 동작하고 있습니다. 트크르 설정되고 웨이트 등의 값은, 많은 경우 2 배로 해 다루어지고 있기로 주의해 관 차이.

frame rate는 Graphics.frame_rate 로 변경한다 일을 할 수 있습니다.

프롭퍼티

게임 라이브러리의 해설에 두고 「프롭퍼티」 (이)라고 하는 용어가 사용되어 있습니다. 이것은 Ruby 의 언어 사양에 있는 개념은 아니고, RGSS 독자적인 용어입니다.

예를 들어 스프라이트의 X 좌표 (Sprite#x )는, 다음과 같이 취득, 설정이 가능합니다.

x = sprite1.x         # 취득
sprite2.x = x + 32    # 설정

이 x 와 같이, 대입 연산자를 사용해 취득 (read)과 설정 (기입)의 양쪽 모두가 할 수 있도록 정의 되어 있는 메소드를, 편의적이게 프롭퍼티라고 부르고 있습니다.


표준 라이브러리

  • 편입 함수
  • 편입 변수
  • 편입 클래스
    • Object
      • Array
      • Exception
      • FalseClass
      • Hash
      • IO
        • File
      • MatchData
      • Module
        • Class
      • NilClass
      • Numeric
        • Integer
          • Bignum
          • Fixnum
        • Float
      • Proc
      • Range
      • Regexp
      • String
      • Symbol
      • Time
      • TrueClass
  • 편입 모듈
    • Comparable
    • Enumerable
    • Errno
    • FileTest
    • GC
    • Kernel
    • Marshal
    • Math
  • 편입 예외 클래스


편입 함수

Ruby 에는 엄밀한 의미에서는 함수는 없습니다만,Kernel 모듈로 정의 되어 있는 메소드는 (어디에서라도 함수 형식으로 호출할 수 있으므로) 발설어에 있어서의 함수와 같이 사용할 수 있습니다. 이러한 메소드를 재정의 한다 경우는 다른 장소에의 영향을 생각할 필요가 있습니다.

block_given?

메소드에 블록이 주어지고 있을 때는 진, 그렇지 않을 때에 가짜를 반환 . 이테레이타를 참조해 주세요.

catch(tag) {|tag| .... }

블록을 실행해 그 값을 돌려줍니다. 블록의 실행중에 tag 와 같은 이름의 throw 를 했다 경우는, 그 throw 의 제２ 인수를 반환값이라고 합니다.

네스트 한 루프는 break 에 의해 단번에 발 찰 수 없습니다. 이러한 경우에 catch 를 사용합니다.

catch(:loop1) {
  for i in 1..2
    for j in 1..2
      throw :loop1, j
    end
  end
}
eval(expr)

캐릭터 라인 expr 를 Ruby 프로그램으로서 평가해 그 결과를 돌려줍니다.

exit

Ruby 프로그램의 실행을 종료합니다.

exit 는 예외 SystemExit 를 발생 시키고 것에 의해 프로그램의 실행을 종료 시키기 때문에, 필요에 따라서 rescue 절로 포착 할 수가 있습니다.

loop { ... }

(중단되지 않는 한) 영원히 블록의 평가를 반복합니다.

open(file[, mode])
open(file[, mode]) {|io| ... }

file 를 오픈 해,File 오브젝트를 돌려줍니다. mode 는, 이하의 캐릭터 라인을 지정합니다. 생략시는 "r" 가 지정된 것 (으)로 간주합니다.

  • "r": 파일을 읽어들여 모드로 오픈 합니다.
  • "w": 파일을 기입해 모드로 오픈 합니다. 오픈시에 파일이 벌써 존재하고 있으면 그 내용을 하늘로 합니다.
  • "a": 파일을 기입해 모드로 오픈 합니다. 출력은항상파일의 말미에 추가됩니다.

"+" 가 있으면, 파일은 읽기 쓰기량용 모드 (RDWR)로 오프 됩니다.

  • "r+": 파일의 읽기 쓰기 위치는 선두에 세트 됩니다.
  • "w+": "r+" 와 같습니다만, 오픈시에 파일이 벌써 존재하고 있으면 그 내용을 하늘로 합니다.
  • "a+": "r+" 와 같습니다만, 오픈시에 파일이 벌써 존재하고 있으면 읽기 쓰기 위치가 파일의 말미에 세트 됩니다.

이러한 머지않아에 대해서도 "b" 플래그를 ("r+b" 와 같이) 붙일 수가 있습니다. 이 경우, 바이너리 모드로 오픈 합니다.

open 가 블록과 함께 불려 갔을 때, open 는 파일을 오픈 해 블록을 실행해, 블록의 실행이 종료하면(자) 파일 (을)를 클로우즈 합니다. 이 경우는 블록을 평가한 결과를 돌려줍니다. , 이하와 같이 됩니다.

open(path, mode) do |f|
   ...
end

# 상기와 거의 같은 코드
f = open(path, mode)
begin
   ...
ensure
  f.close
end
p(obj, [obj2, ...])

obj 를 인간에게 읽기 쉬운 형태로 출력 합니다. 이하의 코드와 같습니다 (Object#inspect 참조) .

print obj.inspect, "\n", obj2.inspect, "\n", ...

Ruby 에서는 통상의 출력처는 표준 출력입니다만, RGSS 에서는 이 메소드를 재정의 해, Windows 의 메시지 박스에 출력 하도록(듯이) 변경하고 있습니다.

nil 를 돌려줍니다.

print(arg[, ...])

인수를 순서에 출력 합니다. 캐릭터 라인 이외의 오브젝트가 인수로서 주어질 경우에는, 해당 오브젝트를 to_s 메소드에 의해 캐릭터 라인에 변환 하고 나서 출력 합니다. 다만, nil 에 대해서는 캐릭터 라인 "nil" 를 출력 합니다.

Ruby 에서는 통상의 출력처는 표준 출력입니다만, RGSS 에서는 이 메소드를 재정의 해, Windows 의 메시지 박스에 출력 하도록(듯이) 변경하고 있습니다.

nil 를 돌려줍니다.

raise
raise(message)
raise(exception)
raise(error_type, message)

예외를 발생 시킵니다. raise 를 참조해 주세요.

rand(max)

0 이상 max 미만의 범위의 정수의 random number를 발생합니다. 아직 srand 가 불리고 있지 않으면 자동적으로 srand 를 호출합니다.

max 에 nil 또는 0 을 지정하면(자) 0 이상 1 말 만의 실수값 Float 로 random number를 줍니다.

sprintf(format[, arg[, ...]])

format 캐릭터 라인을 C 언어의 sprintf 와 같은 에 해석해, 인수를 포맷 한 캐릭터 라인을 돌려줍니다.

자세한 것은 sprintf 포맷을 참조해 주세요.

srand([seed])

rand 의 random number의 종을 설정해, 낡은 초기값을 반 합니다. 초기값이 생략 되었을 때에는 현재의 시간 등을 종으로 합니다.

throw(tag[, value])

같은 tag 를 지정한 catch 의 블록의 마지막까지 (메소드를 넘어가) 탈출합니다. 만약 같은 tag 로 기다리고 있는 catch 가 존재하지 않는 경우는 NameError 로 thread가 종료합니다. tag 는 캐릭터 라인 또는 심볼입니다. value 는 catch 의 반환값이 됩니다.


편입 변수

편입 변수는 글로벌 변수의 일종입니다만, 그 값은 글로벌과는 한정하지 않습니다.

이하, 변수의 값의 스코프에서 크게 나누어 몇개의 편입 변수를 열거합니다.

로컬 스코프

$~

현재의 스코프에서 마지막에 성공한 매치에 관한 정보 (MatchData 오브젝트) . 이것을 설정하면(자) $& 나 $1 ... $9 등의 값이 변화합니다.

Regexp.last_match 와 같다.

$&

현재의 스코프에서 마지막에 성공한 정규 표현의 패턴 매치로 매치 했다 캐릭터 라인. 마지막 매치가 실패하고 있을 경우에는 nil .

Regexp.last_match [0] 과 같다.

$1
$2
$3 ...

마지막에 성공한 패턴 매치로 n 번째의 괄호에 매치 한 값이 격 납 됩니다. 해당하는 괄호가 없으면 nil 가 들어가 있습니다.

Regexp.last_match [1], Regexp.last_match [2], ... (와)과 같다.

글로벌 스코프

$!

최근의 예외에 관한 정보. raise 에 의해 설정 .

$DEBUG

디버그 모드 플래그. RGSS 는 테스트 플레이시에 이 플래그를 세트 합니다.

Ruby 의 디버그 모드에서는 예외 발생시의 거동 등에 몇개의 차이가 있습니다 하지만, RGSS 레벨로 그것을 의식할 필요는 없습니다.


편입 클래스

  • Object
    • Array
    • Exception
    • FalseClass
    • Hash
    • IO
      • File
    • MatchData
    • Module
      • Class
    • NilClass
    • Numeric
      • Integer
        • Bignum
        • Fixnum
      • Float
    • Proc
    • Range
    • Regexp
    • String
    • Symbol
    • Time
    • TrueClass


편입 모듈

  • Comparable
  • Enumerable
  • Errno
  • FileTest
  • GC
  • Kernel
  • Marshal
  • Math


편입 예외 클래스

Exception
모든 예외의 조상의 클래스입니다.
NoMemoryError
너무 큰 메모리를 한 번에 확보하려고 했을 때에 발생합니다.
ScriptError
스크립트의 에러를 나타내는 예외입니다.
NotImplementedError
실장되어 있지 않은 기능이 불려 갔을 때에 발생합니다.
SyntaxError
문법 에러가 있었을 때에 발생합니다.
StandardError
이 예외 클래스와 그 서브 클래스는,rescue 절로 곳간 스를 생략 했을 때에도 포착 할 수 있습니다.
ArgumentError
인수의 수가 맞고 있지 않을 때나, 값이 올바르지 않을 때에 발생합니다.
IndexError
첨자가 범위외 때에 발생합니다.
IOError
I/O 로 에러가 일어났을 때에 발생합니다.
EOFError
EOF (End Of File)에 이르렀을 때에 발생합니다.
LocalJumpError
제어 구조의 점프처가 발견되지 않을 때에 발생합니다.
NameError
미정도리의 로컬 변수나 정수를 사용했을 때에 발생합니다.
NoMethodError
정의되어 있지 않은 메소드의 호출을 했을 때에 발생합니다.
RangeError
범위에 관한 예외. 범위외의 수치 변환 (Bignum (으)로부터 Fixnum 에의 변환) 등에 의해 발생합니다.
FloatDomainError
정부의 무한대나 NaN (Not a Number)를 Bignum 로 변환하려고 하거나 NaN 와의 비교를 했을 때에 발생합니다.
RegexpError
정규 표현의 컴파일에 실패할 경우에 발생합니다.
RuntimeError
실행시 예외입니다. 예외를 지정하지 않는 raise 의 호출은 이 예외를 발생 시킵니다.
SystemCallError
시스템 콜이 실패했을 때에 발생하는 예외입니다.
Errno::EXXX
각 errno 에 대응하는 예외 클래스입니다. 실제의 클래스명에 대해서는 Errno 모듈을 참조해 주세요.
SystemStackError
스택레벨이 깊어너무 졌을 때에 발생합니다.
TypeError
부정한 형태를 사용했을 때에 발생합니다.
ZeroDivisionError
0 으로 제산을 했을 때에 발생합니다.
SystemExit
프로그램을 종료 시킵니다. exit 를 참조해 주세요.
fatal
치명적인 에러 (내부적인 에러) 때에 발생합니다. 이 오브젝트는 통상의 방법에서는 보이지 않습니다.


게임 라이브러리

  • RGSS 편입함수
  • RGSS 편입클래스
    • Bitmap
    • Color
    • Font
    • Plane
    • Rect
    • Sprite
    • Table
    • Tilemap
    • Tone
    • Viewport
    • Window
    • RGSSError
    • RPG::Sprite
    • RPG::Weather
  • RGSS 모듈
    • Audio
    • Graphics
    • Input
    • RPG
    • RPG::Cache
  • RPGXP 데이터구조
    • RPG::Map
    • RPG::MapInfo
    • RPG::Event
    • RPG::Event::Page
    • RPG::Event::Page::Condition
    • RPG::Event::Page::Graphic
    • RPG::EventCommand
    • RPG::MoveRoute
    • RPG::MoveCommand
    • RPG::Actor
    • RPG::Class
    • RPG::Class::Learning
    • RPG::Skill
    • RPG::Item
    • RPG::Weapon
    • RPG::Armor
    • RPG::Enemy
    • RPG::Enemy::Action
    • RPG::Troop
    • RPG::Troop::Member
    • RPG::Troop::Page
    • RPG::Troop::Page::Condition
    • RPG::State
    • RPG::Animation
    • RPG::Animation::Frame
    • RPG::Animation::Timing
    • RPG::Tileset
    • RPG::CommonEvent
    • RPG::System
    • RPG::System::Words
    • RPG::System::TestBattler
    • RPG::AudioFile


RGSS 편입 함수

RGSS 에는 이하의 편입 함수가 정의 되어 있습니다.

load_data(filename)

filename 로 지정되는 데이터 파일을 읽어들여, 오브젝트를 복원합니다.

$data_actors = load_data("Data/Actors.rxdata")
이 함수는 기본적으로
File.open(filename, "rb") { |f|
  obj = Marshal.load(f)
}

(와)과 같습니다만,암호화 어카이브(archive)의 내부에 있는 파일을 읽어들일 수가 있는 점이 다릅니다.

save_data(obj, filename)

오브젝트 obj 를 filename 로 지정된다 데이터 파일에 기입합니다.

save_data($data_actors, "Data/Actors.rxdata")
이 함수는
File.open(filename, "wb") { |f|
  Marshal.dump(obj, f)
}

(와)과 같습니다. 게임중에서 사용하는 것은 우선 없습니다 하지만,load_data 와 대가 되는 함수로서 정의 되어 있습니다.

또, 편입 함수 p 및 print 가, 메시지 박스에의 출력용으로서 재정의 되어 있습니다.


RGSS 편입 클래스

  • Bitmap
  • Color
  • Font
  • Plane
  • Rect
  • Sprite
  • Table
  • Tilemap
  • Tone
  • Viewport
  • Window
  • RGSSError
  • RPG::Sprite
  • RPG::Weather


RGSS 편입 모듈

  • Audio
  • Graphics
  • Input
  • RPG
  • RPG::Cache


RPGXP 데이터구조

  • RPG::Map
  • RPG::MapInfo
  • RPG::Event
  • RPG::Event::Page
  • RPG::Event::Page::Condition
  • RPG::Event::Page::Graphic
  • RPG::EventCommand
  • RPG::MoveRoute
  • RPG::MoveCommand
  • RPG::Actor
  • RPG::Class
  • RPG::Class::Learning
  • RPG::Skill
  • RPG::Item
  • RPG::Weapon
  • RPG::Armor
  • RPG::Enemy
  • RPG::Enemy::Action
  • RPG::Troop
  • RPG::Troop::Member
  • RPG::Troop::Page
  • RPG::Troop::Page::Condition
  • RPG::State
  • RPG::Animation
  • RPG::Animation::Frame
  • RPG::Animation::Timing
  • RPG::Tileset
  • RPG::CommonEvent
  • RPG::System
  • RPG::System::Words
  • RPG::System::TestBattler
  • RPG::AudioFile


부록

  • 정규 표현
  • sprintf 포맷


정규 표현

  • 후방 참조
  • 문자 클래스

이하는, ruby 가 서포트하는 정규 표현 기호 (메타 캐릭터)의 일람입니다.

  • \ (을)를 따르지 않는 영숫자는 메타 캐릭터는 아니다
  • \ (을)를 따르는 기호는 메타 캐릭터는 아니다

(이)라고 하는 규칙이 있습니다.

  • ^

    줄머리. 캐릭터 라인의 선두나 개행 문자의 직후의 위치에 매치 합니다.

  • $

    줄 끝. 캐릭터 라인의 말미나 개행 문자의 직전의 위치에 매치 합니다.

    p "\n".gsub(/$/, "o")     # => "o\no"

  • .

    개행을 제외하는 임의의 1 문자 (멀티 바이트 문자의 경우, 1 바이트는 아니게 그 1 문자)에 매치 합니다. 정규 표현 옵션 m (복수행 모 드. 정규 표현 리터럴을 참조)에서는, 개행을 포함한 임의의 1 문자에 매치 합니다.

    p /. /e =~ " 아 "[0,1]     # => nil

  • \w

    영숫자. [0-9A-Za-z_] 와 같다.

    일본어의 이른바 전각 문자에도 매치 합니다.

  • \W

    비영숫자. \w 이외의 한 글자.

  • \s

    공백 문자. [ \t\n\r\f] 와 같다.

  • \S

    비공백 문자. [ \t\n\r\f] 이외의 한 글자.

  • \d

    숫자. [0-9] (와)과 같다.

  • \D

    비숫자.

  • \A

    캐릭터 라인 선두. ^ 과는 달리 개행의 유무에는 영향을 주지 않습니다.

  • \Z

    캐릭터 라인 말미. 캐릭터 라인이 개행으로 끝나고 있으면 그 개행의 직전에도 매치 합니다.

    p "\n".gsub(/\Z/, "o")     # => "o\no"

  • \z

    캐릭터 라인 말미. $ (이)나 \Z 과는 달리 개행의 유무에는 영향을 주지 않습니다.

  • \b

    문자 클래스 지정의 밖에서는 말경계 (\w 와 \W 의 사이에 매치) . 문자 클래스 지정내에서는 백 스페이스 (0x08) .

  • \B

    비어 경계.

  • \G

    전번 매치 한 곳 (의 직후)에 매치 (폭을 가지지 않는다) . 첫회만은 선두 위치에 매치 합니다 (\A 와 같다) .

    scan (이)나,gsub 로 사용 할 수 있습니다. 전번 매치 한 장소의 뒤부터 매치 시키고 싶은 경우에 사용합니다.

    # 선두로부터 3 자리수씩의 수치를 (수치가 계속되는 한) 꺼낸다.
str = "123456 789"
str.scan(/\G\d\d\d/) {|m| p m }

  • [ ]

    문자 클래스 지정. 문자 클래스를 참조.

  • *

    직전의 표현의 0 회 이상의 반복. 가능한 한 길고 매치 하려고 한다.

  • *?

    양지정자 (quantifiers) . 직전의 표현의 0 회 이상의 반복 (최단 일치) .

  • +

    양지정자 (quantifiers) . 직전의 표현의 1 회 이상의 반복.

  • +?

    양지정자 (quantifiers) . 직전의 표현의 1 회 이상의 반복 (최단 일치) .

  • {m}
  • {m,}

  • {m, n}

    범위 지정융통 돌려주어 제어 (interval quantifier) . 각각 직전의 정규 표현의

    • m 회
    • m 회이상
    • m 회이상, 최대 n 회

    의 반복. {, n} 나,{,} 에 대한 매치는 반드시 실패한다.

    str = "foofoofoo"
p str[/(foo){1}/]   # => "foo"
p str[/(foo){2,}/]  # => "foofoofoo"
p str[/(foo){1,2}/] # => "foofoo"

    정규 표현 ?, *, + (은)는 각각 {0,1}, {0,} {1,} 과 같습니다.

  • {m}?
  • {m,}?

  • {m, n}?

    범위 지정융통 돌려주어 제어 (interval quantifier) . 각각 직전의 정규 표현의

    • m 회
    • m 회이상
    • m 회이상, 최대 n 회

    의 반복 (최단 일치) .

  • ?

    양지정자 (quantifiers) . 직전의 정규 표현의 0 또는 1 회의 반복.

  • ??

    양지정자 (quantifiers) . 직전의 정규 표현의 0 또는 1 회의 반복 (최단 일치) .

  • |

    선택 (alternative) .

  • ( )

    정규 표현의 그룹화. 괄호안의 정규 표현에 매치 한 캐릭터 라인은 후방 참조 (을)를 위해서(때문에) 기억됩니다.

  • \1, \2 ... \n

    후방 참조 (back reference) . 후방 참조를 참조.

  • (? # )

    코멘트. 괄호안의 임의의 캐릭터 라인은 무시됩니다.

  • (? : )

    후방 참조를 수반하지 않는 그룹화. 즉,\1, \2 (혹은, $1 , $2 ) 등의 대상으로는 되지 않고, 단순한 그룹화의 용도로 사용합니다.

    /(abc)/ =~ "abc"
p $1
=> "abc"

/(? :abc)/ =~ "abc"
p $1
=> nil

  • (? = )

    앞 읽어 (lookahead) . 패턴에 의한 위치 지정 (폭을 가지지 않는다) .

    (? =re1) re2

    (이)라고 하는 표현은, re1 와 re2 양쪽 모두에 매치 하는 것에 매치 하는 정규 표현으로 .

    re1(? =re2)

    (이)라고 하는 표현은, 후에 re2 와 매치 하는 캐릭터 라인이 계속되는, 정규 표현 re1 입니다.

    p /foo(? =bar)/ =~ "foobar"      # => 0
p $&    # => "foo"   (bar 의 부분의 정보는 없다)

  • (?! )

    부정처 읽어 (negative lookahead) . 패턴의 부정적으로 밤위치 지정 (폭을 가지지 않는다) .

    (?!re1) re2

    (이)라고 하는 표현은, re1 에 매치 하지 않지만 re2 에는 매치 하는 정규 표현입니다.

    # 000 을 제외하는 3 자리수의 숫자
re = /(?!000) \d\d\d/
p re =~ "000"   # => nil
p re =~ "012"   # => 0
p re =~ "123"   # => 0

# C 언어의 식별자 ([A-Za-z_] 로 시작되어,[0-9A-Za-z_] 가 계속되는 캐릭터 라인)
/\b(?![0-9]) \w+\b/

후방 참조

정규 표현 \1 \2 ... \n 는, 후방 참조입니다. n 번째의 괄호 (정규 표현 ( ) 그룹)에 매치 한 캐릭터 라인에 매치 합니다.

/((foo) bar)\1\2/

(은)는,

/((foo) bar) foobarfoo/

(와)과 같습니다.

례:

re = /(foo|bar|baz)\1/
p re =~ 'foofoo'   # => 0
p re =~ 'barbar'   # => 0
p re =~ 'bazbaz'   # => 0
p re =~ 'foobar'   # => nil

대응하는 괄호는, 후방 참조보다 좌측에 없으면 안됩니다.

대응하는 괄호안에 후방 참조가 있으면 항상 매치에 실패합니다. 또, 대응하는 괄호가 없는 1 자리수의 후방 참조도 항상 매치에 실패합니다.

p /(\1)/ =~ "foofoofoo" # => nil
p /(foo)\2/ =~ "foo\2"  # => nil

2 자리수 이상의 후방 참조도 지정 할 수 있습니다만,백 slash 기법의 \nnn (8 진 nnn 에 대응하는 문자)와 혼동 하지 않는다 같게 주의할 필요가 있습니다. 수치가 1 자리수라면 항상 후방 참조입니다. 2 자리수 이상의 지정에서는, 대응하는 괄호가 없으면 8 진코드로 간주해집니다.

또, 반대로 정규 표현중에 8 진으로 1 자리수의 코드를 기술하기에는 \01 등 0 으로 시작할 필요가 있습니다 (\0 라고 하는 후방 참조는 없기 때문에 애매하게 되지 않습니다) .

p   /\1/ =~ "\1"   # => nil     # 대응하는 괄호가 없는 후방 참조
p  /\01/ =~ "\1"   # => 0       8 진코드
p  /\11/ =~ "\11"  # => 0       8 진코드

# 8 진코드 (대응하는 괄호가 없기 때문에)
p /(. )\10/ =~ "1\10" # => 0

# 후방 참조 (대응하는 괄호가 있으므로)
p /((((((((((. ))))))))))\10/ =~ "aa"  # => 0

# 8 진코드 (다만,"\0" + "8" 으로 되어 있다
# \08 (이)라고 하는 8 진코드는 없기 때문에)
p /(. )\08/ =~ "1\0008" # => 0

# 후방 참조에 이어 숫자를 쓰고 싶으면 괄호로 그룹화 해 단락짓는다
# 등 할 수밖에 없다.
p /(. )(\1)1/ =~ "111"   # => 0

문자 클래스

정규 표현 [ ] 은, 문자 클래스 지정입니다. [] 안에 열거하고 싶은 차이인가의 1 문자에 매치 합니다.

예를 들어,/[abc]/ 는,"a", "b", "c" 어느쪽이든 한 글자에 매치 합니다. ASCII 코드순서로 연속하는 캐릭터 라인은 사이에 '-'를 두어 /[a-c]/ 와 같이 책 구(일)것도 할 수 있습니다. 또, 선두가 '^'이면 지정한 문자 이외의 한 글자 (와)과 매치 합니다.

선두 이외로 있는 '^'는 그 문자 그것과 매치 합니다. 또, 선두, 말미 에 있는 '-'는, 그 문자 그것과 매치 합니다.

p /[a^]/ =~ "^"   # => 0
p /[-a]/ =~ "-"   # => 0
p /[a-]/ =~ "-"   # => 0
p /[-]/ =~ "-"   # => 0

하늘의 문자 클래스는 에러가 됩니다.

p /[]/ =~ ""
p /[^]/ =~ "^"
# => invalid regular expression; empty character class: /[^]/

선두 (혹은 부정의 것 "^" 의 직후)에 있는 "]" 은, 문자 클래스의 마지막은 아니게 "]" 그것을 나타냅니다. 이러한 "]" 은, backslash 도망을 하는 것이 추천 됩니다.

p /[]]/ =~ "]"       # => 0
p /[^]]/ =~ "]"      # => nil

"^", "-", "]" 그리고 "\\"(backslash) (은)는, backslash로 도망해, 그 문자에 매치 시킬 수가 있습니다.

p /[\^]/ =~ "^"   # => 0
p /[\-]/ =~ "-"   # => 0
p /[\]]/ =~ "]"   # => 0
p /[\\]/ =~ "\\"  # => 0

[] 안에는 캐릭터 라인과 같은backslash 기법과 정규 표현 \w, \W, \s, \S, \d, \D (이것들은 문자 클래스의 약기법입니다)가 사용 할 수 있습니다.

부정적으로 밤이하와 같은 문자 클래스는 개행 문자에도 매치 하기로 주의해 주세요 (정규 표현 \W, \D 도 같이) .

p /[^a-z]/ =~ "\n"    # => 0


장면 클래스

sprintf 포맷

Ruby 의 sprintf 포맷은 기본적으로 C 언어의 것과 같습니다. 다만, short (이)나 long 등의 C 특유의 형태에 대한 수식자가 없는 (일)것, 2 진수의 지시자 (%b)가 존재한다 일, sprintf 의 모든 방언을 서포트하고 있지 않은 (일)것 (': 3 자리수 단락) 등의 차이가 있습니다.

ruby 의 sprintf 포맷에 관한 완전한 설명은 이하와 같습니다.

이하는 sprintf 포맷의 서식입니다. [] (으)로 둘러싸인 부분은 생략가능 능인 것을 나타내고 있습니다.

%[플래그][폭][. 정밀도]지시자

'%'자신을 출력 하기에는 '%%'라고 합니다.

이하 각각의 요소에 관해서 설명합니다.

플래그

플래그에는 '#', '+', ' ' (스페이스), '-', '0'의 5 종류가 있습니다.

#

2 진, 8 진, 16 진의 지시자 ('b', 'o', 'x', 'X')에서는 각각 프레픽스로서 "0b", "0", "0x", "0X" 를 부가합니다.

p sprintf("%#b", 10) # => "0b1010"
p sprintf("%#o", 10) # => "012"
p sprintf("%#x", 10) # => "0xa"
p sprintf("%#X", 10) # => "0XA"

부동 소수점수(실수) ('f', 'e', 'E', 'g', 'G')에 대해서는 반드시 출력에 ". " 를 붙입니다.

p sprintf("%. 0f", 10) # => "10"
p sprintf("%#. 0f", 10) # => "10. "
p sprintf("%. 0e", 10) # => "1e+01"
p sprintf("%#. 0e", 10) # => "1.e+01"

또 'g', 'G'에서는 상기에 가세해 말미의 여분의 0 이 남습니다.

p sprintf("%. 05g", 10) # => "10"
p sprintf("%#. 05g", 10) # => "10. 000"
+

출력 캐릭터 라인을 부호 첨부로 합니다. 특히 정의 수에서는 '+'가 부가됩니다. 수치의 지시자 ('d', 'i', 'b', 'o', 'x', 'X', 'u', 'f', 'e', 'E', 'g', 'G') 에 대해서만 의미를 가집니다. 또, 특히 'b', 'o', 'x', 'X', 'u'에 대해서는, 음수에 대해서 '-' (을)를 부가하는 것을 나타냅니다.

p sprintf("%d", 1)   # => "1"
p sprintf("%+d", 1)  # => "+1"

p sprintf("%x", -1)  # => "..f"  # ".." 는 무한하게 f 가 계속되는 것을 나타내고 있다
p sprintf("%+x", -1) # => "-1"
' ' (스페이스)

'+'와 같습니다만 정의 부호 '+'대신에 공백을 이용합니다. 수치의 지시자 ('d', 'i', 'b', 'o', 'x', 'X', 'u', 'f', 'e', 'E', 'g', 'G') 에 대해서만 의미를 가집니다.

p sprintf("%d", 1)   # => "1"
p sprintf("%+d", 1)  # => "+1"
p sprintf("% d", 1)  # => " 1"

p sprintf("%x", -1)  # => "..f"
p sprintf("% x", 1)  # => " 1"
p sprintf("% x", -1) # => "-1"
-

출력을 왼쪽 가득 채우기로 합니다. 「폭」의 지정이 없으면 의미가 없습니다.

0

출력이 right justify의 경우에 남은 부분에 공백 대신에 '0'를 채웁니다.

수치의 지시자 ('d', 'i', 'b', 'o', 'x', 'X', 'u', 'f', 'g', 'G')에 대해 만 의미를 가집니다 ('e', 'E'에는 의미가 없다)

p sprintf("%010d", 10)
# => "0000000010"

'#'와 함께 지정할 경우의 출력은 이하와 같이 됩니다.

p sprintf("%#010x", 10)  # => "0x0000000a"
p sprintf("%#010o", 10)  # => "0000000012"
p sprintf("%#010b", 10)  # => "0b00001010"

이것은, 이하와 같습니다.

p sprintf("%#10. 8x", 10) # => "0x0000000a"
p sprintf("%#10. 9o", 10) # => "0000000012"
p sprintf("%#10. 8b", 10) # => "0b00001010"

통상은, 이하와 같이 됩니다.

p sprintf("%#10x", 10)   # => "       0xa"
p sprintf("%#10o", 10)   # => "       012"
p sprintf("%#10b", 10)   # => "    0b1010"

폭

0 이외의 숫자로 시작되는 숫자열은 폭지정이 됩니다. 폭은 생성 캐릭터 라인의 길이를 시 합니다. 후술의 「정밀도」의 값에 의하지 않고 이 폭분이다 의 캐릭터 라인이 생성됩니다.

폭의 지정은 「플래그」로 부여되는 " ", "+", "-", "0b", "0", "0x", "0X" 의 길이도 고려됩니다.

p sprintf("%#05x", 10) # => "0x00a"

폭은 「최저한 필요한 폭」의 지정이 됩니다. 결과의 캐릭터 라인이 지정한 폭을 초과 경우는 폭의 지정은 무효가 됩니다.

폭으로서 '*'를 지정하면(자) 폭의 값을 인수로부터 얻게 됩니다.

p sprintf("%10s", "foo")    # => "       foo"
p sprintf("%*s", 10, "foo") # => "       foo"

정밀도

". " 의 뒤에 잇는 숫자열은 정밀도를 나타냅니다 (". " 마시는 것의 경우 ". 0" 와 같습니다) . 정밀도는 정수의 지시자 ('d', 'i', 'b', 'o', 'x', 'X', 'u') 에 대해서는, 수치열부분의 길이를 의미합니다.

p sprintf("%10. 5d", 1)  # => "     00001"
p sprintf("%#10. 5x", 1) # => "   0x00001"
p sprintf("%+10. 5x", 1) # => "    +00001"

부동 소수점수(실수)의 지시자 ('f') 에 대해서는 코카즈부의 자리수를 의미합니다.

p sprintf("%10. 5f", 1)   # => "   1.00000"
p sprintf("%10. 5f", 10)  # => "  10.00000"

부동 소수점수(실수)의 지시자 ('e', 'E', 'g', 'G') 에 대해서는 유효 자리수를 의미합니다.

p sprintf("%10. 5e", 1)   # => "1. 00000e+00"
p sprintf("%10. 5e", 10)  # => "1. 00000e+01"
p sprintf("%10. 5g",  10)  # => "        10"
p sprintf("%#10. 5G", 10)  # => "    10.000"

캐릭터 라인의 지시자 ('s', 'p') 에 대해서는 인수의 캐릭터 라인 중 지정한 수를 넘는 분을 잘라서 버립니다. 폭과 정밀도를 같은 값으로 하면, 어떠한 인수에 대해서도 그 길이만의 출력을 하게 됩니다.

p sprintf("%10. 2s", "foo")  # => "        fo"

p sprintf("%5. 5s", "foo")     # => # => "  foo"
p sprintf("%5. 5s", "foobar")  # => # => "fooba"

정밀도로서 '*'를 지정하면(자) 정밀도의 값을 인수로부터 얻게 됩니다.

p sprintf("%. 5s", "foobar")    # => "fooba"
p sprintf("%. *s", 5, "foobar") # => "fooba"

지시자

지시자는 인수의 형태의 해석을 나타냅니다. 지시자를 생략 할 수 없습니다. 지시자에게는 크게 나누어

  • 캐릭터 라인을 나타내는 지시자: 'c', 's', 'p'
  • 정수를 나타내는 지시자: 'd', 'i', 'u', 'b', 'o', 'x', 'X',
  • 부동 소수점수(실수)를 나타내는 지시자: 'f', 'g', 'e', 'E', 'G'

(이)가 있습니다.

c

인수의 수치 (0 ? 255)를 문자 코드로 간주해 대응하는 문자를 출력 합니다. 인수가 수치, String, nil, true, false 이외의 오브젝트에서는 to_int 메소드에 의한 변환을 시도합니다.

플래그 '-'와 「폭」 의 지정만이 의미를 가집니다.

s

캐릭터 라인을 출력 합니다.

인수가 String 오브젝트가 아니면 to_s 메소드 에 의해 캐릭터 라인화한 것을 인수로서 취급합니다.

p

Object#inspect 의 결과를 출력 합니다.

p sprintf("%s", [1, 2, 3])      # => "123"
p sprintf("%p", [1, 2, 3])      # => "[1, 2, 3]"
d
i

인수의 수치를 10 진표현의 정수로서 출력 합니다.

인수가 정수가 아니면 정수에 변환됩니다.

u

인수의 수치를 부호 없음 정수로 간주해 10 진표현의 정수로서 출력 합니다.

p sprintf("%u", -1) # => "4294967295"

(은)는, p 0xffff_ffff.to_s 를 출력 하고 있습니다.

'%u'는, 인수를 고정 오랜 정수로 간주해, 부의 정수 n 에 대해서

printf("%u", n)

(은)는,

printf("%d", n & ~(-1 << n.size*8))

(와)과 같은 의미가 됩니다.

b
o
x
X

정수를 각각 2 진, 8 진, 16 진, 16 진 (대문자) 표현의 캐릭터 라인으로 출력 합니다.

'#'플래그를 지정하면 "0b", "0", "0x", "0X" (을)를 선두에 부가합니다.

'+', ' '플래그가 없는 경우, 부의 수에는 ".." 가 선두 ('#'플래그가 있으면 "0x" 등의 후)에 부가됩니다. 이것은 최상위형의 문자가 무한하게 계속되는 것을 의미해, 2 의 보수 표현으로 부의 수를 나타내고 있습니다.

p sprintf("%#b", 10)    # => "0b1010"
p sprintf("%#o", 10)    # => "012"
p sprintf("%#x", 10)    # => "0xa"

# 부의 수에 대해서 ".." 가 부가됩니다
p sprintf("%#b", -1)    # => "0b..1"
p sprintf("%#o", -1)    # => "0..7"
p sprintf("%#x", -1)    # => "0x..f"

p sprintf("%10x", -1)   # => "       ..f"
p sprintf("%-10x", -1)  # => "..f       "

# 「정밀도」를 지정할 경우, ".." 는 부가되지 않습니다
p sprintf("%. 10x", -1)  # => "ffffffffff"
f
e
E
g
G

'f'는 소수점 표현 (xxx.xxx)으로 수치를 출력 합니다.

'e'는 지수 표현 (x.xxxe+xx)으로


Bitmap

비트 맵의 클래스. 비트 맵은, 이른바 화상 그것을 나타내 .

화면에 비트 맵을 표시하기 위해서는 스프라이트 (Sprite ) 등을 사용할 필요가 있습니다.

슈퍼 클래스

  • Object

클래스 메소드

Bitmap.new(filename)

filename 로 지정한 화상 파일을 읽어들여, Bitmap 오브젝트를 생성합니다.

RGSS-RTP ,암호화 어카이브(archive)에 포함되는 파일도 자동적으로 찾습니다. 확장자(extension)는 생략 가능합니다.

Bitmap.new(width, height)

지정한 사이즈의 Bitmap 오브젝트를 생성합니다.

메소드

dispose

비트 맵을 해방합니다. 이미 해방되어 있는 경우는 아무것도 하지 않습니다.

disposed?

비트 맵이 벌써 해방되어 있는 경우에 진을 돌려줍니다.

width

비트 맵의 폭을 취득합니다.

height

비트 맵의 높이를 취득합니다.

rect

비트 맵의 구형 (Rect )을 취득합니다.

blt(x, y, src_bitmap, src_rect[, opacity])

src_bitmap 의 구형 src_rect (Rect )(으)로부터, 이 비트 맵의 좌표 (x, y)에 블록 전송을 합니다.

opacity 에는 불투명도를 0 ? 255 의 범위로 지정 할 수 있습니다.

stretch_blt(dest_rect, src_bitmap, src_rect[, opacity])

src_bitmap 의 구형 src_rect (Rect )(으)로부터, 이 비트 맵의 구형 dest_rect (Rect )에 블록 전송을 합니다.

opacity 에는 불투명도를 0 ? 255 의 범위로 지정 할 수 있습니다.

fill_rect(x, y, width, height, color)
fill_rect(rect, color)

이 비트 맵의 구형 (x, y, width, height) 또는 rect (Rect ) (을)를 color (Color )로 발라 잡습니다.

clear

비트 맵 전체를 클리어 합니다.

get_pixel(x, y)

점 (x, y)의 색 (Color ) (을)를 취득합니다.

set_pixel(x, y, color)

점 (x, y)의 색을 color (Color )에 설정합니다.

hue_change(hue)

색상을 변환합니다. hue 는 색상 (360 번계)의 변위를 지정합니다.

이 처리에는 시간이 걸립니다. 또, 변환 오차 (위해)때문에, 몇번이나 변환을 반복하면(자) 색이 잃게 됩니다.

draw_text(x, y, width, height, str[, align])
draw_text(rect, str[, align])

이 비트 맵의 구형 (x, y, width, height) 또는 rect (Rect )에 캐릭터 라인 str 를 묘화 합니다.

텍스트의 길이가 구형의 폭을 넘는 경우는, 폭을 60% 까지 자동적으로 축소해 묘화 합니다.

수평 방향은 디폴트로 왼쪽 가지런히 하고입니다만,align 에 1 을 지정하면(자) centering, 2 를 지정하면(자) 오른쪽맞춤이 됩니다. 수직 방향은 항상 centering입니다.

이 처리에는 시간이 걸리기 (위해)때문에, 1 프레임 마다 캐릭터 라인을 재묘화 할 것 같은 사용법은 추천 되지 않습니다.

text_size(str)

draw_text 메소드로 캐릭터 라인 str 를 묘화 했을 때의 구형 (Rect )(을)를 취득합니다. 다만, 이탤릭의 경우의 기울기분은 포함하지 않습니다.

프롭퍼티

font

draw_text 메소드로 캐릭터 라인의 묘화에 사용하는 폰트 (Font )입니다.


Class

Color

RGBA 칼라의 클래스. 각 요소는 부동 소수점수(실수) (Float )(으)로 관리됩니다.

슈퍼 클래스

  • Object

클래스 메소드

Color.new(red, green, blue[, alpha])

Color 오브젝트를 생성합니다. alpha 를 생략 할 경우는 255 가 됩니다.

메소드

set(red, green, blue[, alpha])

전요소를 정리해 설정합니다.

프롭퍼티

red

빨강의 값 (0 ? 255)입니다. 범위외의 값은 자동으로 수정됩니다.

green

초록의 값 (0 ? 255)입니다. 범위외의 값은 자동으로 수정됩니다.

blue

파랑의 값 (0 ? 255)입니다. 범위외의 값은 자동으로 수정됩니다.

alpha

알파의 값 (0 ? 255)입니다. 범위외의 값은 자동으로 수정됩니다.


Font

폰트의 클래스. 폰트는 Bitmap 클래스의 프롭퍼티입니다.

슈퍼 클래스

  • Object

클래스 메소드

Font.new([name[, size]])

Font 오브젝트를 생성합니다.

Font.exist? (name)

지정된 이름의 폰트가 시스템에 존재할 때 진을 돌려줍니다.

프롭퍼티

name

폰트명입니다. 초기값은 "MS P고딕 " 입니다.

캐릭터 라인의 배열을 설정하면(자), 희망순서에 복수 지정할 수가 있습니다.

font.name = ["HGP 행서체 ", "MS P고딕 "]

위의 예의 경우, 제일 희망의 "HGP 행서체 " 가 시스템에 존재 하지 않으면, 제２ 희망의 "MS P고딕 " 가 사용되는 것 (이)가 됩니다.

size

폰트의 사이즈입니다. 초기값은 22 입니다.

bold

볼드 플래그입니다. 초기값은 false 입니다.

italic

이탤릭 플래그입니다. 초기값은 false 입니다.

color

폰트의 색 (Color )입니다. 알파값도 유효합니다. 초기값은 (255,255,255,255)입니다.

클래스 프롭퍼티

default_name
default_size
default_bold
default_italic
default_color

Font 오브젝트가 새롭게 작성되었을 때에 각 요소에 설정된다 디폴트값을 변경 할 수 있습니다.

Font.default_name = "MS P내일 아침 "
Font.default_bold = true


Plane

plain의 클래스. plain는, 비트 맵의 패턴을 화면 전체에 늘어놓아 표시하는 특수한 스프라이트로, 파노라마나 fog를 표시하기 위해서 사용합니다.

슈퍼 클래스

  • Object

클래스 메소드

Plane.new([viewport])

Plane 오브젝트를 생성합니다. 필요에 따라서 뷰포트 (Viewport )(을)를 지정합니다.

메소드

dispose

plain를 해방합니다. 이미 해방되어 있는 경우는 아무것도 하지 않습니다.

disposed?

plain가 벌써 해방되어 있는 경우에 진을 돌려줍니다.

viewport

생성시에 지정된 뷰포트 (Viewport )를 취득합니다.

프롭퍼티

bitmap

plain로서 사용하는 비트 맵 (Bitmap )에의 참조입니다.

visible

plain의 가시 상태입니다. 진정한 때가시가 됩니다.

z

스프라이트의 Z 좌표입니다. 이 값이 큰 것 정도 전에 표시 . Z 좌표가 동일한 경우는, 후에 생성된 오브젝트 정도 전에 표시됩니다.

ox

plain의 전송 모토하라점의 X 좌표입니다. 이 값을 변화 시키는 것에 따라 스크롤을 합니다.

oy

plain의 전송 모토하라점의 Y 좌표입니다. 이 값을 변화 시키는 것에 따라 스크롤을 합니다.

zoom_x

plain의 X 방향 확대율입니다. 1.0 으로 등 배가 됩니다.

zoom_y

plain의 Y 방향 확대율입니다. 1.0 으로 등 배가 됩니다.

opacity

plain의 불투명도입니다. 0 ? 255 의 범위로 지정합니다. 범위외의 값은 자동으로 수정됩니다.

blend_type

plain의 합성 방법 (0:통상,1:가산,2:감산)입니다.

color

plain에 브렌드 하는 색 (Color )입니다. 브렌드의 비율에는 알파값이 사용됩니다.

tone

plain의 색조 (Tone )입니다.


Rect

사각형의 클래스.

슈퍼 클래스

  • Object

클래스 메소드

Rect.new(x, y, width, height)

Rect 오브젝트를 생성합니다.

메소드

set(x, y, width, height)

각 요소를 정리해 설정합니다.

프롭퍼티

x

사각형의 좌상구석의 X 좌표입니다.

y

사각형의 좌상구석의 Y 좌표입니다.

width

사각형의 폭입니다.

height

사각형의 높이입니다.


Window

RGSSError

RGSS 내부의 에러를 통지하는 예외 클래스.

Bitmap 클래스나 Sprite 클래스로, 벌써 해방했다 오브젝트에 액세스 하려고 했을 때 등에 발생합니다.

슈퍼 클래스

  • StandardError


RPG::Actor

엑터의 데이터 클래스.

슈퍼 클래스

  • Object

속성

id

ID.

name

이름.

class_id

클래스 ID.

initial_level

초기 레벨.

final_level

최종 레벨.

exp_basis

EXP 커브의 기본값 (10..50).

exp_inflation

EXP 커브의 증가도 (10..50).

character_name

캐릭터 그래픽의 파일명.

character_hue

캐릭터 그래픽의 색상 변화값 (0..360) .

battler_name

butler 그래픽의 파일명.

battler_hue

butler 그래픽의 색상 변화값 (0..360) .

parameters

각 레벨의 기본 파라미터를 격납 한 이차원 배열 (Table ) .

구체적으로는, parameters[kind, level] 라고 한다 형식이 되어 있습니다.

kind 는 파라미터의 종류 (0:MaxHP, 1:MaxSP,2:완력,3:손재주가 있음,4:민첩함,5:마력)입니다.

weapon_id

초기 장비로서 지정된 무기의 ID.

armor1_id

초기 장비로서 지정된 방패의 ID.

armor2_id

초기 장비로서 지정된 머리 방어용 기구의 ID.

armor3_id

초기 장비로서 지정된 신체 방어용 기구의 ID.

armor4_id

초기 장비로서 지정된 장식품의 ID.

weapon_fix

무기의 장비 고정 플래그.

armor1_fix

방패의 장비 고정 플래그.

armor2_fix

머리 방어용 기구의 장비 고정 플래그.

armor3_fix

신체 방어용 기구의 장비 고정 플래그.

armor4_fix

장식품의 장비 고정 플래그.

정의

module RPG
  class Actor
    def initialize
      @id = 0
      @name = ""
      @class_id = 1
      @initial_level = 1
      @final_level = 99
      @exp_basis = 30
      @exp_inflation = 30
      @character_name = ""
      @character_hue = 0
      @battler_name = ""
      @battler_hue = 0
      @parameters = Table.new(6,100)
      for i in 1..99
        @parameters[0, i] = 500+i*50
        @parameters[1, i] = 500+i*50
        @parameters[2, i] = 50+i*5
        @parameters[3, i] = 50+i*5
        @parameters[4, i] = 50+i*5
        @parameters[5, i] = 50+i*5
      end
      @weapon_id = 0
      @armor1_id = 0
      @armor2_id = 0
      @armor3_id = 0
      @armor4_id = 0
      @weapon_fix = false
      @armor1_fix = false
      @armor2_fix = false
      @armor3_fix = false
      @armor4_fix = false
    end
    attr_accessor :id
    attr_accessor :name
    attr_accessor :class_id
    attr_accessor :initial_level
    attr_accessor :final_level
    attr_accessor :exp_basis
    attr_accessor :exp_inflation
    attr_accessor :character_name
    attr_accessor :character_hue
    attr_accessor :battler_name
    attr_accessor :battler_hue
    attr_accessor :parameters
    attr_accessor :weapon_id
    attr_accessor :armor1_id
    attr_accessor :armor2_id
    attr_accessor :armor3_id
    attr_accessor :armor4_id
    attr_accessor :weapon_fix
    attr_accessor :armor1_fix
    attr_accessor :armor2_fix
    attr_accessor :armor3_fix
    attr_accessor :armor4_fix
  end
end


RPG::Animation

애니메이션의 데이터 클래스.

슈퍼 클래스

  • Object

속성

id

ID.

name

이름.

animation_name

애니메이션 그래픽의 파일명.

animation_hue

애니메이션 그래픽의 색상 변화값 (0..360) .

position

위치 (0:위,1:안,2:아래,3:화면) .

frame_max

프레임수.

frames

프레임의 내용. RPG::Animation::Frame 의 배열입니다.

timings

SE 와 플래시의 타이밍. RPG::Animation::Timing 의 배열입니다.

내부 클래스

  • RPG::Animation::Frame
  • RPG::Animation::Timing

정의

module RPG
  class Animation
    def initialize
      @id = 0
      @name = ""
      @animation_name = ""
      @animation_hue = 0
      @position = 1
      @frame_max = 1
      @frames = [RPG::Animation::Frame.new]
      @timings = []
    end
    attr_accessor :id
    attr_accessor :name
    attr_accessor :animation_name
    attr_accessor :animation_hue
    attr_accessor :position
    attr_accessor :frame_max
    attr_accessor :frames
    attr_accessor :timings
  end
end


RPG::Animation::Frame

애니메이션 프레임의 데이터 클래스.

슈퍼 클래스

  • Object

참조원

  • RPG::Animation

속성

cell_max

셀의 수. 프레임에 존재하는 최대의 셀 번호와 같습니다.

cell_data

셀의 내용을 격납 한 이차원 배열 (Table ) .

구체적으로는, cell_data[cell_index, data_index] 라고 한다 형식이 되어 있습니다.

data_index 의 범위는 0..7 으로, 셀의 각 정보를 나타냅니다 (0:패턴, 1:X 좌표, 2:Y 좌표,3:확대율,4:회전 각도,5:좌우 반전,6:불투명도,7:합성 방법) . 패턴은 트크르? 표시되는 번호로부터 1 을 뺀 숫자입니다. -1 (은)는 그 셀이 결번인 것을 의미합니다.

정의

module RPG
  class Animation
    class Frame
      def initialize
        @cell_max = 0
        @cell_data = Table.new(0, 0)
      end
      attr_accessor :cell_max
      attr_accessor :cell_data
    end
  end
end


RPG::Animation::Timing

애니메이션의 [SE 와 플래시의 타이밍] 의 데이터 클래스.

슈퍼 클래스

  • Object

참조원

  • RPG::Animation

속성

frame

프레임 번호. 트크르? 표시되는 번호로부터 1 을 뺀 숫자입니다.

se

SE (RPG::AudioFile ) .

flash_scope

플래시의 범위 (0:없음,1:대상,2:화면,3:대상 소거) .

flash_color

플래시의 색 (Color ) .

flash_duration

플래시의 지속 시간.

condition

조건 (0:없음,1:히트,2:미스) .

정의

module RPG
  class Animation
    class Timing
      def initialize
        @frame = 0
        @se = RPG::AudioFile.new("", 80)
        @flash_scope = 0
        @flash_color = Color.new(255,255,255,255)
        @flash_duration = 5
        @condition = 0
      end
      attr_accessor :frame
      attr_accessor :se
      attr_accessor :flash_scope
      attr_accessor :flash_color
      attr_accessor :flash_duration
      attr_accessor :condition
    end
  end
end


RPG::Armor

방어용 기구의 데이터 클래스.

슈퍼 클래스

  • Object

속성

id

ID.

name

이름.

icon_name

아이콘 그래픽의 파일명.

description

설명.

kind

종별 (0:방패,1:머리 방어용 기구,2:신체 방어용 기구,3:장식품) .

auto_state_id

오토 스테이트의 ID.

price

가격.

pdef

물리 방어.

mdef

마법 방어.

eva

회피 수정.

str_plus

완력+.

dex_plus

손재주가 있음+.

agi_plus

민첩함+.

int_plus

마력+.

guard_element_set

속성 방어. 속성 ID 의 배열입니다.

guard_state_set

스테이트 방어. 스테이트 ID 의 배열입니다.

정의

module RPG
  class Armor
    def initialize
      @id = 0
      @name = ""
      @icon_name = ""
      @description = ""
      @kind = 0
      @auto_state_id = 0
      @price = 0
      @pdef = 0
      @mdef = 0
      @eva = 0
      @str_plus = 0
      @dex_plus = 0
      @agi_plus = 0
      @int_plus = 0
      @guard_element_set = []
      @guard_state_set = []
    end
    attr_accessor :id
    attr_accessor :name
    attr_accessor :icon_name
    attr_accessor :description
    attr_accessor :kind
    attr_accessor :auto_state_id
    attr_accessor :price
    attr_accessor :pdef
    attr_accessor :mdef
    attr_accessor :eva
    attr_accessor :str_plus
    attr_accessor :dex_plus
    attr_accessor :agi_plus
    attr_accessor :int_plus
    attr_accessor :guard_element_set
    attr_accessor :guard_state_set
  end
end


RPG::AudioFile

음성 파일의 데이터 클래스. 모든 종류 (BGM, BGS, ME, SE)로 겸용합니다.

슈퍼 클래스

  • Object

참조원

  • RPG::Map
  • RPG::Skill
  • RPG::Item
  • RPG::Animation::Timing
  • RPG::System

속성

name

파일명.

volume

볼륨 (0..100) . BGM, ME 에서는 100 이, BGS, SE 에서는 80 이 표준값입니다.

pitch

피치 (50..150) . 100 이 표준값입니다.

정의

module RPG
  class AudioFile
    def initialize(name = "", volume = 100, pitch = 100)
      @name = name
      @volume = volume
      @pitch = pitch
    end
    attr_accessor :name
    attr_accessor :volume
    attr_accessor :pitch
  end
end


RPG::Class

클래스의 데이터 클래스.

슈퍼 클래스

  • Object

속성

id

ID.

name

이름.

position

위치 (0:전위,1:중웨이,2:후위) .

weapon_set

장비 할 수 있는 무기의 ID 를 격납 한 배열.

armor_set

장비 할 수 있는 방어용 기구의 ID 를 격납 한 배열.

element_ranks

속성 유효도. 속성 ID 를 첨자에 취하는 일차원 배열 (Table )(으)로, 값은 6 단계입니다 (0:A, 1:B, 2:C, 3:D, 4:E, 5:F) .

state_ranks

스테이트 유효도. 스테이트 ID 를 첨자에 취하는 일차원 배열 (Table )(으)로, 값은 6 단계입니다 (0:A, 1:B, 2:C, 3:D, 4:E, 5:F) .

learnings

습득하는 기술. RPG::Class::Learning 의 배열입니다.

내부 클래스

  • RPG::Class::Learning

정의

module RPG
  class Class
    def initialize
      @id = 0
      @name = ""
      @position = 0
      @weapon_set = []
      @armor_set = []
      @element_ranks = Table.new(1)
      @state_ranks = Table.new(1)
      @learnings = []
    end
    attr_accessor :id
    attr_accessor :name
    attr_accessor :position
    attr_accessor :weapon_set
    attr_accessor :armor_set
    attr_accessor :element_ranks
    attr_accessor :state_ranks
    attr_accessor :learnings
  end
end


RPG::Class::Learning

클래스의 [습득하는 기술] 의 데이터 클래스.

슈퍼 클래스

  • Object

참조원

  • RPG::Class

속성

level

레벨.

skill_id

습득하는 기술의 ID.

정의

module RPG
  class Class
    class Learning
      def initialize
        @level = 1
        @skill_id = 1
      end
      attr_accessor :level
      attr_accessor :skill_id
    end
  end
end


RPG::CommonEvent

common 이벤트의 데이터 클래스.

슈퍼 클래스

  • Object

속성

id

ID.

name

이름.

trigger

트리거 (0:없음,1:자동 실행,2:parallel processing) .

switch_id

조건 스윗치의 ID.

list

실행 내용. RPG::EventCommand 의 배열입니다.

정의

module RPG
  class CommonEvent
    def initialize
      @id = 0
      @name = ""
      @trigger = 0
      @switch_id = 1
      @list = [RPG::EventCommand.new]
    end
    attr_accessor :id
    attr_accessor :name
    attr_accessor :trigger
    attr_accessor :switch_id
    attr_accessor :list
  end
end


RPG::Enemy

에너지 미의 데이터 클래스.

슈퍼 클래스

  • Object

속성

id

ID.

name

이름.

battler_name

butler 그래픽의 파일명.

battler_hue

butler 그래픽의 색상 변화값 (0..360) .

maxhp

MaxHP.

maxsp

MaxSP.

str

완력.

dex

손재주가 있음.

agi

민첩함.

int

마력.

atk

공격력.

pdef

물리 방어.

mdef

마법 방어.

eva

회피 수정.

animation1_id

공격측 애니메이션의 ID.

animation2_id

대상측 애니메이션의 ID.

element_ranks

속성 유효도. 속성 ID 를 첨자에 취하는 일차원 배열 (Table )(으)로, 값은 6 단계입니다 (0:A, 1:B, 2:C, 3:D, 4:E, 5:F) .

state_ranks

스테이트 유효도. 스테이트 ID 를 첨자에 취하는 일차원 배열 (Table )(으)로, 값은 6 단계입니다 (0:A, 1:B, 2:C, 3:D, 4:E, 5:F) .

actions

액션. RPG::Enemy::Action 의 배열입니다.

exp

EXP.

gold

골드.

item_id

트레이닝 전기밥통의 아이템 ID.

weapon_id

트레이닝 전기밥통의 무기 ID.

armor_id

트레이닝 전기밥통의 방어용 기구 ID.

treasure_prob

트레이닝 전기밥통 출현율.

내부 클래스

  • RPG::Enemy::Action

정의

module RPG
  class Enemy
    def initialize
      @id = 0
      @name = ""
      @battler_name = ""
      @battler_hue = 0
      @maxhp = 500
      @maxsp = 500
      @str = 50
      @dex = 50
      @agi = 50
      @int = 50
      @atk = 100
      @pdef = 100
      @mdef = 100
      @eva = 0
      @animation1_id = 0
      @animation2_id = 0
      @element_ranks = Table.new(1)
      @state_ranks = Table.new(1)
      @actions = [RPG::Enemy::Action.new]
      @exp = 0
      @gold = 0
      @item_id = 0
      @weapon_id = 0
      @armor_id = 0
      @treasure_prob = 100
    end
    attr_accessor :id
    attr_accessor :name
    attr_accessor :battler_name
    attr_accessor :battler_hue
    attr_accessor :maxhp
    attr_accessor :maxsp
    attr_accessor :str
    attr_accessor :dex
    attr_accessor :agi
    attr_accessor :int
    attr_accessor :atk
    attr_accessor :pdef
    attr_accessor :mdef
    attr_accessor :eva
    attr_accessor :animation1_id
    attr_accessor :animation2_id
    attr_accessor :element_ranks
    attr_accessor :state_ranks
    attr_accessor :actions
    attr_accessor :exp
    attr_accessor :gold
    attr_accessor :item_id
    attr_accessor :weapon_id
    attr_accessor :armor_id
    attr_accessor :treasure_prob
  end
end


RPG::Enemy::Action

에너지 미의 [액션] 의 데이터 클래스.

슈퍼 클래스

  • Object

참조원

  • RPG::Enemy

속성

kind

종별 (0:기본,1:기술) .

basic

종별이 [기본] 때, 그 내용 (0:공격,1:방어,2:도망친다,3:아무것도 하지 않는다) .

skill_id

종별이 [기술] 때, 그 ID.

condition_turn_a
condition_turn_b

조건 [턴] 에 지정된 a, b 의 값. a + bx 의 형태로 입력됩니다.

턴이 조건으로서 지정되어 있지 않을 때는 a = 0, b = 1 이 됩니다.

condition_hp

조건 [HP] 에 지정된 비율 (%) .

HP 가 조건으로서 지정되어 있지 않을 때는 100 이 됩니다.

condition_level

조건 [레벨] 에 지정된 기준치.

레벨이 조건으로서 지정되어 있지 않을 때는 1 이 됩니다.

condition_switch_id

조건 [스윗치] 에 지정된 스윗치의 ID.

스윗치가 조건으로서 지정되어 있지 않을 때는 0 이 됩니다 (따라 0 화도인가 체크할 필요가 있습니다) .

rating

rating (1..10) .

정의

module RPG
  class Enemy
    class Action
      def initialize
        @kind = 0
        @basic = 0
        @skill_id = 1
        @condition_turn_a = 0
        @condition_turn_b = 1
        @condition_hp = 100
        @condition_level = 1
        @condition_switch_id = 0
        @rating = 5
      end
      attr_accessor :kind
      attr_accessor :basic
      attr_accessor :skill_id
      attr_accessor :condition_turn_a
      attr_accessor :condition_turn_b
      attr_accessor :condition_hp
      attr_accessor :condition_level
      attr_accessor :condition_switch_id
      attr_accessor :rating
    end
  end
end


RPG::Event

맵 이벤트의 데이터 클래스.

슈퍼 클래스

  • Object

참조원

  • RPG::Map

속성

id

ID.

name

이름.

x

맵 X 좌표.

y

맵 Y 좌표.

pages

이벤트 페이지. RPG::Event::Page 의 배열입니다.

내부 클래스

  • RPG::Event::Page

정의

module RPG
  class Event
    def initialize(x, y)
      @id = 0
      @name = ""
      @x = x
      @y = y
      @pages = [RPG::Event::Page.new]
    end
    attr_accessor :id
    attr_accessor :name
    attr_accessor :x
    attr_accessor :y
    attr_accessor :pages
  end
end


RPG::Event::Page

이벤트 페이지의 데이터 클래스.

슈퍼 클래스

  • Object

참조원

  • RPG::Event

속성

condition

조건 (RPG::Event::Page::Condition ) .

graphic

그래픽 (RPG::Event::Page::Graphic ) .

move_type

이동 타입 (0:고정,1:랜덤,2:가까워지는,3:커스텀) .

move_speed

이동 속도 (1:Slowest, 2:Slower, 3:Slow, 4:Fast, 5:Faster, 6:Fastest) .

move_frequency

이동 빈도 (1:Lowest, 2:Lower, 3:Low, 4:High, 5:Higher, 6:Highest) .

move_route

이동 루트 (RPG::MoveRoute ) . 이동 타입이 커스텀의 경우만 참조됩니다.

walk_anime

옵션 [이동시 애니메이션] 의 진위값.

step_anime

옵션 [정지시 애니메이션] 의 진위값.

direction_fix

옵션 [방향 고정] 의 진위값.

through

옵션 [빠져나고] 의 진위값.

always_on_top

옵션 [맨 앞면에 표시] 의 진위값.

trigger

트리거 (0:결정 버튼,1:플레이어로부터 접촉,2:이벤트 (으)로부터 접촉,3:자동 실행,4:parallel processing) .

list

실행 내용. RPG::EventCommand 의 배열입니다.

내부 클래스

  • RPG::Event::Page::Condition
  • RPG::Event::Page::Graphic

정의

module RPG
  class Event
    class Page
      def initialize
        @condition = RPG::Event::Page::Condition.new
        @graphic = RPG::Event::Page::Graphic.new
        @move_type = 0
        @move_speed = 3
        @move_frequency = 3
        @move_route = RPG::MoveRoute.new
        @walk_anime = true
        @step_anime = false
        @direction_fix = false
        @through = false
        @always_on_top = false
        @trigger = 0
        @list = [RPG::EventCommand.new]
      end
      attr_accessor :condition
      attr_accessor :graphic
      attr_accessor :move_type
      attr_accessor :move_speed
      attr_accessor :move_frequency
      attr_accessor :move_route
      attr_accessor :walk_anime
      attr_accessor :step_anime
      attr_accessor :direction_fix
      attr_accessor :through
      attr_accessor :always_on_top
      attr_accessor :trigger
      attr_accessor :list
    end
  end
end


RPG::Event::Page::Condition

이벤트 페이지의 [조건] 의 데이터 클래스.

슈퍼 클래스

  • Object

참조원

  • RPG::Event::Page

속성

switch1_valid

조건 [스윗치] (첫번째)가 유효한가 어떤가를 나타내는 진위값.

switch2_valid

조건 [스윗치] (두번째)가 유효한가 어떤가를 나타내는 진위값.

variable_valid

조건 [변수] 가 유효한가 어떤가를 나타내는 진위값.

self_switch_valid

조건 [셀프 스윗치] 가 유효한가 어떤가를 나타내는 진위값.

switch1_id

조건 [스윗치] (첫번째)가 유효한 풀어, 그 스윗치 ID.

switch2_id

조건 [스윗치] (두번째)가 유효한 풀어, 그 스윗치 ID.

variable_id

조건 [변수] 가 유효한 풀어, 그 변수 ID.

variable_value

조건 [변수] 가 유효한 풀어, 그 변수의 기준치 (x 이상) .

self_switch_ch

조건 [셀프 스윗치] 가 유효한 풀어, 그 문자 ("A".."D") .

정의

module RPG
  class Event
    class Page
      class Condition
        def initialize
          @switch1_valid = false
          @switch2_valid = false
          @variable_valid = false
          @self_switch_valid = false
          @switch1_id = 1
          @switch2_id = 1
          @variable_id = 1
          @variable_value = 0
          @self_switch_ch = "A"
        end
        attr_accessor :switch1_valid
        attr_accessor :switch2_valid
        attr_accessor :variable_valid
        attr_accessor :self_switch_valid
        attr_accessor :switch1_id
        attr_accessor :switch2_id
        attr_accessor :variable_id
        attr_accessor :variable_value
        attr_accessor :self_switch_ch
      end
    end
  end
end


RPG::Event::Page::Graphic

이벤트 페이지의 [그래픽] 의 데이터 클래스.

슈퍼 클래스

  • Object

참조원

  • RPG::Event::Page

속성

tile_id

타일 ID. 그래픽의 지정이 타일이 아닌 경우는 0 입니다.

character_name

캐릭터 그래픽의 파일명.

character_hue

캐릭터 그래픽의 색상 변화값 (0..360) .

direction

캐릭터의 방향 (2:아래,4:왼쪽,6:오른쪽,8:위) .

pattern

캐릭터의 패턴 (0..3) .

opacity

불투명도.

blend_type

합성 방법.

정의

module RPG
  class Event
    class Page
      class Graphic
        def initialize
          @tile_id = 0
          @character_name = ""
          @character_hue = 0
          @direction = 2
          @pattern = 0
          @opacity = 255
          @blend_type = 0
        end
        attr_accessor :tile_id
        attr_accessor :character_name
        attr_accessor :character_hue
        attr_accessor :direction
        attr_accessor :pattern
        attr_accessor :opacity
        attr_accessor :blend_type
      end
    end
  end
end


RPG::EventCommand

이벤트 커멘드의 데이터 클래스.

슈퍼 클래스

  • Object

참조원

  • RPG::Event::Page
  • RPG::Troop::Page
  • RPG::CommonEvent

속성

code

이벤트 코드.

indent

인덴트의 깊이. 통상 0 으로,[조건 분기] 커멘드등으로(이며) 일단 깊어질 때 마다 +1 됩니다.

parameters

이벤트 커멘드의 인수를 격납 한 배열. 내용은 커멘드 마다 다릅니다.

정의

module RPG
  class EventCommand
    def initialize(code = 0, indent = 0, parameters = [])
      @code = code
      @indent = indent
      @parameters = parameters
    end
    attr_accessor :code
    attr_accessor :indent
    attr_accessor :parameters
  end
end


RPG::Item

아이템의 데이터 클래스.

슈퍼 클래스

  • Object

속성

id

ID.

name

이름.

icon_name

아이콘 그래픽의 파일명.

description

설명.

scope

효과 범위 (0:없음,1:적단체,2:적전체,3:아군 단체,4:아군전 몸,5:아군 단체 (HP 0) ,6:아군 전체 (HP 0) ,7:사용권) .

occasion

사용 가능시 (0:상시,1:배틀만,2:메뉴의 보고,3:사용 불가) .

animation1_id

사용측 애니메이션의 ID.

animation2_id

대상측 애니메이션의 ID.

menu_se

메뉴 화면 사용시 SE (RPG::AudioFile ) .

common_event_id

common 이벤트 ID.

price

가격.

consumable

소모할지 어떨지의 진위값.

parameter_type

파라미터 (0:없음, 1:MaxHP, 2:MaxSP,3:완력,4:기용 함,5:민첩함,6:마력) .

parameter_points

파라미터의 상승양.

recover_hp_rate

HP 회복율.

recover_hp

HP 회복양.

recover_sp_rate

SP 회복율.

recover_sp

SP 회복양.

hit

명중율.

pdef_f

물리 방어 F.

mdef_f

마법 방어 F.

variance

분산도.

element_set

속성. 속성 ID 의 배열입니다.

plus_state_set

부가하는 스테이트. 스테이트 ID 의 배열입니다.

minus_state_set

해제하는 스테이트. 스테이트 ID 의 배열입니다.

정의

module RPG
  class Item
    def initialize
      @id = 0
      @name = ""
      @icon_name = ""
      @description = ""
      @scope = 0
      @occasion = 0
      @animation1_id = 0
      @animation2_id = 0
      @menu_se = RPG::AudioFile.new("", 80)
      @common_event_id = 0
      @price = 0
      @consumable = true
      @parameter_type = 0
      @parameter_points = 0
      @recover_hp_rate = 0
      @recover_hp = 0
      @recover_sp_rate = 0
      @recover_sp = 0
      @hit = 100
      @pdef_f = 0
      @mdef_f = 0
      @variance = 0
      @element_set = []
      @plus_state_set = []
      @minus_state_set = []
    end
    attr_accessor :id
    attr_accessor :name
    attr_accessor :icon_name
    attr_accessor :description
    attr_accessor :scope
    attr_accessor :occasion
    attr_accessor :animation1_id
    attr_accessor :animation2_id
    attr_accessor :menu_se
    attr_accessor :common_event_id
    attr_accessor :price
    attr_accessor :consumable
    attr_accessor :parameter_type
    attr_accessor :parameter_points
    attr_accessor :recover_hp_rate
    attr_accessor :recover_hp
    attr_accessor :recover_sp_rate
    attr_accessor :recover_sp
    attr_accessor :hit
    attr_accessor :pdef_f
    attr_accessor :mdef_f
    attr_accessor :variance
    attr_accessor :element_set
    attr_accessor :plus_state_set
    attr_accessor :minus_state_set
  end
end


RPG::Map

맵의 데이터 클래스.

슈퍼 클래스

  • Object

속성

tileset_id

맵으로 사용하는 타일 세트의 ID.

width

맵의 폭.

height

맵의 높이.

autoplay_bgm

BGM 자동 변환이 유효한가 어떤가를 나타내는 진위값.

bgm

BGM 자동 변환이 유효한 풀어, 그 BGM (RPG::AudioFile ) .

autoplay_bgs

BGS 자동 변환이 유효한가 어떤가를 나타내는 진위값.

bgs

BGS 자동 변환이 유효한 풀어, 그 BGS (RPG::AudioFile ) .

encounter_list

엔카운트리스트. 무리 ID 의 배열입니다.

encounter_step

엔카운트 보수.

data

맵 데이터 본체. 타일 ID 의 삼차원 배열 (Table )입니다.

events

맵 이벤트. 이벤트 ID 를 키,RPG::Event 의 인스턴스를 값으로 하는 해시입니다.

정의

module RPG
  class Map
    def initialize(width, height)
      @tileset_id = 1
      @width = width
      @height = height
      @autoplay_bgm = false
      @bgm = RPG::AudioFile.new
      @autoplay_bgs = false
      @bgs = RPG::AudioFile.new("", 80)
      @encounter_list = []
      @encounter_step = 30
      @data = Table.new(width, height, 3)
      @events = {}
    end
    attr_accessor :tileset_id
    attr_accessor :width
    attr_accessor :height
    attr_accessor :autoplay_bgm
    attr_accessor :bgm
    attr_accessor :autoplay_bgs
    attr_accessor :bgs
    attr_accessor :encounter_list
    attr_accessor :encounter_step
    attr_accessor :data
    attr_accessor :events
  end
end


RPG::MapInfo

맵 정보의 데이터 클래스.

슈퍼 클래스

  • Object

속성

name

이름.

parent_id

친맵의 ID.

order

트크르 내부에서 사용하는 맵 트리 표시 순서.

expanded

트크르 내부에서 사용하는 맵 트리 전개 플래그.

scroll_x

트크르 내부에서 사용하는 X 방향의 스크롤 위치.

scroll_y

트크르 내부에서 사용하는 Y 방향의 스크롤 위치.

정의

module RPG
  class MapInfo
    def initialize
      @name = ""
      @parent_id = 0
      @order = 0
      @expanded = false
      @scroll_x = 0
      @scroll_y = 0
    end
    attr_accessor :name
    attr_accessor :parent_id
    attr_accessor :order
    attr_accessor :expanded
    attr_accessor :scroll_x
    attr_accessor :scroll_y
  end
end


RPG::MoveCommand RPG::MoveCommand RPG::MoveCommand RPG::MoveCommand RPG::MoveCommand RPG::MoveCommand RPG::MoveCommand RPG::MoveCommand RPG::MoveCommand

RPG::MoveCommand

이동 커멘드의 데이터 클래스.

슈퍼 클래스

  • Object

참조원

  • RPG::MoveRoute

속성

code

이동 커멘드 코드.

parameters

이동 커멘드의 인수를 격납 한 배열. 내용은 커멘드 마다 다릅니다.

정의

module RPG
  class MoveCommand(code = 0, parameters = [])
    def initialize
      @code = code
      @parameters = parameters
    end
    attr_accessor :code
    attr_accessor :parameters
  end
end


RPG::MoveRoute

이동 루트의 데이터 클래스.

슈퍼 클래스

  • Object

참조원

  • RPG::EventPage

속성

repeat

옵션 [동작을 반복하는] 의 진위값.

skippable

옵션 [이동할 수 없는 경우는 무시] 의 진위값.

list

실행 내용. RPG::MoveCommand 의 배열입니다.

정의

module RPG
  class MoveRoute
    def initialize
      @repeat = true
      @skippable = false
      @list = [RPG::MoveCommand.new]
    end
    attr_accessor :repeat
    attr_accessor :skippable
    attr_accessor :list
  end
end


RPG::Skill

기술의 데이터 클래스.

슈퍼 클래스

  • Object

속성

id

ID.

name

이름.

icon_name

아이콘 그래픽의 파일명.

description

설명.

scope

효과 범위 (0:없음,1:적단체,2:적전체,3:아군 단체,4:아군전 몸,5:아군 단체 (HP 0) ,6:아군 전체 (HP 0) ,7:사용권) .

occasion

사용 가능시 (0:상시,1:배틀만,2:메뉴의 보고,3:사용 불가) .

animation1_id

사용측 애니메이션의 ID.

animation2_id

대상측 애니메이션의 ID.

menu_se

메뉴 화면 사용시 SE (RPG::AudioFile ) .

common_event_id

common 이벤트 ID.

sp_cost

소비 SP.

power

위력.

atk_f

공격력 F.

eva_f

회피 F.

str_f

완력 F.

dex_f

손재주가 있음 F.

agi_f

민첩함 F.

int_f

마력 F.

hit

명중율.

pdef_f

물리 방어 F.

mdef_f

마법 방어 F.

variance

분산도.

element_set

속성. 속성 ID 의 배열입니다.

plus_state_set

부가하는 스테이트. 스테이트 ID 의 배열입니다.

minus_state_set

해제하는 스테이트. 스테이트 ID 의 배열입니다.

정의

module RPG
  class Skill
    def initialize
      @id = 0
      @name = ""
      @icon_name = ""
      @description = ""
      @scope = 0
      @occasion = 1
      @animation1_id = 0
      @animation2_id = 0
      @menu_se = RPG::AudioFile.new("", 80)
      @common_event_id = 0
      @sp_cost = 0
      @power = 0
      @atk_f = 0
      @eva_f = 0
      @str_f = 0
      @dex_f = 0
      @agi_f = 0
      @int_f = 100
      @hit = 100
      @pdef_f = 0
      @mdef_f = 100
      @variance = 15
      @element_set = []
      @plus_state_set = []
      @minus_state_set = []
    end
    attr_accessor :id
    attr_accessor :name
    attr_accessor :icon_name
    attr_accessor :description
    attr_accessor :scope
    attr_accessor :occasion
    attr_accessor :animation1_id
    attr_accessor :animation2_id
    attr_accessor :menu_se
    attr_accessor :common_event_id
    attr_accessor :sp_cost
    attr_accessor :power
    attr_accessor :atk_f
    attr_accessor :eva_f
    attr_accessor :str_f
    attr_accessor :dex_f
    attr_accessor :agi_f
    attr_accessor :int_f
    attr_accessor :hit
    attr_accessor :pdef_f
    attr_accessor :mdef_f
    attr_accessor :variance
    attr_accessor :element_set
    attr_accessor :plus_state_set
    attr_accessor :minus_state_set
  end
end


RPG::Sprite

RPGXP 로 사용하는 각종 효과의 처리를 추가한 스프라이트의 클래스.

슈퍼 클래스

  • Sprite

메소드

whiten

스프라이트를 희고 약한에 플래시 시킵니다. butler가 행동할 때에 사용 되는 효과입니다.

appear

스프라이트를 투명상태로부터 불투명 상태에 매끄럽게 변화 시킵니다. 소생이나 에너지 미의 출현 시에 사용되는 효과입니다.

escape

스프라이트를 불투명 상태로부터 투명상태에 매끄럽게 변화 시킵니다. 에너지 미의 도주 시에 사용되는 효과입니다.

collapse

스프라이트를 붉게 가산 브렌드 해, 투명상태에 매끄럽게 변화함 . HP 가 0 이 되어 넘어질 때에 사용되는 효과입니다.

damage(value, critical)

데미지의 숫자, 또는 "Miss" 등의 캐릭터 라인을 스프라이트의 전에 pop-up 시킵니다.

value 에 정의 값이 지정될 경우는 통상의 데미지를 나타내는 흰색의 문자, 부의 값이 지정될 경우는 회복을 나타내는 초록의 문자가 됩니다. 부의 값의 경우, 부호는 표시되지 않습니다. value 가 캐릭터 라인의 경우는, 그대로 흰색의 문자로 표시 됩니다.

critical 에 진을 지정하면(자), 데미지 캐릭터 라인 위에 작게 "CRITICAL" 의 문자가 추가됩니다.

데미지의 스프라이트가 표시되는 Z 좌표는 3000 입니다.

animation(animation, hit)

스프라이트를 대상으로서animation 로 지정된 애니메이션 (RPG::Animation )(을)를 표시합니다.

hit 가 진이라면 히트, 가짜라면 미스의 취급이 됩니다. 이것은 [SE 와 플래시의 타이밍] 의 조건으로서 사용됩니다.

애니메이션의 스프라이트가 표시되는 Z 좌표는 2000 입니다.

애니메이션의 대상이 복수의 경우에서도, 이 메소드를 각각의 스프라이트 에 대해서 호출하는 것만으로 상관하지 않습니다. 그러한 경우는 클래스 내부에서 자동적으로 판정 되기 때문에, 위치가 [화면] 에 지정되어 있는 애니메이션의 셀이 중복 해 표시되어 버린다, 라고 하는 것 같은 문제는 일어나지 않습니다.

표시하는 애니메이션 그래픽은 RPG::Cache 모듈로부터 취득되어 애니메이션이 끝난 시점으로 메모리 절약을 위해서(때문에) 해방됩니다. 이 때문에, 클래스 내부에서 참조 카운트가 사용되어 있습니다. 통상은 이것을 의식할 필요는 없습니다만,RPG::Cache 모듈로부터 취득 한 애니메이션 그래픽을 외부에서 사용하는 경우에는 주의가 필요합니다.

animation 에 nil 를 지정하면(자), 애니메이션이 정지합니다.

loop_animation(animation)

스프라이트를 대상으로서animation 로 지정된 애니메이션 (RPG::Animation )(을)를 루프 표시합니다.

통상의 애니메이션과 달리, 끝까지 표시해도 정지하지 않고 최초의 프레임 에 돌아옵니다. 또, 통상의 애니메이션과 동시에 표시하는 것이 가능합니다. 이 메소드는, 스테이트 (RPG::State )에서 지정되었다 애니메이션을 표시하기 위해서 사용됩니다.

animation 에 nil 를 지정하면(자), 애니메이션이 정지합니다.

blink_on

명 멸망 효과를 ON 로 합니다. 스프라이트를 희게 번뜩거릴 수 있는 처리가 주기적으로 반복해집니다. 커멘드 입력중의 엑터에 대해서 사용되는 효과입니다.

blink_off

명 멸망 효과를 OFF 로 합니다.

blink?

명 멸망 효과가 ON 때 진을 돌려줍니다.

effect?

whiten, appear, escape, collapse, damage, animation 의 몇개의 효과 하지만 표시중이라면 진을 돌려줍니다.

loop_animation, blink 의 상태는 영향을 주지 않습니다.

update

각종 효과를 진행시킵니다. 이 메소드는, 원칙으로서 1 프레임에 1 회 호출합니다.

정의

module RPG
  class Sprite < ::Sprite
    @@_animations = []
    @@_reference_count = {}
    def initialize(viewport = nil)
      super(viewport)
      @_whiten_duration = 0
      @_appear_duration = 0
      @_escape_duration = 0
      @_collapse_duration = 0
      @_damage_duration = 0
      @_animation_duration = 0
      @_blink = false
    end
    def dispose
      dispose_damage
      dispose_animation
      dispose_loop_animation
      super
    end
    def whiten
      self.blend_type = 0
      self.color.set(255, 255, 255, 128)
      self.opacity = 255
      @_whiten_duration = 16
      @_appear_duration = 0
      @_escape_duration = 0
      @_collapse_duration = 0
    end
    def appear
      self.blend_type = 0
      self.color.set(0, 0, 0, 0)
      self.opacity = 0
      @_appear_duration = 16
      @_whiten_duration = 0
      @_escape_duration = 0
      @_collapse_duration = 0
    end
    def escape
      self.blend_type = 0
      self.color.set(0, 0, 0, 0)
      self.opacity = 255
      @_escape_duration = 32
      @_whiten_duration = 0
      @_appear_duration = 0
      @_collapse_duration = 0
    end
    def collapse
      self.blend_type = 1
      self.color.set(255, 64, 64, 255)
      self.opacity = 255
      @_collapse_duration = 48
      @_whiten_duration = 0
      @_appear_duration = 0
      @_escape_duration = 0
    end
    def damage(value, critical)
      dispose_damage
      if value.is_a?(Numeric)
        damage_string = value.abs.to_s
      else
        damage_string = value.to_s
      end
      bitmap = Bitmap.new(160, 48)
      bitmap.font.name = "Arial Black"
      bitmap.font.size = 32
      bitmap.font.color.set(0, 0, 0)
      bitmap.draw_text(-1, 12-1, 160, 36, damage_string, 1)
      bitmap.draw_text(+1, 12-1, 160, 36, damage_string, 1)
      bitmap.draw_text(-1, 12+1, 160, 36, damage_string, 1)
      bitmap.draw_text(+1, 12+1, 160, 36, damage_string, 1)
      if value.is_a?(Numeric) and value < 0
        bitmap.font.color.set(176, 255, 144)
      else
        bitmap.font.color.set(255, 255, 255)
      end
      bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
      if critical
        bitmap.font.size = 20
        bitmap.font.color.set(0, 0, 0)
        bitmap.draw_text(-1, -1, 160, 20, "CRITICAL", 1)
        bitmap.draw_text(+1, -1, 160, 20, "CRITICAL", 1)
        bitmap.draw_text(-1, +1, 160, 20, "CRITICAL", 1)
        bitmap.draw_text(+1, +1, 160, 20, "CRITICAL", 1)
        bitmap.font.color.set(255, 255, 255)
        bitmap.draw_text(0, 0, 160, 20, "CRITICAL", 1)
      end
      @_damage_sprite = ::Sprite.new(self.viewport)
      @_damage_sprite.bitmap = bitmap
      @_damage_sprite.ox = 80
      @_damage_sprite.oy = 20
      @_damage_sprite.x = self.x
      @_damage_sprite.y = self.y - self.oy / 2
      @_damage_sprite.z = 3000
      @_damage_duration = 40
    end
    def animation(animation, hit)
      dispose_animation
      @_animation = animation
      return if @_animation == nil
      @_animation_hit = hit
      @_animation_duration = @_animation.frame_max
      animation_name = @_animation.animation_name
      animation_hue = @_animation.animation_hue
      bitmap = RPG::Cache.animation(animation_name, animation_hue)
      if @@_reference_count.include?(bitmap)
        @@_reference_count[bitmap] += 1
      else
        @@_reference_count[bitmap] = 1
      end
      @_animation_sprites = []
      if @_animation.position != 3 or not @@_animations.include?(animation)
        for i in 0..15
          sprite = ::Sprite.new(self.viewport)
          sprite.bitmap = bitmap
          sprite.visible = false
          @_animation_sprites.push(sprite)
        end
        unless @@_animations.include?(animation)
          @@_animations.push(animation)
        end
      end
      update_animation
    end
    def loop_animation(animation)
      return if animation == @_loop_animation
      dispose_loop_animation
      @_loop_animation = animation
      return if @_loop_animation == nil
      @_loop_animation_index = 0
      animation_name = @_loop_animation.animation_name
      animation_hue = @_loop_animation.animation_hue
      bitmap = RPG::Cache.animation(animation_name, animation_hue)
      if @@_reference_count.include?(bitmap)
        @@_reference_count[bitmap] += 1
      else
        @@_reference_count[bitmap] = 1
      end
      @_loop_animation_sprites = []
      for i in 0..15
        sprite = ::Sprite.new(self.viewport)
        sprite.bitmap = bitmap
        sprite.visible = false
        @_loop_animation_sprites.push(sprite)
      end
      update_loop_animation
    end
    def dispose_damage
      if @_damage_sprite != nil
        @_damage_sprite.bitmap.dispose
        @_damage_sprite.dispose
        @_damage_sprite = nil
        @_damage_duration = 0
      end
    end
    def dispose_animation
      if @_animation_sprites != nil
        sprite = @_animation_sprites[0]
        if sprite != nil
          @@_reference_count[sprite.bitmap] -= 1
          if @@_reference_count[sprite.bitmap] == 0
            sprite.bitmap.dispose
          end
        end
        for sprite in @_animation_sprites
          sprite.dispose
        end
        @_animation_sprites = nil
        @_animation = nil
      end
    end
    def dispose_loop_animation
      if @_loop_animation_sprites != nil
        sprite = @_loop_animation_sprites[0]
        if sprite != nil
          @@_reference_count[sprite.bitmap] -= 1
          if @@_reference_count[sprite.bitmap] == 0
            sprite.bitmap.dispose
          end
        end
        for sprite in @_loop_animation_sprites
          sprite.dispose
        end
        @_loop_animation_sprites = nil
        @_loop_animation = nil
      end
    end
    def blink_on
      unless @_blink
        @_blink = true
        @_blink_count = 0
      end
    end
    def blink_off
      if @_blink
        @_blink = false
        self.color.set(0, 0, 0, 0)
      end
    end
    def blink?
      @_blink
    end
    def effect?
      @_whiten_duration > 0 or
      @_appear_duration > 0 or
      @_escape_duration > 0 or
      @_collapse_duration > 0 or
      @_damage_duration > 0 or
      @_animation_duration > 0
    end
    def update
      super
      if @_whiten_duration > 0
        @_whiten_duration -= 1
        self.color.alpha = 128 - (16 - @_whiten_duration) * 10
      end
      if @_appear_duration > 0
        @_appear_duration -= 1
        self.opacity = (16 - @_appear_duration) * 16
      end
      if @_escape_duration > 0
        @_escape_duration -= 1
        self.opacity = 256 - (32 - @_escape_duration) * 10
      end
      if @_collapse_duration > 0
        @_collapse_duration -= 1
        self.opacity = 256 - (48 - @_collapse_duration) * 6
      end
      if @_damage_duration > 0
        @_damage_duration -= 1
        case @_damage_duration
        when 38..39
          @_damage_sprite.y -= 4
        when 36..37
          @_damage_sprite.y -= 2
        when 34..35
          @_damage_sprite.y += 2
        when 28..33
          @_damage_sprite.y += 4
        end
        @_damage_sprite.opacity = 256 - (12 - @_damage_duration) * 32
        if @_damage_duration == 0
          dispose_damage
        end
      end
      if @_animation != nil and (Graphics.frame_count % 2 == 0)
        @_animation_duration -= 1
        update_animation
      end
      if @_loop_animation != nil and (Graphics.frame_count % 2 == 0)
        update_loop_animation
        @_loop_animation_index += 1
        @_loop_animation_index %= @_loop_animation.frame_max
      end
      if @_blink
        @_blink_count = (@_blink_count + 1) % 32
        if @_blink_count < 16
          alpha = (16 - @_blink_count) * 6
        else
          alpha = (@_blink_count - 16) * 6
        end
        self.color.set(255, 255, 255, alpha)
      end
      @@_animations.clear
    end
    def update_animation
      if @_animation_duration > 0
        frame_index = @_animation.frame_max - @_animation_duration
        cell_data = @_animation.frames[frame_index].cell_data
        position = @_animation.position
        animation_set_sprites(@_animation_sprites, cell_data, position)
        for timing in @_animation.timings
          if timing.frame == frame_index
            animation_process_timing(timing, @_animation_hit)
          end
        end
      else
        dispose_animation
      end
    end
    def update_loop_animation
      frame_index = @_loop_animation_index
      cell_data = @_loop_animation.frames[frame_index].cell_data
      position = @_loop_animation.position
      animation_set_sprites(@_loop_animation_sprites, cell_data, position)
      for timing in @_loop_animation.timings
        if timing.frame == frame_index
          animation_process_timing(timing, true)
        end
      end
    end
    def animation_set_sprites(sprites, cell_data, position)
      for i in 0..15
        sprite = sprites[i]
        pattern = cell_data[i, 0]
        if sprite == nil or pattern == nil or pattern == -1
          sprite.visible = false if sprite != nil
          next
        end
        sprite.visible = true
        sprite.src_rect.set(pattern % 5 * 192, pattern / 5 * 192, 192, 192)
        if position == 3
          if self.viewport != nil
            sprite.x = self.viewport.rect.width / 2
            sprite.y = self.viewport.rect.height - 160
          else
            sprite.x = 320
            sprite.y = 240
          end
        else
          sprite.x = self.x - self.ox + self.src_rect.width / 2
          sprite.y = self.y - self.oy + self.src_rect.height / 2
          sprite.y -= self.src_rect.height / 4 if position == 0
          sprite.y += self.src_rect.height / 4 if position == 2
        end
        sprite.x += cell_data[i, 1]
        sprite.y += cell_data[i, 2]
        sprite.z = 2000
        sprite.ox = 96
        sprite.oy = 96
        sprite.zoom_x = cell_data[i, 3] / 100.0
        sprite.zoom_y = cell_data[i, 3] / 100.0
        sprite.angle = cell_data[i, 4]
        sprite.mirror = (cell_data[i, 5] == 1)
        sprite.opacity = cell_data[i, 6] * self.opacity / 255.0
        sprite.blend_type = cell_data[i, 7]
      end
    end
    def animation_process_timing(timing, hit)
      if (timing.condition == 0) or
         (timing.condition == 1 and hit == true) or
         (timing.condition == 2 and hit == false)
        if timing.se.name != ""
          se = timing.se
          Audio.se_play("Audio/SE/" + se.name, se.volume, se.pitch)
        end
        case timing.flash_scope
        when 1
          self.flash(timing.flash_color, timing.flash_duration * 2)
        when 2
          if self.viewport != nil
            self.viewport.flash(timing.flash_color, timing.flash_duration * 2)
          end
        when 3
          self.flash(nil, timing.flash_duration * 2)
        end
      end
    end
    def x=(x)
      sx = x - self.x
      if sx != 0
        if @_animation_sprites != nil
          for i in 0..15
            @_animation_sprites[i].x += sx
          end
        end
        if @_loop_animation_sprites != nil
          for i in 0..15
            @_loop_animation_sprites[i].x += sx
          end
        end
      end
      super
    end
    def y=(y)
      sy = y - self.y
      if sy != 0
        if @_animation_sprites != nil
          for i in 0..15
            @_animation_sprites[i].y += sy
          end
        end
        if @_loop_animation_sprites != nil
          for i in 0..15
            @_loop_animation_sprites[i].y += sy
          end
        end
      end
      super
    end
  end
end


RPG::State

ステートのデータクラス。

スーパークラス

  • Object

属性

id

ID。

name

名前。

animation_id

アニメーション ID。

restriction

制約 (0:なし、1:魔法を使用できない、2:敵を通常攻撃する、3:味方を 通常攻撃する、4:行動できない) 。

nonresistance

オプション [抵抗しない] の真偽値。

zero_hp

オプション [HP 0 の状態とみなす] の真偽値。

cant_get_exp

オプション [EXP を獲得できない] の真偽値。

cant_evade

オプション [攻撃を回避できない] の真偽値。

slip_damage

オプション [スリップダメージ] の真偽値。

rating

レーティング (0..10) 。

hit_rate

命中率 %。

maxhp_rate

MaxHP %。

maxsp_rate

MaxSP %。

str_rate

腕力 %。

dex_rate

器用さ %。

agi_rate

素早さ %。

int_rate

魔力 %。

atk_rate

攻撃力 %。

pdef_rate

物理防御 %。

mdef_rate

魔法防御 %。

eva

回避修正。

battle_only

バトル終了時に解除するかどうかの真偽値。

hold_turn
auto_release_prob

hold_turn ターン経過後 auto_release_prob % の確率で解除。

shock_release_prob

物理ダメージを受けたときに shock_release_prob % の確率で解除。

guard_element_set

属性防御。属性 ID の配列です。

plus_state_set

付加するステート。ステート ID の配列です。

minus_state_set

解除するステート。ステート ID の配列です。

定義

module RPG
  class State
    def initialize
      @id = 0
      @name = ""
      @animation_id = 0
      @restriction = 0
      @nonresistance = false
      @zero_hp = false
      @cant_get_exp = false
      @cant_evade = false
      @slip_damage = false
      @rating = 5
      @hit_rate = 100
      @maxhp_rate = 100
      @maxsp_rate = 100
      @str_rate = 100
      @dex_rate = 100
      @agi_rate = 100
      @int_rate = 100
      @atk_rate = 100
      @pdef_rate = 100
      @mdef_rate = 100
      @eva = 0
      @battle_only = true
      @hold_turn = 0
      @auto_release_prob = 0
      @shock_release_prob = 0
      @guard_element_set = []
      @plus_state_set = []
      @minus_state_set = []
    end
    attr_accessor :id
    attr_accessor :name
    attr_accessor :animation_id
    attr_accessor :restriction
    attr_accessor :nonresistance
    attr_accessor :zero_hp
    attr_accessor :cant_get_exp
    attr_accessor :cant_evade
    attr_accessor :slip_damage
    attr_accessor :rating
    attr_accessor :hit_rate
    attr_accessor :maxhp_rate
    attr_accessor :maxsp_rate
    attr_accessor :str_rate
    attr_accessor :dex_rate
    attr_accessor :agi_rate
    attr_accessor :int_rate
    attr_accessor :atk_rate
    attr_accessor :pdef_rate
    attr_accessor :mdef_rate
    attr_accessor :eva
    attr_accessor :battle_only
    attr_accessor :hold_turn
    attr_accessor :auto_release_prob
    attr_accessor :shock_release_prob
    attr_accessor :guard_element_set
    attr_accessor :plus_state_set
    attr_accessor :minus_state_set
  end
end


RPG::System

システムのデータクラス。

スーパークラス

  • Object

属性

magic_number

更新チェック用のマジックナンバー。 ツクールでデータを保存するたびに異なる値に書き換えられます。

party_members

初期パーティ。アクター ID の配列です。

elements

属性名のリスト。属性 ID を 添字に取る文字列の配列で、0 番目の要素は nil です。

switches

スイッチ名のリスト。スイッチ ID を 添字に取る文字列の配列で、0 番目の要素は nil です。

variables

変数名のリスト。変数 ID を 添字に取る文字列の配列で、0 番目の要素は nil です。

windowskin_name

ウィンドウスキン グラフィックのファイル名。

title_name

タイトル グラフィックのファイル名。

gameover_name

ゲームオーバー グラフィックのファイル名。

battle_transition

バトル切り替え時に表示するトランジション グラフィックのファイル名。

title_bgm

タイトル BGM (RPG::AudioFile) 。

battle_bgm

バトル BGM (RPG::AudioFile) 。

battle_end_me

バトル終了 BGM (RPG::AudioFile) 。

gameover_me

ゲームオーバー BGM (RPG::AudioFile) 。

cursor_se

カーソル SE (RPG::AudioFile) 。

decision_se

決定 SE (RPG::AudioFile) 。

cancel_se

キャンセル SE (RPG::AudioFile) 。

buzzer_se

ブザー SE (RPG::AudioFile) 。

equip_se

装備 SE (RPG::AudioFile) 。

shop_se

ショップ SE (RPG::AudioFile) 。

save_se

セーブ SE (RPG::AudioFile) 。

load_se

ロード SE (RPG::AudioFile) 。

battle_start_se

バトル開始 SE (RPG::AudioFile) 。

escape_se

逃走 SE (RPG::AudioFile) 。

actor_collapse_se

アクター コラプス SE (RPG::AudioFile) 。

enemy_collapse_se

エネミー コラプス SE (RPG::AudioFile) 。

words

用語 (RPG::System::Words) 。

start_map_id

プレイヤーの初期位置の、マップ ID。

start_x

プレイヤーの初期位置の、マップ X 座標。

start_y

プレイヤーの初期位置の、マップ Y 座標。

test_battlers

戦闘テストのパーティ設定。RPG::System::TestBattler の配列です。

test_troop_id

戦闘テストのトループ ID。

battleback_name

戦闘テストおよびツクール内部で使用する、バトルバック グラフィック のファイル名。

battler_name

ツクール内部で使用する、バトラー グラフィックのファイル名。

battler_hue

ツクール内部で使用する、バトラー グラフィックの色相変化値 (0..360) 。

edit_map_id

ツクール内部で使用する、現在編集しているマップの ID。

内部クラス

  • RPG::System::Words
  • RPG::System::TestBattler

定義

module RPG
  class System
    def initialize
      @magic_number = 0
      @party_members = [1]
      @elements = [nil, ""]
      @switches = [nil, ""]
      @variables = [nil, ""]
      @windowskin_name = ""
      @title_name = ""
      @gameover_name = ""
      @battle_transition = ""
      @title_bgm = RPG::AudioFile.new
      @battle_bgm = RPG::AudioFile.new
      @battle_end_me = RPG::AudioFile.new
      @gameover_me = RPG::AudioFile.new
      @cursor_se = RPG::AudioFile.new("", 80)
      @decision_se = RPG::AudioFile.new("", 80)
      @cancel_se = RPG::AudioFile.new("", 80)
      @buzzer_se = RPG::AudioFile.new("", 80)
      @equip_se = RPG::AudioFile.new("", 80)
      @shop_se = RPG::AudioFile.new("", 80)
      @save_se = RPG::AudioFile.new("", 80)
      @load_se = RPG::AudioFile.new("", 80)
      @battle_start_se = RPG::AudioFile.new("", 80)
      @escape_se = RPG::AudioFile.new("", 80)
      @actor_collapse_se = RPG::AudioFile.new("", 80)
      @enemy_collapse_se = RPG::AudioFile.new("", 80)
      @words = RPG::System::Words.new
      @test_battlers = []
      @test_troop_id = 1
      @start_map_id = 1
      @start_x = 0
      @start_y = 0
      @battleback_name = ""
      @battler_name = ""
      @battler_hue = 0
      @edit_map_id = 1
    end
    attr_accessor :magic_number
    attr_accessor :party_members
    attr_accessor :elements
    attr_accessor :switches
    attr_accessor :variables
    attr_accessor :windowskin_name
    attr_accessor :title_name
    attr_accessor :gameover_name
    attr_accessor :battle_transition
    attr_accessor :title_bgm
    attr_accessor :battle_bgm
    attr_accessor :battle_end_me
    attr_accessor :gameover_me
    attr_accessor :cursor_se
    attr_accessor :decision_se
    attr_accessor :cancel_se
    attr_accessor :buzzer_se
    attr_accessor :equip_se
    attr_accessor :shop_se
    attr_accessor :save_se
    attr_accessor :load_se
    attr_accessor :battle_start_se
    attr_accessor :escape_se
    attr_accessor :actor_collapse_se
    attr_accessor :enemy_collapse_se
    attr_accessor :words
    attr_accessor :test_battlers
    attr_accessor :test_troop_id
    attr_accessor :start_map_id
    attr_accessor :start_x
    attr_accessor :start_y
    attr_accessor :battleback_name
    attr_accessor :battler_name
    attr_accessor :battler_hue
    attr_accessor :edit_map_id
  end
end


RPG::System::TestBattler

戦闘テストで使用するバトラーのデータクラス。

スーパークラス

  • Object

参照元

  • RPG::System

属性

actor_id

アクター ID。

level

レベル。

weapon_id

武器の ID。

armor1_id

盾の ID。

armor2_id

頭防具の ID。

armor3_id

身体防具の ID。

armor4_id

装飾品の ID。

定義

module RPG
  class System
    class TestBattler
      def initialize
        @actor_id = 1
        @level = 1
        @weapon_id = 0
        @armor1_id = 0
        @armor2_id = 0
        @armor3_id = 0
        @armor4_id = 0
      end
      attr_accessor :actor_id
      attr_accessor :level
      attr_accessor :weapon_id
      attr_accessor :armor1_id
      attr_accessor :armor2_id
      attr_accessor :armor3_id
      attr_accessor :armor4_id
    end
  end
end


RPG::System::Words

用語のデータクラス。

スーパークラス

  • Object

参照元

  • RPG::System

属性

gold

G (通貨単位) 。

hp

HP。

sp

SP。

str

腕力。

dex

器用さ。

agi

素早さ。

int

魔力。

atk

攻撃力。

pdef

物理防御。

mdef

魔法防御。

weapon

武器。

armor1

盾。

armor2

頭。

armor3

身体。

armor4

装飾品。

attack

攻撃。

skill

スキル。

guard

防御。

item

アイテム。

equip

装備。

定義

module RPG
  class System
    class Words
      def initialize
        @gold = ""
        @hp = ""
        @sp = ""
        @str = ""
        @dex = ""
        @agi = ""
        @int = ""
        @atk = ""
        @pdef = ""
        @mdef = ""
        @weapon = ""
        @armor1 = ""
        @armor2 = ""
        @armor3 = ""
        @armor4 = ""
        @attack = ""
        @skill = ""
        @guard = ""
        @item = ""
        @equip = ""
      end
      attr_accessor :gold
      attr_accessor :hp
      attr_accessor :sp
      attr_accessor :str
      attr_accessor :dex
      attr_accessor :agi
      attr_accessor :int
      attr_accessor :atk
      attr_accessor :pdef
      attr_accessor :mdef
      attr_accessor :weapon
      attr_accessor :armor1
      attr_accessor :armor2
      attr_accessor :armor3
      attr_accessor :armor4
      attr_accessor :attack
      attr_accessor :skill
      attr_accessor :guard
      attr_accessor :item
      attr_accessor :equip
    end
  end
end


RPG::Tileset

タイルセットのデータクラス。

スーパークラス

  • Object

属性

id

ID。

name

名前。

tileset_name

タイルセット グラフィックのファイル名。

autotile_names

オートタイル グラフィックのファイル名の配列 ([0]..[6]) 。

panorama_name

パノラマ グラフィックのファイル名。

panorama_hue

パノラマ グラフィックの色相変化値 (0..360) 。

fog_name

フォグ グラフィックのファイル名。

fog_hue

フォグ グラフィックの色相変化値 (0..360) 。

fog_opacity

フォグの不透明度。

fog_blend_type

フォグの合成方法。

fog_zoom

フォグの拡大率。

fog_sx

フォグの SX (X 方向に自動スクロールする速度) 。

fog_sy

フォグの SY (Y 方向に自動スクロールする速度) 。

battleback_name

バトルバック グラフィックのファイル名。

passages

通行テーブル。通行フラグ、茂みフラグ、およびカウンターフラグを 格納した一次元配列 (Table) です。

タイル ID を添字として取ります。各ビットの対応は以下の通りです。

  • 0x01 : 下方向通行不可。
  • 0x02 : 左方向通行不可。
  • 0x04 : 右方向通行不可。
  • 0x08 : 上方向通行不可。
  • 0x40 : 茂みフラグ。
  • 0x80 : カウンターフラグ。
priorities

プライオリティテーブル。プライオリティデータを格納した 一次元配列 (Table) です。

タイル ID を添字として取ります。

terrain_tags

地形タグテーブル。地形タグデータを格納した 一次元配列 (Table) です。

タイル ID を添字として取ります。

定義

module RPG
  class Tileset
    def initialize
      @id = 0
      @name = ""
      @tileset_name = ""
      @autotile_names = [""]*7
      @panorama_name = ""
      @panorama_hue = 0
      @fog_name = ""
      @fog_hue = 0
      @fog_opacity = 64
      @fog_blend_type = 0
      @fog_zoom = 200
      @fog_sx = 0
      @fog_sy = 0
      @battleback_name = ""
      @passages = Table.new(384)
      @priorities = Table.new(384)
      @priorities[0] = 5
      @terrain_tags = Table.new(384)
    end
    attr_accessor :id
    attr_accessor :name
    attr_accessor :tileset_name
    attr_accessor :autotile_names
    attr_accessor :panorama_name
    attr_accessor :panorama_hue
    attr_accessor :fog_name
    attr_accessor :fog_hue
    attr_accessor :fog_opacity
    attr_accessor :fog_blend_type
    attr_accessor :fog_zoom
    attr_accessor :fog_sx
    attr_accessor :fog_sy
    attr_accessor :battleback_name
    attr_accessor :passages
    attr_accessor :priorities
    attr_accessor :terrain_tags
  end
end


RPG::Troop

トループのデータクラス。

スーパークラス

  • Object

属性

id

ID。

name

名前。

members

トループメンバー。RPG::Troop::Member の配列です。

pages

バトルイベント。RPG::Troop::Page の配列です。

内部クラス

  • RPG::Troop::Member
  • RPG::Troop::Page

定義

module RPG
  class Troop
    def initialize
      @id = 0
      @name = ""
      @members = []
      @pages = [RPG::BattleEventPage.new]
    end
    attr_accessor :id
    attr_accessor :name
    attr_accessor :members
    attr_accessor :pages
  end
end


RPG::Troop::Member

トループメンバーのデータクラス。

スーパークラス

  • Object

参照元

  • RPG::Troop

属性

enemy_id

エネミー ID。

x

足元の X 座標。

y

足元の Y 座標。

hidden

オプション [途中から出現] の真偽値。

immortal

オプション [不死身] の真偽値。

定義

module RPG
  class Troop
    class Member
      def initialize
        @enemy_id = 1
        @x = 0
        @y = 0
        @hidden = false
        @immortal = false
      end
      attr_accessor :enemy_id
      attr_accessor :x
      attr_accessor :y
      attr_accessor :hidden
      attr_accessor :immortal
    end
  end
end


RPG::Troop::Page

バトルイベント (ページ) のデータクラス。

スーパークラス

  • Object

参照元

  • RPG::Troop

属性

condition

条件 (RPG::Troop::Page::Condition) 。

span

スパン (0:バトル、1:ターン、2:モーメント) 。

list

実行内容。RPG::EventCommand の配列です。

内部クラス

  • RPG::Troop::Page::Condition

定義

module RPG
  class Troop
    class Page
      def initialize
        @condition = RPG::Troop::Page::Condition.new
        @span = 0
        @list = [RPG::EventCommand.new]
      end
      attr_accessor :condition
      attr_accessor :span
      attr_accessor :list
    end
  end
end


RPG::Troop::Page::Condition

バトルイベントの [条件] のデータクラス。

スーパークラス

  • Object

参照元

  • RPG::Troop::Page

属性

turn_valid

条件 [ターン] が有効かどうかを示す真偽値。

enemy_valid

条件 [エネミー] が有効かどうかを示す真偽値。

actor_valid

条件 [アクター] が有効かどうかを示す真偽値。

switch_valid

条件 [スイッチ] が有効かどうかを示す真偽値。

turn_a
turn_b

条件 [ターン] に指定された a、b の値。a + bx の形で入力されます。

enemy_index

条件 [エネミー] に指定された、トループメンバーのインデックス (0..7)。

enemy_hp

条件 [エネミー] に指定された HP の割合 (%) 。

actor_id

条件 [アクター] に指定されたアクターの ID。

actor_hp

条件 [アクター] に指定された HP の割合 (%) 。

switch_id

条件 [スイッチ] に指定されたスイッチの ID。

定義

module RPG
  class Troop
    class Page
      class Condition
        def initialize
          @turn_valid = false
          @enemy_valid = false
          @actor_valid = false
          @switch_valid = false
          @turn_a = 0
          @turn_b = 0
          @enemy_index = 0
          @enemy_hp = 50
          @actor_id = 1
          @actor_hp = 50
          @switch_id = 1
        end
        attr_accessor :turn_valid
        attr_accessor :enemy_valid
        attr_accessor :actor_valid
        attr_accessor :switch_valid
        attr_accessor :turn_a
        attr_accessor :turn_b
        attr_accessor :enemy_index
        attr_accessor :enemy_hp
        attr_accessor :actor_id
        attr_accessor :actor_hp
        attr_accessor :switch_id
      end
    end
  end
end


RPG::Weapon

武器のデータクラス。

スーパークラス

  • Object

属性

id

ID。

name

名前。

icon_name

アイコン グラフィックのファイル名。

description

説明。

animation1_id

攻撃側アニメーションの ID。

animation2_id

対象側アニメーションの ID。

price

価格。

atk

攻撃力。

pdef

物理防御。

mdef

魔法防御。

str_plus

腕力+。

dex_plus

器用さ+。

agi_plus

素早さ+。

int_plus

魔力+。

element_set

属性。属性 ID の配列です。

plus_state_set

付加するステート。ステート ID の配列です。

minus_state_set

解除するステート。ステート ID の配列です。

定義

module RPG
  class Weapon
    def initialize
      @id = 0
      @name = ""
      @icon_name = ""
      @description = ""
      @animation1_id = 0
      @animation2_id = 0
      @price = 0
      @atk = 0
      @pdef = 0
      @mdef = 0
      @str_plus = 0
      @dex_plus = 0
      @agi_plus = 0
      @int_plus = 0
      @element_set = []
      @plus_state_set = []
      @minus_state_set = []
    end
    attr_accessor :id
    attr_accessor :name
    attr_accessor :icon_name
    attr_accessor :description
    attr_accessor :animation1_id
    attr_accessor :animation2_id
    attr_accessor :price
    attr_accessor :atk
    attr_accessor :pdef
    attr_accessor :mdef
    attr_accessor :str_plus
    attr_accessor :dex_plus
    attr_accessor :agi_plus
    attr_accessor :int_plus
    attr_accessor :element_set
    attr_accessor :plus_state_set
    attr_accessor :minus_state_set
  end
end


RPG::Weather

RPGXP のイベントコマンドで表示する天候エフェクト (雨、嵐、雪) のクラス。

スーパークラス

  • Object

クラスメソッド

RPG::Weather.new([viewport])

RPG::Weather オブジェクトを生成します。必要に応じてビューポート (Viewport) を指定します。

メソッド

dispose

天候エフェクトを解放します。

update

天候エフェクトを進めます。 このメソッドは、原則として 1 フレームに 1 回呼び出します。

プロパティ

type

天候タイプ (0:なし、1:雨、2:嵐、3:雪) です。

max

天候エフェクトの画像を一度に表示する量 (0..40) です。

ox

原点の X 座標です。 タイルマップの原点に合わせることでスクロールに追従します。

oy

原点の Y 座標です。 タイルマップの原点に合わせることでスクロールに追従します。

定義

module RPG
  class Weather
    def initialize(viewport = nil)
      @type = 0
      @max = 0
      @ox = 0
      @oy = 0
      color1 = Color.new(255, 255, 255, 255)
      color2 = Color.new(255, 255, 255, 128)
      @rain_bitmap = Bitmap.new(7, 56)
      for i in 0..6
        @rain_bitmap.fill_rect(6-i, i*8, 1, 8, color1)
      end
      @storm_bitmap = Bitmap.new(34, 64)
      for i in 0..31
        @storm_bitmap.fill_rect(33-i, i*2, 1, 2, color2)
        @storm_bitmap.fill_rect(32-i, i*2, 1, 2, color1)
        @storm_bitmap.fill_rect(31-i, i*2, 1, 2, color2)
      end
      @snow_bitmap = Bitmap.new(6, 6)
      @snow_bitmap.fill_rect(0, 1, 6, 4, color2)
      @snow_bitmap.fill_rect(1, 0, 4, 6, color2)
      @snow_bitmap.fill_rect(1, 2, 4, 2, color1)
      @snow_bitmap.fill_rect(2, 1, 2, 4, color1)
      @sprites = []
      for i in 1..40
        sprite = Sprite.new(viewport)
        sprite.z = 1000
        sprite.visible = false
        sprite.opacity = 0
        @sprites.push(sprite)
      end
    end
    def dispose
      for sprite in @sprites
        sprite.dispose
      end
      @rain_bitmap.dispose
      @storm_bitmap.dispose
      @snow_bitmap.dispose
    end
    def type=(type)
      return if @type == type
      @type = type
      case @type
      when 1
        bitmap = @rain_bitmap
      when 2
        bitmap = @storm_bitmap
      when 3
        bitmap = @snow_bitmap
      else
        bitmap = nil
      end
      for i in 1..40
        sprite = @sprites[i]
        if sprite != nil
          sprite.visible = (i <= @max)
          sprite.bitmap = bitmap
        end
      end
    end
    def ox=(ox)
      return if @ox == ox;
      @ox = ox
      for sprite in @sprites
        sprite.ox = @ox
      end
    end
    def oy=(oy)
      return if @oy == oy;
      @oy = oy
      for sprite in @sprites
        sprite.oy = @oy
      end
    end
    def max=(max)
      return if @max == max;
      @max = [[max, 0].max, 40].min
      for i in 1..40
        sprite = @sprites[i]
        if sprite != nil
          sprite.visible = (i <= @max)
        end
      end
    end
    def update
      return if @type == 0
      for i in 1..@max
        sprite = @sprites[i]
        if sprite == nil
          break
        end
        if @type == 1
          sprite.x -= 2
          sprite.y += 16
          sprite.opacity -= 8
        end
        if @type == 2
          sprite.x -= 8
          sprite.y += 16
          sprite.opacity -= 12
        end
        if @type == 3
          sprite.x -= 2
          sprite.y += 8
          sprite.opacity -= 8
        end
        x = sprite.x - @ox
        y = sprite.y - @oy
        if sprite.opacity < 64 or x < -50 or x > 750 or y < -300 or y > 500
          sprite.x = rand(800) - 50 + @ox
          sprite.y = rand(800) - 200 + @oy
          sprite.opacity = 255
        end
      end
    end
    attr_reader :type
    attr_reader :max
    attr_reader :ox
    attr_reader :oy
  end
end


Sprite

スプライトのクラス。スプライトは、ゲーム画面上にキャラクター等を 表示するための基本概念です。

スーパークラス

  • Object

クラスメソッド

Sprite.new([viewport])

Sprite オブジェクトを生成します。必要に応じてビューポート (Viewport) を指定します。

メソッド

dispose

スプライトを解放します。すでに解放されている場合は何も行いません。

disposed?

スプライトがすでに解放されている場合に真を返します。

viewport

生成時に指定されたビューポート (Viewport) を 取得します。

flash(color, duration)

スプライトのフラッシュを開始します。duration は フラッシュにかけるフレーム数です。

color に nil を指定した場合は、フラッシュの時間分 スプライト自体を消去します。

update

スプライトのフラッシュを進めます。 このメソッドは、原則として 1 フレームに 1 回呼び出します。

フラッシュの必要がない場合は呼び出さなくても構いません。

プロパティ

bitmap

転送元とするビットマップ (Bitmap) への参照です。

src_rect

ビットマップから転送される矩形 (Rect) です。

visible

スプライトの可視状態です。真のとき可視になります。

x

スプライトの X 座標です。

y

スプライトの Y 座標です。

z

スプライトの Z 座標です。この値が大きいものほど手前に表示されま す。Z 座標が同一の場合は、後に生成されたオブジェクトほど手前に表示されます。

ox

スプライトの転送元原点の X 座標です。

oy

スプライトの転送元原点の Y 座標です。

zoom_x

スプライトの X 方向拡大率です。1.0 で等倍になります。

zoom_y

スプライトの Y 方向拡大率です。1.0 で等倍になります。

angle

スプライトの回転角度です。反時計回りを正とする 360 度系で指定します。 回転描画には時間がかかりますので、多用は避けてください。

mirror

スプライトの左右反転フラグです。真のとき反転して描画されます。

bush_depth

スプライトの茂み深さです。茂み深さとは、スプライトの下部を半透明で表示 するドット数です。この効果により、キャラクターの足元が茂みなどに隠れている ような表現を簡単に行うことができます。

opacity

スプライトの不透明度です。0 ～ 255 の範囲で指定します。範囲外の値は 自動で修正されます。

blend_type

スプライトの合成方法 (0:通常、1:加算、2:減算) です。

color

スプライトにブレンドする色 (Color) です。 ブレンドの割合にはアルファ値が使用されます。

flash によってブレンドされる色とは別に 管理されます。ただし、表示の際にはアルファ値の大きいほうの色が優先して ブレンドされます。

tone

スプライトの色調 (Tone) です。


Table

다차원 배열의 클래스. 각 요소는 부호 첨부 2 바이트형태, 즉 -32, 768 으로부터 32,767 의 범위의 정수가 됩니다.

대량의 데이터를 취급하는 경우, Ruby 의 Array 클래스로 (은)는 실행 효율이 나빠지기 (위해)때문에, 이 클래스가 준비되어 있습니다.

슈퍼 클래스

  • Object

클래스 메소드

Table.new(xsize[, ysize[, zsize]])

Table 오브젝트를 생성합니다. 다차원 배열의 각 차원의 사이즈를 지정합니다. 생성 할 수 있는 배열은 1 ? 3 차원입니다. 요소수가 0 의 배열을 생성하는 것도 가능하고 .

메소드

resize(xsize[, ysize[, zsize]])

배열의 사이즈를 변경합니다. 변경전의 데이터는 보관 유지됩니다.

xsize
ysize
zsize

배열의 각 차원의 사이즈를 취득합니다.

프롭퍼티

self[x]
self[x, y]
self[x, y, z]

배열의 요소에 액세스 합니다. 생성한 배열의 차원수와 같은 수의 인수를 잡습니다. 지정된 요소가 존재하지 않을 때에는 nil 를 돌려줍니다.


Tilemap

타일 맵을 관리하는 클래스. 타일 맵은 2D 게임의 맵 표시에 특화한 개념으로, 내부적으로는 복수의 스프라이트로 구성되어 있습니다.

슈퍼 클래스

  • Object

클래스 메소드

Tilemap.new([viewport])

Tilemap 오브젝트를 생성합니다. 필요에 따라서 뷰포트 (Viewport )(을)를 지정합니다.

메소드

dispose

타일 맵을 해방합니다. 이미 해방되어 있는 경우는 아무것도 하지 않습니다.

disposed?

타일 맵이 벌써 해방되어 있는 경우에 진을 돌려줍니다.

viewport

생성시에 지정된 뷰포트 (Viewport )를 취득합니다.

update

오토 타일의 애니메이션 등을 진행시킵니다. 이 메소드는, 원칙으로서 1 프레임에 1 회 호출합니다.

프롭퍼티

tileset

타일 세트로서 사용하는 비트 맵 (Bitmap )에의 참조입니다.

autotiles[index]

번호 index (0 ? 6)의 오토 타일로서 사용한다 비트 맵 (Bitmap )에의 참조입니다.

map_data

맵 데이터 (Table )에의 참조입니다. 옆사이즈 * 세로 사이즈 * 3 의 3 차원 배열을 설정합니다.

flash_data

시뮬레이션 게임의 이동 범위의 표시 등에 사용하는, 플래시 데이터 (Table )에의 참조입니다. 옆사이즈 * 세로 사이즈의 2 차원 배열을 설정합니다. 반드시 맵 데이터와 같은 사이즈가 아니면 되지 않습니다. 각 요소는, 타일의 플래시색을 RGB 각 4 비트로 나타냅니다. 예를 들어 0xf84 의 경우는, RGB(15,8,4)의 색으로 플래시 합니다.

priorities

priority 테이블 (Table )에의 참조입니다. 타일 ID 에 대응한 요소를 가지는 1 차원 배열을 설정합니다.

visible

타일 맵의 가시 상태입니다. 진정한 때가시가 됩니다.

ox

타일 맵의 전송 모토하라점의 X 좌표입니다. 이 값을 변화 시키는 것에 따라 스크롤을 합니다.

oy

타일 맵의 전송 모토하라점의 Y 좌표입니다. 이 값을 변화 시키는 것에 따라 스크롤을 합니다.

비고

타일 맵을 구성하는 각 스프라이트의 Z 좌표는 특정의 값에 고정되어 있습니다.

  1. priority 0 의 타일의 Z 좌표는 반드시 0 이 됩니다.
  2. 화면의 상단에 위치 하는 priority 1 의 타일의 Z 좌표는 64 가 됩니다.
  3. priority가 1 증가할까 타일 1 개분 아래에 갈 때 마다, Z 좌표는 32 두 개(살) 증가합니다.
  4. 타일 맵이 세로에 스크롤 하면(자), Z 좌표도 그것과 함께 변화합니다.

맵상에 표시 시키는 캐릭터의 Z 좌표는, 이것을 전제로 해 결정하지 않으면 되지 않습니다.


Tone

색조의 클래스. 각 요소는 부동 소수점수(실수) (Float )(으)로 관리됩니다.

슈퍼 클래스

  • Object

클래스 메소드

Tone.new(red, green, blue[, gray])

Tone 오브젝트를 생성합니다. gray 를 생략 할 경우는 0 이 됩니다.

메소드

set(red, green, blue[, gray])

전요소를 정리해 설정합니다.

프롭퍼티

red

빨강 성분의 color-balance 조정값 (-255 ? 255)입니다. 범위외의 값은 자동으로 수정됩니다.

green

초록 성분의 color-balance 조정값 (-255 ? 255)입니다. 범위외의 값은 자동으로 수정됩니다.

blue

파랑 성분의 color-balance 조정값 (-255 ? 255)입니다. 범위외의 값은 자동으로 수정됩니다.

gray

그레이 스케일화 필터의 강함 (0 ? 255)입니다. 범위외의 값은 자동으로 수정됩니다.

이 값이 0 이외의 경우, 색성분의 밸런스 조정만의 경우보다 여분에 처리 시간이 걸립니다.


Viewport

뷰포트의 클래스. 화면의 일부에 스프라이트를 표시해, 다른 부분에 초과하지 않게 하고 싶은 경우에 사용합니다.

슈퍼 클래스

  • Object

클래스 메소드

Viewport.new(x, y, width, height)
Viewport.new(rect)

Viewport 오브젝트를 생성합니다.

메소드

dispose

뷰포트를 해방합니다. 이미 해방되어 있는 경우는 아무것도 하지 않습니다.

disposed?

뷰포트가 벌써 해방되어 있는 경우에 진을 돌려줍니다.

flash(color, duration)

뷰포트의 플래시를 개시합니다. duration 는 플래시에 걸치는 프레임수입니다.

color 에 nil 를 지정할 경우는, 플래시의 시간분 뷰포트 자체를 소거합니다.

update

뷰포트의 플래시를 진행시킵니다. 이 메소드는, 원칙으로서 1 프레임에 1 회 호출합니다.

플래시의 필요가 없는 경우는 호출하지 않아도 상관하지 않습니다.

프롭퍼티

rect

뷰포트로서 설정하는 구형 (Rect )입니다.

visible

뷰포트의 가시 상태입니다. 진정한 때가시가 됩니다.

z

뷰포트의 Z 좌표입니다. 이 값이 큰 것 정도 전에 표시 . Z 좌표가 동일한 경우는, 후에 생성된 오브젝트 정도 전에 표시됩니다.

ox

뷰포트의 전송 모토하라점의 X 좌표입니다. 이 값을 변화 시키는 것에 따라 화면의 시이크 등을 합니다.

oy

뷰포트의 전송 모토하라점의 Y 좌표입니다. 이 값을 변화 시키는 것에 따라 화면의 시이크 등을 합니다.

color

뷰포트에 브렌드 하는 색 (Color )입니다. 브렌드의 비율에는 알파값이 사용됩니다.

flash 에 의해 브렌드 되는 색과는 따로 관리됩니다.

tone

뷰포트의 색조 (Tone )입니다.


Window

게임내의 윈도우의 클래스. 내부적으로는 복수의 스프라이트로 구성되어 있습니다.

슈퍼 클래스

  • Object

클래스 메소드

Window.new([viewport])

Window 오브젝트를 생성합니다. 필요에 따라서 뷰포트 (Viewport )(을)를 지정합니다.

메소드

viewport

생성시에 지정된 뷰포트 (Viewport )를 취득합니다.

dispose

윈도우를 해방합니다. 이미 해방되어 있는 경우는 아무것도 하지 않습니다.

disposed?

윈도우가 벌써 해방되어 있는 경우에 진을 돌려줍니다.

update

커서의 점멸, 포즈 싸인의 애니메이션을 진행시킵니다. 이 메소드는, 원칙으로서 1 프레임에 1 회 호출합니다.

프롭퍼티

windowskin

윈도우 스킨으로서 사용하는 비트 맵 (Bitmap )에의 참조입니다.

contents

윈도우 내용으로서 표시하는 비트 맵 (Bitmap )에의 참조입니다.

stretch

벽지의 표시 방법입니다. 진정한 때 「확대해 표시」, 가짜 때 「늘어놓아 표시」가 됩니다. 초기값은 true 입니다.

cursor_rect

커서의 구형 (Rect )입니다. 윈도우의 좌상구석을 (-16, -16)이라고 한 상대 좌표로 지정합니다.

active

커서의 점멸 상태입니다. 진정한 풀어 점멸합니다.

visible

윈도우의 가시 상태입니다. 진정한 때가시가 됩니다.

pause

포즈 싸인의 가시 상태입니다. 포즈 싸인이라는 것은, 메세지 윈도우의 버튼 입력 대기 상태를 나타내는 기호의 (일)것입니다. 진정한 때가시가 됩니다.

x

윈도우의 X 좌표입니다.

y

윈도우의 Y 좌표입니다.

width

윈도우의 폭입니다.

height

윈도우의 높이입니다.

z

윈도우 배경의 Z 좌표입니다. 이 값이 큰 것 정도 전에 표시되고 . Z 좌표가 동일한 경우는, 후에 생성된 오브젝트 정도 전에 표시 됩니다. 윈도우 내용의 Z 좌표는, 윈도우 배경의 Z 좌표에 2 를 가산한 값이 됩니다.

ox

윈도우 내용의 전송 모토하라점의 X 좌표입니다. 이 값을 변화 시키는 것에 따라 스크롤을 합니다.

oy

윈도우 내용의 전송 모토하라점의 Y 좌표입니다. 이 값을 변화 시키는 것에 따라 스크롤을 합니다.

opacity

윈도우의 불투명도 (0 ? 255)입니다. 범위외의 값은 자동으로 수정됩니다.

back_opacity

윈도우 배경의 불투명도 (0 ? 255)입니다. 범위외의 값은 자동으로 수정됩니다.

contents_opacity

윈도우 내용의 불투명도 (0 ? 255)입니다. 범위외의 값은 자동으로 수정됩니다.


Audio

뮤직, 사운드와 관계되는 처리를 하는 모듈.

모듈 메소드

Audio.bgm_play(filename[, volume[, pitch]])

BGM 의 연주를 개시합니다. 순서에 파일명, 볼륨, 피치를 지정합니다.

RGSS-RTP 에 포함되는 파일도 자동적으로 찾습니다. 확장자(extension)는 생략 가능합니다.

Audio.bgm_stop

BGM 의 연주를 정지합니다.

Audio.bgm_fade(time)

BGM 의 용암을 개시합니다. time 는, 용암에 걸칠 시간을 밀리 세컨드 단위로 지정합니다.

Audio.bgs_play(filename[, volume[, pitch]])

BGS 의 연주를 개시합니다. 순서에 파일명, 볼륨, 피치를 지정합니다.

RGSS-RTP 에 포함되는 파일도 자동적으로 찾습니다. 확장자(extension)는 생략 가능합니다.

Audio.bgs_stop

BGS 의 연주를 정지합니다.

Audio.bgs_fade(time)

BGS 의 용암을 개시합니다. time 는, 용암에 걸칠 시간을 밀리 세컨드 단위로 지정합니다.

Audio.me_play(filename[, volume[, pitch]])

ME 의 연주를 개시합니다. 순서에 파일명, 볼륨, 피치를 지정합니다.

RGSS-RTP 에 포함되는 파일도 자동적으로 찾습니다. 확장자(extension)는 생략 가능합니다.

Audio.me_stop

ME 의 연주를 정지합니다.

Audio.me_fade(time)

ME 의 용암을 개시합니다. time 는, 용암에 걸칠 시간을 밀리 세컨드 단위로 지정합니다.

Audio.se_play(filename[, volume[, pitch]])

SE 의 연주를 개시합니다. 순서에 파일명, 볼륨, 피치를 지정합니다.

RGSS-RTP 에 포함되는 파일도 자동적으로 찾습니다. 확장자(extension)는 생략 가능합니다.

극히 단기간에 같은 SE 를 연주 하려고 할 경우, 소리 결렬을 방지 하기 위한(해), 자동적으로 솎아냄 처리를 합니다.

Audio.se_stop

모든 SE 의 연주를 정지합니다.


Graphics

그래픽 전체와 관계되는 처리를 하는 모듈.

모듈 메소드

Graphics.update

게임 화면을 갱신해, 시간을 1 프레임 진행합니다. 이 메소드는 반드시 정기적으로 호출할 필요가 있습니다.

loop do
  Graphics.update
  Input.update
  do_something
end

이 메소드가 10 초 이상으로 건너 실행되지 않았던 경우, 스크립트가 폭주했다고 해 강제 종료됩니다.

Graphics.freeze

트란지션의 준비로서 현재의 화면을 고정합니다.

이것 이후 transition 메소드를 호출할 때까지는, 일절의 화면이 고쳐 쓰고가 금지됩니다.

Graphics.transition([duration[, filename[, vague]]])

freeze 메소드로 고정한 화면으로부터 현재의 화면에의 트란지션을 합니다.

duration 는 트란지션에 걸치는 프레임수입니다. 생략시는 8 이 됩니다.

filename 는 트란지션그라픽크의 파일명을 지정합니다 (지정하지 않는 경우는 통상의 페이드가 됩니다) . RGSS-RTP ,암호화 어카이브(archive)에 포함되는 파일도 자동적으로 찾습니다. 확장자(extension)는 생략 가능합니다.

vague 는 전송원과 전송처의 경계의 애매함으로, 값이 큰 만큼 애매하게 됩니다. 생략시는 40 이 됩니다.

Graphics.frame_reset

화면의 갱신 타이밍을 리셋트 합니다. 시간이 걸리는 처리의 뒤에 이 메소드를 부르는 것으로, 극단적인 프레임 스킵이 발생하지 않게 한다 일을 할 수 있습니다.

모듈 프롭퍼티

Graphics.frame_rate

[나메라들인가 모드] 때에 1 초간에 화면을 갱신하는 회수입니다. 값이 큰 만큼 많은 CPU 파워가 필요하게 됩니다. 통상은 40 입니다. [나메라들인가 모드] 나오지 않다 경우, 갱신 회수는 반이 되어, 1 프레임 마다 스킵 해 묘화 됩니다.

이 프롭퍼티를 변경하는 것은 추천 되지 않습니다만, 변경하는 경우 (은)는 10 ? 120 의 범위로 지정합니다. 범위외의 값은 자동으로 수정됩니다.

Graphics.frame_count

화면의 갱신 회수의 카운트입니다. 게임 개시시에 이 프롭퍼티를 0 으로 설정해 두면(자), frame_rate 프롭퍼티의 값으로 나누는 것으로, 게임의 플레이 시간 (초수)이 산출 할 수 있습니다.


Input

게임패드나 키보드로부터의 입력 정보를 취급하는 모듈.

모듈 메소드

Input.update

입력 정보를 갱신합니다. 원칙으로서 1 프레임에 1 회 호출합니다.

Input.press? (num)

번호 num 에 대응하는 버튼이, 현재 눌러지고 있을지 어떨지를 판정 합니다.

눌러지고 있으면 true, 눌러지고 있지 않으면 false 를 돌려줍니다.

if Input.press? (Input::C)
  do_something
end
Input.trigger? (num)

번호 num 에 대응하는 버튼이, 새롭게 눌러졌는지 어떠했는지를 판정 합니다.

눌러지고 있지 않은 상태로부터 눌러진 상태로 바뀐 순간만 「새롭게 눌러졌다」라고 보입니다.

눌러지고 있으면 true, 눌러지고 있지 않으면 false 를 돌려줍니다.

Input.repeat? (num)

번호 num 에 대응하는 버튼이, 새롭게 눌러졌는지 어떠했는지를 판정 합니다.

trigger? (와)과 달리, 버튼을 계속 누를 경우 의 리피트를 고려합니다.

눌러지고 있으면 true, 눌러지고 있지 않으면 false 를 돌려줍니다.

Input.dir4

방향 버튼의 상태를 판정 해, 4 방향 입력에 특화한 형태로, 숫자 패드의 숫자에 대응한다 정수 (2, 4, 6, 8)를 돌려줍니다.

방향 버튼이 눌러지고 있지 않은 경우 (또는 그것과 동등으로 간주해진다 경우)는 0 을 돌려줍니다.

Input.dir8

방향 버튼의 상태를 판정 해, 8 방향 입력에 특화한 형태로, 숫자 패드의 숫자에 대응한다 정수 (1, 2, 3, 4, 6, 7, 8, 9)를 돌려줍니다.

방향 버튼이 눌러지고 있지 않은 경우 (또는 그것과 동등으로 간주해진다 경우)는 0 을 돌려줍니다.

정수

DOWN LEFT RIGHT UP

방향 버튼아래, 왼쪽, 오른쪽, 위에 대응하는 번호입니다.

A B C X Y Z L R

각각의 버튼에 대응하는 번호입니다.

SHIFT CTRL ALT

키보드의 SHIFT, CTRL, ALT 키에 직접 대응하는 번호입니다.

F5 F6 F7 F8 F9

키보드의 각 function key에 대응하는 번호입니다. 이외의 키는 시스템에 예약되어 있기 (위해)때문에, 취득할 수 없습니다.


RPG

RPGXP 의 데이터 구조 등을 모은 모듈.

내부 모듈

  • RPG::Cache

내부 클래스

  • RPG::Sprite
  • RPG::Weather
  • RPG::Map
  • RPG::MapInfo
  • RPG::Event
  • RPG::Event::Page
  • RPG::Event::Page::Condition
  • RPG::Event::Page::Graphic
  • RPG::EventCommand
  • RPG::MoveRoute
  • RPG::MoveCommand
  • RPG::Actor
  • RPG::Class
  • RPG::Class::Learning
  • RPG::Skill
  • RPG::Item
  • RPG::Weapon
  • RPG::Armor
  • RPG::Enemy
  • RPG::Enemy::Action
  • RPG::Troop
  • RPG::Troop::Member
  • RPG::Troop::Page
  • RPG::Troop::Page::Condition
  • RPG::State
  • RPG::Animation
  • RPG::Animation::Frame
  • RPG::Animation::Timing
  • RPG::Tileset
  • RPG::CommonEvent
  • RPG::System
  • RPG::System::Words
  • RPG::AudioFile


RPG::Cache

RPGXP 의 각종 그래픽을 읽어들여,Bitmap 오브젝트를 작성, 보관 유지하는 모듈.

이 모듈은, 읽을 고속화와 메모리 절약 (위해)때문에, 작성한 Bitmap 오브젝트를 내부의 해시에 보존해, 같은 비트 맵이 재차 요구되었을 때에 기존의 오브젝트를 돌려주게 되어 있습니다.

상기의 동작 (위해)때문에, 다른 스프라이트의 전송원 등에 지정되어 있는 비트 맵 (을)를 Bitmap#dispose 로 해방하지 않게 주의해 주세요. 비트 맵이 요구된 시점으로 그 오브젝트가 벌써 해방되어 있는 경우는 자동적으로 재작성하기 때문에, 어디에서도 참조되어 있지 않다 상태라면 해방해도 안전합니다. 비트 맵은 메모리를 대량으로 소비 하기 위한(해), 에 밖에 사용하지 않는 비트 맵은 해방하도록(듯이) 하는 편이 좋을 것이다.

지정된 파일명이 공문자열의 경우는, 32×32 의 Bitmap 를 작성해 돌려줍니다. 이것은 트크르�의 "(None) " 지정에 대응하고 있습니다.

모듈 메소드

RPG::Cache.animation(filename, hue)

애니메이션 그래픽을 취득합니다. hue 로 색상 변화값을 지정합니다.

RPG::Cache.autotile(filename)

오토 타일 그래픽을 취득합니다.

RPG::Cache.battleback(filename)

배틀 백 그래픽을 취득합니다.

RPG::Cache.battler(filename, hue)

butler 그래픽을 취득합니다. hue 로 색상 변화값을 지정합니다.

RPG::Cache.character(filename, hue)

캐릭터 그래픽을 취득합니다. hue 로 색상 변화값을 지정합니다.

RPG::Cache.fog(filename, hue)

fog 그래픽을 취득합니다. hue 로 색상 변화값을 지정합니다.

RPG::Cache.gameover(filename)

게임 오버 그래픽을 취득합니다.

RPG::Cache.icon(filename)

아이콘 그래픽을 취득합니다.

RPG::Cache.panorama(filename, hue)

파노라마 그래픽을 취득합니다. hue 로 색상 변화값을 지정합니다.

RPG::Cache.picture(filename)

픽쳐 그래픽을 취득합니다.

RPG::Cache.tileset(filename)

타일 세트 그래픽을 취득합니다.

RPG::Cache.title(filename)

타이틀 그래픽을 취득합니다.

RPG::Cache.windowskin(filename)

윈도우 스킨 그래픽을 취득합니다.

RPG::Cache.tile(filename, tile_id, hue)

타일 세트중에서 특정의 타일만을 취득합니다. tile_id (으)로 취득하는 타일의 ID 를,hue 로 색상 변화값을 지정합니다.

이벤트의 그래픽 (RPG::Event::Page::Graphic )에 타일이 지정될 경우에 사용 합니다.

RPG::Cache.clear

캐쉬(cache)를 하늘로 합니다.

정의

module RPG
  module Cache
    @cache = {}
    def self.load_bitmap(folder_name, filename, hue = 0)
      path = folder_name + filename
      if not @cache.include?(path) or @cache[path].disposed?
        if filename != ""
          @cache[path] = Bitmap.new(path)
        else
          @cache[path] = Bitmap.new(32, 32)
        end
      end
      if hue == 0
        @cache[path]
      else
        key = [path, hue]
        if not @cache.include?(key) or @cache[key].disposed?
          @cache[key] = @cache[path].clone
          @cache[key].hue_change(hue)
        end
        @cache[key]
      end
    end
    def self.animation(filename, hue)
      self.load_bitmap("Graphics/Animations/", filename, hue)
    end
    def self.autotile(filename)
      self.load_bitmap("Graphics/Autotiles/", filename)
    end
    def self.battleback(filename)
      self.load_bitmap("Graphics/Battlebacks/", filename)
    end
    def self.battler(filename, hue)
      self.load_bitmap("Graphics/Battlers/", filename, hue)
    end
    def self.character(filename, hue)
      self.load_bitmap("Graphics/Characters/", filename, hue)
    end
    def self.fog(filename, hue)
      self.load_bitmap("Graphics/Fogs/", filename, hue)
    end
    def self.gameover(filename)
      self.load_bitmap("Graphics/Gameovers/", filename)
    end
    def self.icon(filename)
      self.load_bitmap("Graphics/Icons/", filename)
    end
    def self.panorama(filename, hue)
      self.load_bitmap("Graphics/Panoramas/", filename, hue)
    end
    def self.picture(filename)
      self.load_bitmap("Graphics/Pictures/", filename)
    end
    def self.tileset(filename)
      self.load_bitmap("Graphics/Tilesets/", filename)
    end
    def self.title(filename)
      self.load_bitmap("Graphics/Titles/", filename)
    end
    def self.windowskin(filename)
      self.load_bitmap("Graphics/Windowskins/", filename)
    end
    def self.tile(filename, tile_id, hue)
      key = [filename, tile_id, hue]
      if not @cache.include?(key) or @cache[key].disposed?
        @cache[key] = Bitmap.new(32, 32)
        x = (tile_id - 384) % 8 * 32
        y = (tile_id - 384) / 8 * 32
        rect = Rect.new(x, y, 32, 32)
        @cache[key].blt(0, 0, self.tileset(filename), rect)
        @cache[key].hue_change(hue)
      end
      @cache[key]
    end
    def self.clear
      @cache = {}
      GC.start
    end
  end
end


Array

배열 클래스. 배열의 요소는 임의의 Ruby 오브젝트로 . 배열식을 참조해 주세요.

슈퍼 클래스

  • Object

인클루드 하고 있는 모듈

  • Enumerable

메소드

self[nth]

nth 번째의 요소를 돌려줍니다. 선두의 요소가 0 번째가 됩니다. nth 의 값이 부 때에는 말미로부터의 인덱스로 간주합니다 (말미 의 요소가 -1 번째 ) . nth 번째의 요소가 존재하지 않을 때에는 nil 를 돌려줍니다.

self[start, length]

start 번째로부터 length 개의 요소를 포함한 부분 배열을 돌려줍니다. start 의 값이 부 때에는 말미로부터의 인덱스로 간주합니다 (끝 꼬리의 요소가 -1 번째 ) . length 가 start 번째로부터의 배열의 길이 보다 길 때에는, 넘어간 분의 길이는 무시됩니다. length 가 부 때에는 nil 를 돌려줍니다.

self[nth]=val

nth 번째의 요소를 val 에 설정합니다. nth 가 배열의 범위를 넘어갈 때는 배열의 길이를 자동적으로 확장해, 확장한 영역을 nil 로 초기화합니다.

val 를 돌려줍니다.

self[start, length]=val

인덱스 start 로부터 length 개의 요소를 배열 val 의 내용으로 옮겨놓습니다. val 가 배열이 아닐 때에는 val.to_ary 혹은 [val] 의 내용으로 치환합니다. val 를 돌려줍니다.

ary = [0, 1, 2, 3]
ary[1, 2] = ["a", "b", "c"]
p ary                        # => [0, "a", "b", "c", 3]
ary[2, 1] = 99
p ary                        # => [0, "a", 99, "c", 3]
ary[1, 0] = ["inserted"]
p ary                        # => [0, "inserted", "a", 99, "c", 3]
self + other

self 와 other 의 내용을 연결한 새로운 배열을 돌려줍니다. other 가 배열이 아니면 other.to_ary 의 반환값을 이용합니다. 그 반환값이 또 배열이 아니었던 경우는 예외 TypeError 가 발생해 .

a = [1, 2]
b = [8, 9]
p a + b     # => [1, 2, 8, 9]
p a         # => [1, 2]        (변화 없음)
p b         # => [8, 9]        (이쪽도 변화 없음)
self - other

집합의 차이 연산. self 로부터 other 의 요소를 없앤 내용의 새로운 배열을 돌려줍니다.

self & other

집합의 적연산. 양쪽 모두의 배열에 포함되는 요소로부터 되는 새로운 배열을 돌려줍니다. 중복 하는 요소는 제거됩니다.

self | other

집합의 화연산. 양쪽 모두의 배열에 어느 쪽인가에 포함되는 요소를 모두 포함한 새로운 배열을 돌려줍니다. 중복 하는 요소는 제거됩니다.

self <=> other

self 와 other 의 각 요소를 각각 순서에 <=> 로 비교 해, self 가 클 때에 정, 동일할 때에 0, 작을 때에 부의 정수 (을)를 돌려줍니다. 각 요소가 동일한 채, 한편만 배열의 말미에 이르렀을 때는, 이야 짧은 배열의 (분)편이 작으면 합니다.

self == other

self 와 other 의 각 요소를 각각 순서에 == 에 비교해 , 전요소가 동일하면 진을 돌려줍니다.

clear

배열의 요소를 모두 삭제해 하늘로 합니다. self 를 돌려줍니다.

ary = [1, 2]
ary.clear
p ary     # => []
clone
dup

리시버와 같은 내용을 가지는 새로운 배열을 돌려줍니다. clone 는 freeze, 특이 메소드 등의 정보도 포함한 완전한 복제를, dup 는 오브젝트의 내용만의 복제를 만듭니다. 어느 쪽의 메소드도 요소 그 자체의 카피는 하지 않습니다.

compact
compact!

compact 는 self 로부터 nil 인 요소를 없앴다 새로운 배열을 돌려줍니다. compact! (은)는 변경을 파괴적이게 해, 변경이 행해질 경우는 self 를, 그렇지 않으면 nil 를 돌려줍니다.

ary = [1, nil, 2, nil, 3, nil]
p ary.compact   # => [1, 2, 3]
p ary           # => [1, nil, 2, nil, 3, nil]
ary.compact!
p ary           # => [1, 2, 3]
p ary.compact!   # => nil
concat(other)

배열 other 를 self 의 말미에 (파괴적이게) 연결합니다. self 를 돌려줍니다.

array = [1, 2]
a     = [3, 4]
array.concat a
p array          # => [1, 2, 3, 4]
p a              # => [3, 4]       # 이쪽은 바뀌지 않는다
delete(val)
delete(val) { ... }

val 와 == 로 동일한 요소를 모두 없앱니다. val 와 동일한 요소가 발견될 경우는,val 를 돌려줍니다.

val와 동일한 요소가 없으면 nil 를 돌려줍니다만, 블록이 지정되어 있으면 블록을 평가해 그 결과를 돌려줍니다.

array = [1, 2, 3, 2, 1]
p array.delete(2)       # => 2
p array                 # => [1, 3, 1]

# 블록 없음의 인수에 nil 를 건네주면(자) 그 반환값으로부터 삭제가
# 행해졌는지 어떠했는지의 판정을 할 수 없다
ary = [nil, nil, nil]
p ary.delete(nil)       # => nil
p ary                   # => []
p ary.delete(nil)       # => nil
delete_at(pos)

pos 로 지정된 위치에 있는 요소를 없애 그것을 돌려줍니다. pos 가 범위외에서 만나면(자) nil 를 돌려줍니다.

array = [0, 1, 2, 3, 4]
array.delete_at 2
p array             # => [0, 1, 3, 4]
each {|item| .... }

각 요소에 대해서 블록을 평가합니다. self 를 돌려줍니다.

# 1, 2, 3 이 차례로 표시된다
[1, 2, 3]. each do |i|
  puts i
end
each_index {|index| .... }

각 요소의 인덱스에 대해서 블록을 평가합니다. 이하와 같습니다.

(0 ... ary.size). each {|index| ....  }

self 를 돌려줍니다.

empty?

배열의 요소수가 0 때 진을 돌려줍니다.

include? (val)

배열이 val 와 == 에 두고 동일한 요소를 가질 때 진을 돌려주어 .

index(val)

val 와 == 로 동일한 최초의 요소의 위치를 돌려줍니다. 동일한 요소가 하나도 없었다고 오기에는 nil 를 돌려줍니다.

insert(nth, [val[, val2 ...]])

인덱스 nth 의 요소의 직전에 제 2 인수 이후의 값을 삽입합니다. self 를 돌려줍니다. 이하와 같이 정의 됩니다.

class Array
  def insert( n, *vals )
    self[n, 0] = vals
    self
  end
end

ary = ["foo", "bar", "baz"]
ary.insert 2, 'a', 'b'
p ary                  # => ["foo", "bar", "a", "b", "baz"]

인수 val 를 하나도 지정하지 않으면 아무것도 하지 않습니다.

length
size

배열의 길이를 돌려줍니다. 배열이 하늘 때는 0 을 돌려줍니다.

nitems

nil 나오지 않는 요소의 수를 돌려줍니다.

pop

말미의 요소를 없애 그것을 돌려줍니다. 하늘 배열 때는 nil 를 돌려줍니다.

array = [1, [2, 3], 4]
p array.pop      # => 4
p array.pop      # => [2, 3]
p array          # => [1]

p array.pop      # => 1
p array.pop      # => nil
p array          # => []
push(obj1[, obj2 ...])

obj1, obj2 ... (을)를 차례로 배열의 말미에 추가합니다.

self 를 돌려줍니다.

array = [1, 2, 3]
array.push 4
array.push [5, 6]
array.push 7, 8
p array          # => [1, 2, 3, 4, [5, 6], 7, 8]
reverse
reverse!

reverse 는 모든 요소를 역순서에 늘어놓은 새로운 배열을 돌려줍니다. reverse! (은)는 배열의 요소를 파괴적이게 변경합니다.

reverse 는, 항상 새로운 배열을 돌려주어, reverse! 하 항상 self 를 돌려줍니다.

shift

배열의 선두의 요소를 없애 그것을 돌려줍니다. 나머지의 요소는 하나씩 전에 채울 수 있습니다. 하늘 배열에 대해서는 nil 를 돌려줍니다.

sort
sort!
sort {|a, b| ... }
sort! {|a, b| ... }

배열의 내용을 소트 합니다. 블록과 함께 불려 갔을 때에는 블록에 2 인수를 주어 평가해, 그 결과로 비교합니다. 블록이 없을 때에는 <=> 연산자를 사용해 비교합니다. sort! 하 배열의 요소를 파괴적이게 변경합니다.

sort 는 소트 된 새로운 배열을 돌려주어, sort! 하 항상 self 를 돌려줍니다.

unshift(obj1[, obj2 ...])

obj1, obj2 ... (을)를 차례로 배열의 선두에 삽입합니다.

self 를 돌려줍니다.


Bignum

다배장 정수의 클래스. Bignum 가 취급하는 것이 가능한 크기는 메모리 코뿔소 즈인 만큼 꼬아 제한됩니다. 연산의 결과가 Fixnum 의 범위내인 장소 합에는 Fixnum 에 변환되어 반대로 Fixnum 의 범위를 넘어갈 때는 Bignum 에 확장됩니다. 비트 연산에 대해서는 2 의 보수 표현의 무한장 의 비트 스트링으로 간주할 수가 있습니다. 특히 부의 수는 좌측으로 무한하게 1 의 비트가 서 있도록(듯이) 조작 할 수 있습니다. Float 와의 혼합에 관해서는, 변환시에 자리수 빠짐이 생길 가능성이 있습니다.

슈퍼 클래스

  • Integer


Comparable

Class

클래스의 클래스. 보다 정확하게 말하면, 개개의 클래스는 각각 메타크라스와 호 발각되는 이름이 없는 클래스를 클래스로서 가지고 있어, Class 는 그 메타 클래스의 클래스입니다. 이 관계는 조금 복잡합니다만, Ruby 를 이용 는 특히 중요하지는 않습니다.

클래스는, 모듈과는

  • 인스턴스를 작성 할 수 있다
  • include 에 의한 Mix-in 를 할 수 없다

(이)라고 하는 차이가 있습니다만, 그 이외의 대부분의 기능은 Module 로부터 계승되어 있습니다.

슈퍼 클래스

  • Module

메소드

new( ... )

클래스의 인스턴스를 생성해 돌려줍니다. 이 메소드의 인수는 블록 인수도 포함해라 initialize 에게 건네집니다.


Exception

모든 예외의 조상의 클래스입니다.

서브 클래스에 대해서는짜넣어 예외 클래스를 참조해 주세요.

슈퍼 클래스

  • Object

클래스 메소드

Exception.new([error_message])

예외 오브젝트를 생성해 돌려줍니다. 인수로서 에러 메세지를 겉 캐릭터 라인을 줄 수가 있습니다. 이 메세지는 속성 message 의 값이 되어, 디폴트의 예외 핸들러로 표시 됩니다.

메소드

exception([error_message])

인수를 지정하지 않는 경우는 self 를 돌려줍니다. 그렇지 않으면, 자신의 카피 (을)를 생성해,message 속성을 error_message 로 해 돌려줍니다.

raise 는, 실질적으로, 예외 오브젝트의 exception 메소드의 호출입니다.

backtrace

백 트레이스 정보를 돌려줍니다.

  • "#{sourcefile}:#{sourceline}:in `#{method}'"

    (메소드내의 경우)

  • "#{sourcefile}:#{sourceline}"

    (톱 레벨의 경우)

(이)라고 하는 형식의 String 의 배열입니다.

message

에러 메세지를 나타내는 캐릭터 라인을 돌려줍니다.


FalseClass

false 의 클래스. false 는 FalseClass 클래스의 유일한 이 스탄스입니다. false 는 nil 오브젝트와 함께 가짜를 나타내, 그 외의 모든 오브젝트는 진입니다.

슈퍼 클래스

  • Object

메소드

self & other

항상 false 를 돌려줍니다.

self | other
self ^ other

other 가 진이라면 true 를 가짜라면 false 를 돌려줍니다.


File

파일 액세스를 위한 클래스. 통상 open 또는 File.open 를 사용해 생성합니다.

오픈 한 채로 참조되지 않게 된 File 오브젝트는, 다음의 쓰레기 컬렉트로 close 되어 버려집니다.

슈퍼 클래스

  • IO

클래스 메소드

File.mtime(filename)

파일의 최종 갱신 시각 (Time 오브젝트)을 돌려줍니다.

취득에 실패할 경우는 예외 Errno::EXXX 가 발생합니다.

File.basename(filename[, suffix])

filename 의 제일 뒤의 slash에 계속되는 요소를 돌려줍니다. 만약, 인수 suffix 가 주어져, 한편 그것이 filename 의 말미에 일치한다면, 그것을 없앤 것을 돌려줍니다.

p File.basename("ruby/ruby.c")        # => "ruby.c"
p File.basename("ruby/ruby.c", ".c")  # => "ruby"
p File.basename("ruby/ruby.c", ". *")  # => "ruby"
p File.basename("ruby/ruby.exe", ". *")  # => "ruby"

File.dirname , File.extname 도 참조.

File.delete(filename ... )

파일을 삭제합니다. 삭제한 파일의 수를 돌려줍니다. 삭제에 실패해 경우는 예외 Errno::EXXX 가 발생합니다.

이 메소드는 통상 파일의 삭제용으로, 디렉토리를 삭제하는 것은 할 수 없지 않습니다.

File.dirname(filename)

filename 의 제일 뒤의 slash보다 전을 문장 자렬로서 돌려줍니다. slash를 포함하지 않는 파일명에 대해서는 ". "(커런트 디렉토리)를 돌려줍니다.

p File.dirname("dir/file.ext")    # => "dir"
p File.dirname("file.ext")        # => ". "
p File.dirname("foo/bar/")        # => "foo"
p File.dirname("foo//bar")        # => "foo"

File.basename , File.extname 도 참조.

File.expand_path(path[, default_dir])

path 를 절대 패스에 전개한 캐릭터 라인을 돌려줍니다. path 가 상대 패스이면 default_dir 를 기준으로 합니다. default_dir 가 nil 가마타는 주어지지 않았다고 오기에는 카 렌트디레크트리가 사용됩니다.

p File.expand_path("..")         # => "/home/matz/work"
p File.expand_path("..", "/tmp") # => "/"
File.extname(filename)

파일명 filename 의 확장자(extension) 부분 (마지막 ". " 에 계속되는 캐릭터 라인)을 돌려줍니다. 디렉토리명에 포함되는 ". " 나, 파일명 선두의 ". " (은)는 확장자(extension)의 일부로서는 보이지 않습니다. filename 에 확장자(extension)가 함 없는 경우는 공문자열을 돌려줍니다.

p File.extname("foo/foo.txt")     # => ".txt"
p File.extname("foo/foo.tar.gz")  # => ".gz"
p File.extname("foo/bar")         # => ""
p File.extname("foo/.bar")        # => ""
p File.extname("foo.txt/bar")     # => ""
p File.extname(".foo")            # => ""

File.basename , File.dirname 도 참조.

File.open(path[, mode])
File.open(path[, mode]) {|file| ... }

path 로 지정되는 파일을 오픈 해, 파일 오브젝트를 돌려줍니다. 파일의 오픈에 실패할 경우는 예외 Errno::EXXX 가 발생합니다.

인수 mode 에 대해서는 짜넣어 함수 open 와 같습니다.

open()는 블록을 지정할 수가 있습니다. 블록을 지정해 호출할 경우는, 파일 오브젝트를 주어져 블록이 실행됩니다. 블록의 실행이 종료하면(자), 파일은 자동적으로 클로우즈 됩니다.

블록이 지정되었을 때의 이 메소드의 반환값은 블록의 실행 결과 입니다.

File.rename(from, to)

파일의 이름을 변경합니다. 디렉토리가 다른 경우에는 이동도 해 . 이동처의 파일이 존재 할 경우에는 덧쓰기됩니다.

파일의 이동에 성공할 경우 0 을 돌려줍니다. 실패할 경우는 예외 Errno::EXXX 가 발생합니다.

메소드

mtime

파일의 최종 갱신 시각 (Time 오브젝트)을 돌려줍니다.

취득에 실패할 경우는 예외 Errno::EXXX 가 발생합니다.

path

오픈 하고 있는 파일의 패스를 돌려줍니다.


Fixnum

머신의 포인터의 사이즈에 들어가는 길이가 고정장 정수. 대부분의 머신에서는 31 비트폭입니다. 연산의 결과가 Fixnum 의 범위를 넘어갔을 때에는 자동적 에 Bignum 에 확장됩니다.

슈퍼 클래스

  • Integer

메소드

id2name

Symbol 오브젝트의 정수값 (Symbol#to_i (으)로 얻을 수 있습니다)에 대응하는 캐릭터 라인을 돌려줍니다. 정수에 대응하는 심볼이 존재하지 않을 때에는 nil 를 돌려줍니다.

to_sym

오브젝트의 정수값 self 에 대응하는 Symbol 오브젝트를 돌려줍니다. 정수에 대응하는 심볼이 존재하지 않을 때에는 nil (을)를 돌려줍니다.


Float

부동 소수점수(실수)의 클래스. Float 의 실장은 C 언어의 double 입니다.

슈퍼 클래스

  • Numeric

메소드

self + other
self - other
self * other
self / other
self % other
self ** other

산술 연산자. 각각 화, 차이, 적, 상, 잉여, 멱을 계산합니다.

self <=> other

self 와 other 를 비교해, self 가 클 때에 정, 동일할 때에 0, 작을 때에 부의 정수를 돌려줍니다.

self == other
self < other
self <= other
self > other
self >= other

비교 연산자.

finite?

수치가 ∞ 에서도, NaN 도 아니면 진을 돌려주는

infinite?

수치가 +∞ 때 1,-∞ 때 -1 를 돌려줍니다. 그 이외는 nil 를 반 합니다. 부동 소수점수(실수)의 0 에 의한 제산은 ∞ 입니다.

inf = 1.0/0
p inf
p inf.infinite?

=> Infinity
   1

inf = -1. 0/0
p inf
p inf.infinite?

=> -Infinity
   -1
nan?

수치가 NaN (Not a number) 때 진을 돌려줍니다. 부동 소수점수(실수) 0 의 0 으로 밤제산은 NaN 입니다.

nan = 0.0/0. 0
p nan
p nan.nan?

=> NaN
   true


Hash

해시의 클래스. 해시식을 참조해 주세요.

슈퍼 클래스

  • Object

인클루드 되어 있는 모듈

  • Enumerable

메소드

self[key]

key 에 관련 지을 수 있던 값을 돌려줍니다. 해당하는 키가 등 록되어 있지 않을 때에는, 디폴트값 (설정되어 있지 않을 때에는 nil)를 돌려줍니다.

self[key]=value

key 에 대해서 value 를 관련 짓습니다. value 를 돌려주어 .

clear

해시의 내용을 하늘로 합니다. self 를 돌려줍니다.

clone
dup

리시버와 같은 내용을 가지는 새로운 해시를 돌려줍니다. 후리즈��학 슈의 clone 는과 같이 freeze 된 해시를 돌려줍니다만, dup 는 내용의 동일한 freeze되어 있지 않은 해시를 돌려줍니다.

value 를 돌려줍니다.

delete(key)
delete(key) {|key| ... }

key 에 대한 관련을 없앱니다. 제거된 값을 돌려줍니다만, key 에 대응하는 값이 존재하지 않을 때에는 nil 를 돌려줍니다.

블록이 주어졌을 때에는 key 에 매치 하는 것이 샀을 때에 평가해, 그 결과를 돌려줍니다.

each {|key, value| ... }
each_pair {|key, value| ... }

key 와 value 를 인수로서 블록을 평가합니다. self 를 돌려줍니다.

each_key {|key| ... }

key 를 인수로서 블록을 평가합니다. self 를 돌려줍니다.

each_value {|value| ... }

value를 인수로서 블록을 평가합니다. self 를 돌려줍니다.

empty?

해시가 하늘 때 진을 돌려줍니다.

has_key? (key)
include? (key)

해시가 key 를 키로서 가질 때 진을 돌려줍니다.

has_value? (value)

해시가 value 를 값으로서 가질 때 진을 돌려줍니다. 값의 일치 판정은 == 으로 행해집니다.

index(val)

val 에 대응하는 키를 돌려줍니다. 대응하는 요소가 존재하지 않을 때에는 nil 를 돌려줍니다.

해당하는 키가 복수 존재하는 경우, 어느 키를 돌려줄까는 부정입니다.

keys

전키의 배열을 돌려줍니다.

length
size

해시의 요소의 수를 돌려줍니다.

values

해시의 전치의 배열을 돌려줍니다.


Integer

정수의 추상 클래스. 서브 클래스로서 Fixnum (와)과 Bignum 가 있습니다. 이 2 종류의 정수는 값의 크기에 따라 서로 자동적으로 변환됩니다. 비트 조작에 두고 정수는 무한의 길이가 비트 스트링으로 간주할 수가 있습니다.

슈퍼 클래스

  • Numeric

메소드

self[nth]

nth 번째의 비트 (최하위비트 (LSB)가 0 번째 )가 서 있다 때 1 을, 그렇지 않으면 0 을 돌려줍니다.

self[nth]=bit 가 Integer 에 없는 것은, Numeric 관련 클래스가 immutable 로 있기 때문에입니다.

self + other
self - other
self * other
self / other
self % other
self ** other

산술 연산자. 각각 화, 차이, 적, 상, 잉여, 멱을 계산합니다.

self <=> other

self 와 other 를 비교해, self 가 클 때에 정, 동일할 때에 0, 작을 때에 부의 정수를 돌려줍니다.

self == other
self < other
self <= other
self > other
self >= other

비교 연산자.

~ self
self | other
self & other
self ^ other

비트 연산자. 각각 부정, 논리합, 논리적, 배타적 논리합을 계산 섬 .

self << bits
self >> bits

쉬프트 연산자. bits 만 비트를 오른쪽 (왼쪽)으로 쉬프트 합니다.

오른쪽 쉬프트는, 부호 비트 (최상위비트 (MSB))가 보관 유지됩니다.

chr

문자 코드에 대응하는 1 바이트의 캐릭터 라인을 돌려줍니다. 예를 들어 65. chr 는 "A" 를 돌려줍니다.

정수는 0 에서 255 의 범위내가 아니면 되지 않습니다. 범위외의 정수에 대 호출은 예외 RangeError 를 발생 시킵니다.

downto(min) {|n| ... }

self 로부터 min 까지 1 두 개(살) 줄이면서 반복합니다. self < min 이면 아무것도 하지 않습니다.

upto , step , times 도 참조해 주세요.

next
succ

다음의 정수를 돌려줍니다.

step(limit, step) {|n| ... }

self 로부터 처음 step 를 더하면서 limit 를 넘어간다 전까지 블록을 반복합니다. step 는 부의 수도 지정 할 수 있습니다.

step 에 0 을 지정할 경우는 예외 ArgumentError 가 발생합니다.

self 를 돌려줍니다.

upto , downto , times 도 참조해 주세요.

times {|n| ... }

self 회만 (0 으로부터 self-1 까지) 반복합니다. self 가 부이면 아무것도 하지 않습니다.

self 를 돌려줍니다.

upto , downto , step 도 참조해 주세요.

to_f

값을 부동 소수점수(실수) (Float ) 로 변환합니다.

to_s([base])

정수를 10 진캐릭터 라인 표현 으로 변환합니다.

인수를 지정하면, 그것을 기수로 한 캐릭터 라인 표현 으로 변환합니다. 기수로서 2 ? 36 이외를 지정할 경우는 예외 ArgumentError 가 발생합니다.

p 10. to_s(2)    # => "1010"
p 10. to_s(8)    # => "12"
p 10. to_s(16)   # => "a"
p 35. to_s(36)   # => "z"
upto(max) {|n| ... }

self 로부터 max 까지 1 두 개(살) 늘리면서 반복합니다. self > max 이면 아무것도 하지 않습니다.

self 를 돌려줍니다.

downto , step , times 도 참조해 주세요.


IO

IO 클래스는 기본적인 입출력 기능을 실장합니다.

슈퍼 클래스

  • Object

인클루드 되어 있는 모듈

  • Enumerable

메소드

binmode

시냇물을 바이너리 모드로 합니다. 바이너리 모드로부터 통상의 모드로 돌리는 방법은 재오픈 밖에 없습니다.

self 를 돌려줍니다.

close

입출력 포토를 클로우즈 합니다. close 에 실패할 경우는 예외 Errno::EXXX 가 발생합니다.

nil 를 돌려줍니다.

each_line {|line| ... }

IO 포토로부터 1 행씩 읽어들입니다.

self 를 돌려줍니다.

each_byte {|ch| ... }

IO 포토로부터 1 바이트씩 읽어들입니다.

self 를 돌려줍니다.

eof?

시냇물이 파일의 종단에 이를 경우 진을 돌려줍니다.

pos

파일 포인터의 현재의 위치를 돌려줍니다.

pos=n

파일 포인터를 지정 위치 로 이동합니다.

read([length])

length 바이트 읽어들여, 그 캐릭터 라인을 돌려줍니다. length 가 생략 되었을 때에는, EOF 까지의 모든 데이터를 읽어들입니다.

IO 가 벌써 EOF 에 이르고 있으면 nil 를 돌려줍니다.

데이터의 read에 실패할 경우는 예외 Errno::EXXX 가 발생 섬 . length 가 부의 경우, 예외 ArgumentError 가 발생합니다.

readlines([rs])

데이터를 모두 읽어들여, 그 각 행을 요소라고 해도 개(살) 배열을 돌려줍니다. IO 가 벌써 EOF 에 이르고 있으면 하늘 배열 [] 을 돌려줍니다.

행의 단락은 인수 rs 로 지정한 캐릭터 라인이 됩니다. rs 의 디폴트값은 "\n" 입니다.

rs 에 nil 를 지정하면(자) 행 단락 없음으로 간주합니다. 공문자열 "" 를 지정하면(자) 연속하는 개행을 행의 단락으로 간주합니다 (패러그래프 모드) .

write(str)

IO 포토에 대해서 str 를 출력 합니다. str 가 캐릭터 라인으로 울어라 to_s 에 의한 캐릭터 라인화를 시도합니다.

실제로 출력 할 수 있던 바이트수를 돌려줍니다. 출력에 실패할 경우는 예외 Errno::EXXX 가 발생합니다.


MatchData

정규 표현의 매치에 관한 정보를 취급하기 위한 클래스. 이 클래스의 인스턴스는,

  • Regexp.last_match
  • Regexp#match
  • $~

등에 의해 얻을 수 있습니다.

슈퍼 클래스

  • Object

메소드

self[n]

n 번째의 부분 캐릭터 라인을 돌려줍니다. 0 은 매치 전체를 의미합니다. n 의 값이 부 때에는 말미로부터의 인덱스로 간주합니다 (말미의 요소가 -1 번째 ) . n 번째의 요소가 존재하지 않을 때에는 nil 를 돌려줍니다.

/(foo)(bar)(BAZ)? / =~ "foobarbaz"
p $~. to_a       # => ["foobar", "foo", "bar", nil]
p $~[0]         # => "foobar"
p $~[1]         # => "foo"
p $~[2]         # => "bar"
p $~[3]         # => nil        (매치 하고 있지 않다)
p $~[4]         # => nil        (범위외)
p $~[-2]        # => "bar"
post_match

매치 한 부분보다 뒤의 캐릭터 라인을 돌려줍니다.

pre_match

매치 한 부분보다 전의 캐릭터 라인을 돌려줍니다.

to_a

$& , $1 , $2 , ... (을)를 격납 한 배열을 돌려줍니다.

to_s

매치 한 캐릭터 라인 전체를 돌려줍니다.


Module

모듈의 클래스.

슈퍼 클래스

  • Object

메소드

self === obj

이 메소드는 주로 case 문장에서의 비교에 이용됩니다. obj 가 self 와 Object#kind_of? 의 관계가 있을 때, 실로 됩니다. 즉,case 에서는 곳간 스, 모듈의 소속 관계를 체크하게 됩니다.

str = String.new
case str
when String     # String === str 를 평가한다
  p true        # => true
end

프라이빗 메소드

attr_accessor(name ... )

속성 name 에 대한 read 메소드와 기입해 메소드의 양쪽 모두를 정의 합니다. name 는 Symbol 인가 캐릭터 라인으로 지정합니다.

이 메소드로 정의 되는 메소드의 정의는 이하와 같습니다.

def name
  @name
end
def name=(val)
  @name = val
end
attr_reader(name ... )

속성 name 의 read 메소드를 정의 합니다. name 는 Symbol 인가 캐릭터 라인으로 지정합니다.

이 메소드로 정의 되는 메소드의 정의는 이하와 같습니다.

def name
  @name
end
attr_writer(name ... )

속성 name 에의 기입해 메소드 (name=)를 정의 합니다. name 는 Symbol 인가 캐릭터 라인으로 지정합니다.

이 메소드로 정의 되는 메소드의 정의는 이하와 같습니다.

def name=(val)
  @name = val
end
include(module ... )

지정된 모듈의 성질 (메소드나 정수)을 추가합니다. self 를 돌려주어 . include 는 다중 상속 대신에 이용되는 Mix-in 를 실현하기 위해서(때문에) 사용됩니다.

class C
  include FileTest
  include Math
end

모듈의 기능 추가는, 클래스의 계승 관계의 사이에 그 모듈이 삽입 되는 것으로 실현되어 있습니다. 따라서, 메소드의 탐색 등은 슈퍼 클래스에 우선되어 추가한 모듈로부터 탐색됩니다.

같은 모듈을 2회이상 include 하면(자) 2회째 이후는 무시됩니다. 또, 모듈의 계승 관계가 순환해 버리는 것 같은 include 를 하면(자), 예외 ArgumentError 가 발생합니다.


NilClass

nil 의 클래스. nil 는 NilClass 클래스의 유일한 인스턴스입니다. nil 는 false 오브젝트와 함께 가짜를 나타내, 그 외의 모든 오브젝트는 진입니다.

슈퍼 클래스

  • Object

메소드

self & other

항상 false 를 돌려줍니다.

self | other
self ^ other

other 가 진이라면 true 를 가짜라면 false 를 돌려줍니다.

nil?

항상 true 를 돌려줍니다.

to_a

하늘의 배열 [] 을 돌려줍니다.

to_f

0.0 을 돌려줍니다.

to_i

0 을 돌려줍니다.

to_s

공문자열 "" 를 돌려줍니다.


Numeric

Numeric 는 수치의 추상 클래스입니다. Ruby 에서는 다른 수치 클래스간에 연산을 할 수가 있습니다.

연산이나 비교를 하는 메소드 (+, -, *, /, <=>) 등은 서브 클래스로 정의 . 또, 효율 (위해)때문에 Numeric 의 메소드와 같은 메소드가 서브 곳간 스로 재정의 되어 있는 경우가 있습니다.

슈퍼 클래스

  • Object

인클루드 하고 있는 모듈

  • Comparable

메소드

+ self

self 자신을 돌려줍니다.

- self

self 의 부호를 반전 시킨 것을 돌려줍니다.

이 메소드는, 2항연산자 - 로 0 - self 에 의해 정의 되어 있습니다.

abs

self 의 절대치를 돌려줍니다.

ceil

self 와 동일한가 보다 큰 최소의 정수 (천정)를 돌려줍니다.

floor

self 를 넘지 않는 최대의 정수 (마루)를 돌려줍니다.

integer?

self 가 정수 때, 진을 돌려줍니다.

round

self 에 가장 가까운 정수를 돌려줍니다.

truncate

소수점 이하를 잘라서 버립니다.


Object

모든 클래스의 슈퍼 클래스. 오브젝트의 일반적인 행동을 정의 합니다.

인클루드 하고 있는 모듈

  • Kernel

메소드

self == other

self 와 other 가 동일한지 어떤지 판정 합니다. 디폴트에서는 equal? (와)과 같은 효과입니다.

이 메소드는 각 클래스의 성질에 맞추어 재정의 해야 합니다.

self === other

이 메소드는 case 문장에서의 비교에 이용됩니다. 디폴트는 Object#== 와 같은 기능을 합니다만, 이 거동은 서브 클래스로 소속성의 체크를 실현하기 (위해)때문에 적당재정의 됩니다.

class

리시버의 클래스를 돌려줍니다.

clone
dup

오브젝트의 복제를 만듭니다. clone 는 freeze, 특이 메소드 등의 정보도 포함한 완전한 복제를, dup 는 오브젝트의 내용만의 복제를 만듭니다.

clone 나 dup 는 「얕다 (shallow)」카피이기로 주의 해 주세요. 오브젝트 자신을 복제하는 것만으로, 오브젝트의 가리켜 있는 앞 (예를 들어 배열의 요소 등)까지는 복제하지 않습니다.

또 복제한 오브젝트에 대해서

obj.equal? (obj.clone)

(은)는 일반적으로 성립하지 않습니다만,

obj == obj.clone

(은)는 많은 경우에 성립합니다.

true, false, nil,Numeric 오브젝트,Symbol 오브젝트 등을 복제 하려고 하면(자) 예외 TypeError 가 발생합니다.

equal? (other)

other 가 self 자신 때, 진을 돌려줍니다. 이 메소드를 재정의 해서는 안됩니다.

freeze

오브젝트의 내용의 변경을 금지합니다. freeze 된 오브젝트의 변경은 예외 TypeError 를 발생 시킵니다.

frozen?

오브젝트의 내용의 변경이 금지되어 있을 때 진을 돌려줍니다.

inspect

오브젝트를 인간을 읽을 수 있는 형식의 캐릭터 라인 으로 변환합니다.

instance_of? (klass)

self 가 클래스 klass 의 직접적인 인스턴스일 때, 진을 돌려줍니다. obj.instance_of? (c)(이)가 성립 할 경우에는, 항상 obj.kind_of? (c)도 성립합니다.

is_a? (mod)
kind_of? (mod)

self 가, 클래스 mod 와 그 서브 클래스, 및 모듈 mod 를 인클루드 한 클래스와 그 서브 클래스, 의 몇개의 인스턴스일 때 진을 돌려줍니다.

module M
end
class C < Object
  include M
end
class S < C
end

obj = S.new
p obj.is_a?  S       # true
p obj.is_a?  M       # true
p obj.is_a?  C       # true
p obj.is_a?  Object  # true
p obj.is_a?  Hash    # false
nil?

리시버가 nil 화도인지를 체크합니다.

object_id

각 오브젝트에 대해서 일의인 정수를 돌려줍니다. 있는 오브젝트에 대해 어떠한 정수를 할당할 수 있을까는 부정입니다.

to_ary

오브젝트의 배열에의 암묵의 변환이 필요한 때에 내부에서 불립니다.

to_hash

오브젝트의 해시에의 암묵의 변환이 필요한 때에 내부에서 불립니다.

to_int

오브젝트의 정수에의 암묵의 변환이 필요한 때에 내부에서 불립니다.

to_s

오브젝트의 캐릭터 라인 표현을 돌려줍니다.

print 나 sprintf 는 캐릭터 라인 이외의 오브젝트가 인수에게 건네질 경우 이 메소드를 사용해 캐릭터 라인 으로 변환해 .

to_str

오브젝트의 캐릭터 라인에의 암묵의 변환이 필요한 때에 불립니다.

프라이빗 메소드

initialize

유저 정의 클래스의 오브젝트 초기화 메소드. 이 메소드는 Class#new 로부터 새롭게 생성된 오브젝트의 초기화를 위해서(때문에) 불려 갑니다. 디폴트의 동작은 아니게도 하지 않습니다. 서브 클래스에서는 이 메소드를 필요에 따라서 재정의 되는 것이 기대되어 지금 . initialize 에는 Class#new 에 주어진 인수가 그대로 건네받습니다.


Proc

Proc 는 블록을 문맥 (로컬 변수의 스코프나 스탁크후 레임)과 함께 오브젝트화한 수속 오브젝트입니다. Proc 는 로컬 변수의 스코프를 도입하지 않는 (일)것을 제외해 이름이 없는 함수와 같이 사 .

Proc 가 로컬 변수의 스코프를 보관 유지하고 있는 것은 이하의 예로 변수 var 를 참조 되어 있는 것으로부터 압니다.

var = 1
$foo = Proc.new { var }
var = 2

def foo
  $foo.call
end

p foo       # => 2

슈퍼 클래스

  • Object

클래스 메소드

Proc.new
Proc.new { ... }

블록을 문맥과 함께 오브젝트화해 돌려줍니다.

블록을 지정하지 않으면, 이 메소드를 호출한 메소드가 브록 쿠를 수반할 때, 그것을 Proc 오브젝트로서 생성해 돌려줍니다.

메소드

call(arg ... )

수속 오브젝트를 실행해 그 결과를 돌려줍니다. 인수는 블록의 인 수에 그대로 (다중 대입의 룰에 따라) 대입됩니다.


Range

범위 오브젝트의 클래스. 범위식을 참조해 주세요.

슈퍼 클래스

  • Object

인클루드 하고 있는 모듈

  • Enumerable

메소드

self === other

이 메소드는 주로 case 문장에서의 비교에 이용됩니다. other 가 범위내에 포함되어 있을 때 진을 돌려줍니다.

begin
first

최초의 요소를 돌려줍니다.

each {|item| ... }

범위내의 요소에 대해서 반복합니다.

end
last

종단을 돌려줍니다. 범위 오브젝트가 종단을 포함할지 어떨지는 관계키 응.

p (1..5). end   # => 5
p (1...5). end  # => 5
exclude_end?

범위 오브젝트가 종단을 포함하지 않을 때 진을 돌려줍니다.


RPG::Actor

Regexp

정규 표현의 클래스. 정규 표현 리터럴을 참조해 주세요.

슈퍼 클래스

  • Object

클래스 메소드

Regexp.last_match

경향 스코프에서 마지막에 간 정규 표현 매치의 MatchData 오브젝트를 돌려줍니다. 이 메소드의 호출은 $~ 의 참조와 같습니다.

/(. )(. )/ =~ "ab"
p Regexp.last_match      # => #
p Regexp.last_match[0]   # => "ab"
p Regexp.last_match[1]   # => "a"
p Regexp.last_match[2]   # => "b"
p Regexp.last_match[3]   # => nil
Regexp.last_match([nth])

정수 nth 가 0 의 경우, 매치 한 캐릭터 라인을 돌려줍니다 ($& ) . 그 이외에서는,nth 번째의 괄호에 매치 한 부분 캐릭터 라인을 돌려줍니다 ($1 , $2 , ...) . 대응하는 괄호가 없는 경우나 매치 하지 않았던 경우에는 nil 를 돌려줍니다.

/(. )(. )/ =~ "ab"
p Regexp.last_match      # => #
p Regexp.last_match(0)   # => "ab"
p Regexp.last_match(1)   # => "a"
p Regexp.last_match(2)   # => "b"
p Regexp.last_match(3)   # => nil

정규 표현 전체가 매치 하지 않았던 경우, 인수 없음의 Regexp.last_match 는 nil 를 돌려주기 (위해)때문에, last_match[1] 의 형식에서는 예외 NameError 가 발생합니다. 대해, last_match(1)는 nil 를 돌려줍니다.

메소드

self =~ string
self === string

캐릭터 라인 string 와의 정규 표현 매치를 합니다. 인수가 문장 자렬이 아닌가, 매치 하지 않으면 false 를, 매치 하면 true 를 돌려줍니다.

편입 변수 $~ 에 매치에 관한 정보가 설정됩니다.

string 가 nil 에서도 String 오브젝트도 아니면 예외 TypeError 가 발생합니다.

match(str)

MatchData 오브젝트를 돌려주는 점을 제 있고 , self =~ str 와 같습니다. 매치 하지 않았던 경우 nil 를 돌려줍니다.

정규 표현에 매치 한 부분 캐릭터 라인만이 필요한 경우에,

bar = /foo(. *) baz/.match("foobarbaz"). to_a[1]

_, foo, bar, baz = */(foo)(bar)(baz)/. match("foobarbaz")

(와)과 같이 사용 할 수 있습니다 (to_a 는, 매치에 실패할 경우를 고려하고 있습니다) .

to_s

정규 표현의 캐릭터 라인 표현을 생성해 돌려줍니다. 돌려주어지는 캐릭터 라인은 다른 정규겉 실제로 묻어도 그 의미가 보관 유지되게 되어 있습니다.

re = /foo|bar|baz/i
p re.to_s       # => "(? i-mx:foo|bar|baz) "
p /#{re}+/o     # => /(? i-mx:foo|bar|baz)+/

다만, 후방 참조를 포함한 정규 표현은 의도 통과하기에는 안 되는 경우가 있습니다. 이것은 현상, 후방 참조를 번호밖에 지정할 수 없기 때문에입니다.

re = /(foo|bar)\1/      # \1 는, foo 인가 bar
p /(baz)#{re}/          # \1 는, baz

# => /(baz)(? -mix:(foo|bar)\1)/


String

캐릭터 라인 클래스. 임의의 길이가 바이트열을 취급하는 것이 � . 캐릭터 라인 리터럴을 참조해 주세요.

String 클래스는 자신을 바이트열로서 취급합니다. 멀티 바이트 캐릭터 라인으로부터 1 문자씩 꺼내고 싶은 경우는 scan(/. /) 등을 사용합니다.

슈퍼 클래스

  • Object

인클루드 하고 있는 모듈

  • Comparable
  • Enumerable

메소드

self + other

캐릭터 라인을 연결한 새로운 캐릭터 라인을 돌려줍니다.

self * times

캐릭터 라인의 내용을 times 회만 반복한 새로운 캐릭터 라인을 작성해 돌려줍니다.

self <=> other

self 와 other 를 ASCII 코드순서로 비교해, self 가 크다 때에 정, 동일할 때에 0, 작을 때에 부의 정수를 돌려줍니다.

self == other

캐릭터 라인이 동일한지 어떤지 판정 합니다.

self[nth, len]

nth 바이트 번째로부터 길이 len 바이트의 부분 캐릭터 라인을 반환 . nth 가 부의 경우는 캐릭터 라인의 말미로부터 셉니다.

nth 가 범위외를 가리키는 경우는 nil 를 돌려줍니다.

self[regexp]

regexp 에 매치 하는 최초의 부분 캐릭터 라인을 돌려줍니다. 편입 변수 $~ 에 매치에 관한 정보가 설정됩니다.

regexp 에 매치 하지 않는 경우 nil 를 돌려줍니다.

p "foobar"[/bar/]   # => "bar"
self[nth, len]=val

nth 바이트 번째로부터 길이 len 바이트의 부분 문자 열을 캐릭터 라인 val 로 옮겨놓습니다. nth 가 부의 장소 합은 캐릭터 라인의 말미로부터 셉니다.

val 를 돌려줍니다.

self[regexp]=val

정규 표현 regexp 에 매치 하는 최초의 부분 캐릭터 라인을 캐릭터 라인 val 로 옮겨놓습니다.

정규 표현이 매치 하지 않으면 예외 IndexError 가 발생합니다.

val 를 돌려줍니다.

clone
dup

캐릭터 라인과 같은 내용을 가지는 새로운 캐릭터 라인을 돌려줍니다. 다운 당한 캐릭터 라인의 clone 는 freeze 된 캐릭터 라인을 돌려줍니다만, dup 는 내용의 동일한 freeze되어 있지 않은 캐릭터 라인을 돌려줍니다.

concat(other)

캐릭터 라인 other 의 내용을 self 에 연결합니다. self 를 돌려줍니다.

downcase
downcase!

캐릭터 라인중의 알파벳 대문자를 모두 소문자에 옮겨놓습니다.

downcase 는 변경 후의 캐릭터 라인을 생성해 돌려줍니다. downcase! (은)는 self 를 변경해 돌려줍니다만, 치환이 오코시 이거 참 없었던 경우는 nil 를 돌려줍니다.

upcase 도 참조해 주세요.

each {|line| ... }
each_line {|line| ... }

캐릭터 라인중의 각 행에 대해서 반복합니다.

self 를 돌려줍니다.

each_byte {|byte| ... }

캐릭터 라인의 각 바이트에 대해서 반복합니다. self 를 돌려줍니다.

empty?

캐릭터 라인이 하늘 (즉 길이 0) 때, 진을 돌려줍니다.

gsub(pattern) {|matched| .... }
gsub! (pattern) {|matched| .... }

캐릭터 라인중에서 pattern 에 매치 하는 부분모두를, 블록을 평가한 결과로 치환을 합니다. 블록에는 인수로서 매치 한 부분 캐릭터 라인이 건네받습니다. 블록중에서는 편입 변수 $ 를 참조 할 수 있습니다.

p 'abcabc'. gsub(/b/) {|s| s.upcase }    # => "aBcaBc"
p 'abcabc'. gsub(/b/) { $&.upcase }      # => "aBcaBc"
p 'abbbcd'. gsub(/a(b+)/) { $1 }         # => "bbbcd"

gsub 는 치환 후의 캐릭터 라인을 생성해 돌려줍니다. gsub! (은)는 self 를 변경해 돌려줍니다만, 치환이 일어나지 않았던 경우는 nil 를 돌려줍니다.

sub 도 참조해 주세요.

insert(nth, other)

nth 번째의 문자의 직전에 캐릭터 라인 other 를 삽입 합니다. self 를 돌려줍니다.

p "foobaz".insert(3, "bar")         # => "foobarbaz"
to_sym

캐릭터 라인에 대응하는 심볼값 (Symbol )을 돌려줍니다.

심볼에 대응하는 캐릭터 라인을 얻기에는 Symbol#id2name 를 사용합니다.

p "foo".to_sym                      # => :foo
p "foo".to_sym.to_s == "foo"        # => true
length
size

캐릭터 라인의 바이트수를 돌려줍니다.

scan(re)
scan(re) {|s| ... }

self 에 대해서 정규 표현 re 로 반복해 매치를 해, 막 치 한 부분 캐릭터 라인의 배열을 돌려줍니다.

p "foobarbazfoobarbaz".scan(/ba. /)
# => ["bar", "baz", "bar", "baz"]

p "만나 이식하고 ".scan(/. /)
# => ["아", "있고 ", "", "네", ""]

블록을 지정해 호출할 경우는, 매치 한 부분 캐릭터 라인 (괄호를 함 경우는 괄호로 괄패턴에 매치 한 캐릭터 라인의 배열)을 블록 의 파라미터라고 합니다. 블록을 지정할 경우는 self 를 반환 .

"foobarbazfoobarbaz".scan(/ba. /) {|s| p s}
# => "bar"
     "baz"
     "bar"
     "baz"
slice(nth, len)
slice(regexp)

self[] 와 같습니다.

slice! (nth, len)
slice! (regexp)

지정한 범위 (self[] 참조)를 캐릭터 라인으로부터 취해 제 네로 없앤 부분 캐릭터 라인을 돌려줍니다.

인수가 범위외를 가리키는 경우는 nil 를 돌려줍니다.

sub(pattern) {|matched| ... }
sub! (pattern) {|matched| ... }

캐릭터 라인중에서 pattern 에최초로매치 하는 부분을, 블록을 평가한 값으로 옮겨놓습니다.

sub 는 치환 후의 캐릭터 라인을 생성해 돌려줍니다. sub! (은)는 self 를 변경해 돌려줍니다만, 치환이 오코시 이거 참 없었던 경우는 nil 를 돌려줍니다.

매치를 한 번 해 카행와 없는 점을 제외하면 gsub 와 같습니다.

to_f

캐릭터 라인을 10 진수 표현과 해석해, 부동 소수점수(실수) Float 로 변환합니다.

to_i([base])

캐릭터 라인을 수치 표현과 해석해, 정수 로 변환합니다.

기수 base 를 지정하는 것으로 디폴트의 10 진이외 에 2 ? 36 진수에의 변환을 할 수가 있습니다.

upcase
upcase!

캐릭터 라인중의 알파벳 소문자를 모두 대문자에 옮겨놓습니다.

upcase 는 치환 후의 캐릭터 라인을 생성해 돌려줍니다. upcase! (은)는 self 를 변경해 돌려줍니다만, 치환이 오코시 이거 참 없었던 경우는 nil 를 돌려줍니다.

downcase 도 참조해 주세요.


Symbol

심볼을 나타내는 클래스. 심볼을 참조해 주세요.

슈퍼 클래스

  • Object

메소드

id2name

심볼에 대응하는 캐릭터 라인을 돌려줍니다.

캐릭터 라인에 대응하는 심볼을 얻기에는 String#to_sym 를 사용합니다.

p :foo.id2name.to_sym == :foo       # => true
to_i

심볼에 대응하는 정수를 돌려줍니다.

이 정수로부터 대응하는 심볼을 얻기에는 Fixnum#to_sym 를 사용합니다.

p :foo.to_i                         # => 8881
p :foo.to_i.to_sym                  # => :foo

Ruby 의 실장에서는 예약어(reserved word), 변수명, 메소드명 등을 이 정수로 관리하고 있고 . 오브젝트에 대응하는 정수 (Object#object_id 로 이득들 )와 Symbol 에 대응하는 정수는 다른 것입니다.


Time

시각의 클래스.

슈퍼 클래스

  • Object

인클루드 하고 있는 모듈

  • Comparable

클래스 메소드

Time.now

현재 시각의 Time 오브젝트를 돌려줍니다.

메소드

self + other

self 보다 other 초만 후의 시각을 돌려주는

self - other

other 가 Time 오브젝트일 때, 두 시각의 차이를 Float 로 돌려줍니다. other 가 수치일 때에는 self 보다 other 만 전의 시각을 돌려줍니다.

self <=> other

시각의 비교. other 는 Time 오브젝트인가 수치가 아니면 되지 않습니다. 수치의 경우는 기산시부터의 경과초수로 간주해 비교합니다.

strftime(format)

시각을 format 캐릭터 라인에 따라 캐릭터 라인 으로 변환한 결과를 돌려줍니다. format 캐릭터 라인으로서 지정 할 수 있는 것은 이하와 같습니다.

  • %A

    요일의 명칭 (Sunday, Monday ... )

  • %a

    요일의 생략명 (Sun, Mon ... )

  • %B

    달의 명칭 (January, February ... )

  • %b

    달의 생략명 (Jan, Feb ... )

  • %c

    일짜와 시각

  • %d

    날 (01-31)

  • %H

    24 시간제때 (00-23)

  • %I

    12 시간제때 (01-12)

  • %j

    연중의 통산일 (001-366)

  • %M

    분 (00-59)

  • %m

    달을 나타내는 숫자 (01-12)

  • %p

    오전 또는 오후 (AM, PM)

  • %S

    초 (00-60) (60 은 윤초)

  • %U

    주를 나타내는 수. 최초의 일요일이 제 1 주의 시작 (00-53)

  • %W

    주를 나타내는 수. 최초의 월요일이 제 1 주의 시작 (00-53)

  • %w

    요일을 나타내는 수. 일요일이 0(0-6)

  • %X

    시각

  • %x

    일짜

  • %Y

    서기를 나타내는 수

  • %y

    서기하 2 자리수 (00-99)

  • %Z

    타임 존

  • %%

    % 자신

sec

초를 돌려줍니다.

min

분을 돌려줍니다.

hour

때를 돌려줍니다.

mday

날을 돌려줍니다.

mon

달을 돌려줍니다.

year

해를 돌려줍니다.

wday

요일을 나타내는 수를 돌려줍니다.


TrueClass

true 의 클래스. true 는 TrueClass 클래스의 유일한 인 발을 벌리는 폭입니다. true 는 진을 나타내는 대표의 오브젝트입니다.

슈퍼 클래스

  • Object

메소드

self & other

other 가 진이라면 true 를 가짜라면 false 를 돌려줍니다.

self | other

항상 true 를 돌려줍니다.

self ^ other

other 가 진이라면 false 를 가짜라면 true 를 돌려줍니다.


Comparable

비교 연산을 허락하는 클래스를 위한 Mix-in. 이 모듈을 인크루 드 하는 클래스는, 기본적인 비교 연산자인 <=> 연산자를 정의 하고 있고 필요가 있습니다. 다른 비교 연산자는 그 정의를 이용해 파생 할 수 있습니다.

메소드

self == other

self 와 other 가 동일할 시진을 돌려줍니다.

<=> 가 nil 를 돌려주었을 때 nil 를 돌려줍니다.

self > other

self 가 other 보다 클 시진을 돌려줍니다.

<=> 가 nil 를 돌려주었을 때 예외 ArgumentError 가 발생합니다.

self >= other

self 가 other 보다 큰가 동일할 시진을 돌려줍니다.

<=> 가 nil 를 돌려주었을 때 예외 ArgumentError 가 발생합니다.

self < other

self 가 other 보다 어릴 시진을 돌려줍니다.

<=> 가 nil 를 돌려주었을 때 예외 ArgumentError 가 발생합니다.

self <= other

self 가 other 보다 작은가 동일할 시진을 돌려줍니다.

<=> 가 nil 를 돌려주었을 때 예외 ArgumentError 가 발생합니다.

between? (min, max)

self 가 min 와 max 의 범위내 (min, max (을)를 포함합니다)에 있을 때 진을 돌려줍니다.

self <=> min 인가, self <=> max 가 nil 를 반 했을 때 예외 ArgumentError 가 발생합니다.


Enumerable

반복을 하는 클래스를 위한 Mix-in. 이 모듈의 메소드는 모두 each 를 이용해 정의 되어 있으므로, 인클루드 하는 클래스에는 each 가 정의되어 있지 않으면 되지 않습니다.

메소드

all?
all? {|item| ... }

모든 요소가 진인 경우에 true 를 돌려줍니다. 가짜인 요소가 있으면, 즉시 false 를 돌려줍니다.

블록을 수반하는 경우는, 각 요소에 대해서 블록을 평가해, 모든 결과 하지만 진인 경우에 true 를 돌려줍니다. 블록이 가짜를 돌려준 시점으로, 즉시 false 를 돌려줍니다.

p [1,2,3]. all?  {|v| v > 0}   # => true
p [1,2,3]. all?  {|v| v > 1}   # => false
any?
any? {|item| ... }

모든 요소가 가짜인 경우에 false 를 돌려줍니다. 진인 요소 (이)가 있으면, 즉시 true 를 돌려줍니다.

블록을 수반하는 경우는, 각 요소에 대해서 블록을 평가해, 모든 결과 하지만 가짜인 경우에 false 를 돌려줍니다. 블록이 진을 돌려준 시점 (으)로, 즉시 true 를 돌려줍니다.

p [1,2,3]. any?  {|v| v > 3}   # => false
p [1,2,3]. any?  {|v| v > 1}   # => true
find {|item| ... }

요소에 대해서 블록을 평가한 값이 실로 된 최초의 요소를 돌려줍니다. 실로 되는 요소가 하나도 없었던 경우는 nil 를 돌려줍니다.

find_all {|item| ... }

각 요소에 대해서 블록을 평가한 값이 진인 요소를 모두 포함한 배열을 돌려줍니다. 실로 되는 요소가 하나도 없었던 경우는 하늘의 배열을 돌려줍니다.

include? (val)

val 와 == 의 관계에 있는 요소를 포함할 때 진을 돌려줍니다.

max

최대의 요소를 돌려줍니다. 전요소가 서로 <=> 메소드로 비교 할 수 있고 (일)것을 가정하고 있습니다.

max {|a, b| ... }

블록의 평가값을 앞으로 각 요소를 비교해, 최대의 요소를 돌려줍니다.

블록의 값은, a>b 때 정, a==b 때 0, a<b 때 부의 정수를, 기대하고 있습니다. 블록이 정수 이외를 돌려주었을 때는 예외 TypeError 가 발생합니다.

min

최소의 요소를 돌려줍니다. 전요소가 서로 <=> 메소드로 비교 할 수 있고 (일)것을 가정하고 있습니다.

min {|a, b| ... }

블록의 평가값으로 각 요소를 비교해, 최소의 요소를 돌려줍니다.

블록의 값은, a>b 때 정, a==b 때 0, a<b 때 부의 정수를, 기대하고 있습니다. 블록이 정수 이외를 돌려주었을 때는 예외 TypeError 가 발생합니다.

sort
sort {|a, b| ... }

모든 요소를 승순에 소트 한 배열을 생성해 돌려줍니다.

블록 없음 때는 <=> 메소드를 요소에 대해서 불러, 그 결 과를 기초로 소트 합니다.

<=> 이외로 소트 하고 싶은 경우는, 블록을 지정합니다. 이 경우 블록의 평가 결과를 앞으로 소트 합니다. 블록의 값은, a>b 때 정, a==b 때 0, a<b 때 부의 정수를 기대하고 있습니다. 블록이 정수 이외를 돌려주었을 때는 예외 TypeError 하지만 발생합니다.

to_a
entries

모든 요소를 포함한 배열을 돌려줍니다.


Errno

시스템 콜의 에러에 대응하는 예외를 모은 모듈.

내부 클래스

대표적인 예외 클래스를 열거합니다. 이외에도 다수 정의 되어 있습니다만, 그다지 걱정할 필요는 없습니다.

E2BIG
인수 리스트가 너무 길다.
EACCES
액세스 허가가 거부되었다.
EAGAIN
더 이상 프로세스를 생성할 수 없다.
EBADF
부정한 파일 번호.
ECHILD
child process가 존재하지 않는다.
EDEADLOCK
자원의 데드 록이 발생할 가능성이 있다.
EDOM
수치 연산 함수의 인수가 함수의 도메인외의 값이다.
EEXIST
파일이 벌써 존재한다.
EINVAL
부정한 인수.
EMFILE
열려 있는 파일이 너무 많다.
ENOENT
파일 또는 디렉토리가 없다.
ENOEXEC
실행 파일의 에러.
ENOMEM
메모리 부족.
ENOSPC
디바이스의 빈영역 부족.
ERANGE
결과가 너무 크다.
EXDEV
디바이스간 링크.


FileTest

파일의 검사 함수를 모은 모듈.

모듈 함수

FileTest.exist? (filename)

filename 가 존재할 때, 진을 돌려줍니다.

FileTest.directory? (filename)

filename 가 디렉토리 때, 진을 돌려줍니다.

FileTest.file? (filename)

filaname 가 통상 파일일 때, 진을 돌려줍니다.

FileTest.size(filename)

filename 의 사이즈를 돌려줍니다. filename 가 존재하지 않으면 예외 Errno::EXXX (아마 Errno::ENOENT)(이)가 발생합니다.


GC

Ruby interpreter의 「쓰레기 모음 (Garbage Collection)」를 제어하는 모듈.

모듈 메소드

GC.disable

쓰레기 컬렉트를 금지합니다.

전번의 금지 상태를 돌려줍니다 (금지되어 아픈들 true, GC 가 유효했다라면, false) .

GC.enable

카베이지코레크트를 허가합니다.

전번의 금지 상태를 돌려줍니다 (금지되어 아픈들 true, GC 가 유효했다라면, false) .

GC.start

카베이지코레크트를 개시합니다.

nil 를 돌려줍니다.


Kernel

모든 클래스로부터 참조 할 수 있는 메소드를 정의 하고 있는 모듈. Object 클래스 (은)는 이 모듈을 인클루드 하고 있습니다. 편입 함수의 항으로 해설되어 있는 메소드는 이 모듈로 정의 되어 있습니다.

Object 클래스의 메소드는 실제로는 이 모듈로 정의 되어 있습니다. 이것은 톱 레벨에서의 메소드의 재정의에 대응 하기 위한(해)입니다.


Marshal

Ruby 오브젝트를 파일 (또는 캐릭터 라인)에 써내거나 읽어 돌리거나 하는 기능을 제공하는 모듈.

모듈 함수

Marshal.dump(obj[, port][, limit])

obj 를 재귀적으로 파일에 써냅니다.

File 나 MatchData 의 인스턴스, 특이 메소드를 정의 한 오브젝트 등, 파일에 써낼 수 없다 오브젝트도 존재합니다. 그러한 오브젝트를 파일에 써내려고 하면(자) 예외 TypeError 가 발생합니다.

port 에는 IO (또는 그 서브 클래스)의 인스턴스를 지정 합니다. 이 경우,port 를 돌려줍니다. 생략 할 경우에는 dump 는 그 오브젝트를 덤프 한 캐릭터 라인을 돌려줍니다.

limit 를 지정할 경우,limit 단이상 깊고 링크 했다 오브젝트를 덤프 할 수 없지 않습니다 (디폴트는 100 레벨) . 부의 limit 를 지정하면(자) 깊이 체크를 하지 않습니다.

Marshal.load(port)

port 로부터 마샤르데이타 (Marshal.dump 가 출력 하는 캐릭터 라인) (을)를 읽어들여, 원래의 오브젝트와 같은 상태를 가지는 오브젝트를 생성 섬 . port 는 캐릭터 라인인가 IO (또는 그 서브 클래스)의 인스턴스 (을)를 지정합니다.


Math

부동 소수점 연산을 서포트하는 모듈.

모듈 함수

Math.acos(x)
Math.asin(x)
Math.atan(x)

x 의 역삼각함수의 값을 라디안으로 돌려줍니다.

돌려주어지는 값의 범위는 각각 [0, + π] ,[-π/2, +π/2] , (-π/2, +π/2)입니다.

acos(x), asin(x)에서는 x 는 -1. 0 <= x <= 1 의 범위내에서 차면 되지 않습니다 (보통, NaN 를 돌려줍니다) .

acos(), asin()는 범위외의 인수에 대해서, 예 밖 Errno::EDOM 가 발생합니다.

Math.atan2(y, x)

y/x 의 arctangent를 [-π, π] 의 범위로 돌려줍니다.

Math.acosh(x)
Math.asinh(x)
Math.atanh(x)

x 의 역쌍곡선 함수의 값을 돌려줍니다.

asinh(x) = log(x + sqrt(x * x + 1))
acosh(x) = log(x + sqrt(x * x - 1)) [x >= 1]
atanh(x) = log((1+x)/(1-x)) / 2     [-1 < x < 1]

acosh(x)에서는 x 는x >= 1 의 범위내가 아니면 되지 않습니다 (보통, 예외 Errno::EDOM 가 발생합니다) .

atanh(x)에서는 x 는 -1. 0 < x < 1 의 범위내가 아니면 이전 (보통, 예외 Errno::EDOM 가 발생합니다) .

Math.cos(x)
Math.sin(x)
Math.tan(x)

라디안으로 표현된 x 의 삼각함수의 값을 [-1, 1] 의 범위로 돌려줍니다.

Math.cosh(x)
Math.sinh(x)
Math.tanh(x)

x 의 쌍곡선 함수의 값을 돌려줍니다.

cosh(x) = (exp(x) + exp(-x)) / 2
sinh(x) = (exp(x) - exp(-x)) / 2
tanh(x) = sinh(x) / cosh(x)
Math.erf(x)
Math.erfc(x)

x 의 오차 함수 (erf) , 상보 오차 함수 (erfc)의 값을 돌려줍니다.

Math.exp(x)

x 의 지수함수의 값을 돌려줍니다.

Math.frexp(x)

실수 x 의 지수부와 가수부를 돌려줍니다.

Math.hypot(x, y)

sqrt(x*x + y*y)를 돌려줍니다.

Math.ldexp(x, exp)

실수 x 에 2 의 exp 승을 걸친 수를 돌려줍니다.

Math.log(x)

x 의 자연대수를 돌려줍니다.

x 는 정의 값이 아니면 되지 않습니다 (보통, 부의 값에 대해서 NaN 를 0 에 대해서 -Infinity 를 돌려줍니다) .

범위외의 인수에 대해서, 부의 경우에 예외 Errno::EDOM 가 0 의 경우에 Errno::ERANGE 가 발생합니다.

Math.log10(x)

x 의 상용대수를 돌려줍니다.

x 는 정의 값이 아니면 되지 않습니다 (보통, 부의 값에 대해서 NaN 를 0 에 대해서 -Infinity 를 돌려줍니다) .

범위외의 인수에 대해서, 부의 경우에 예외 Errno::EDOM 가 0 의 경우에 Errno::ERANGE 가 발생합니다.

Math.sqrt(x)

x 의 평방근을 돌려줍니다. x 의 값이 부인>때로는 예외 ArgumentError 가 발생합니다.

보통, x 가 부의 경우, 예외 Errno::EDOM 가 발생합니다.

정수

E

자연대수의 바닥

p Math::E
# => 2.718281828
PI

원주율

p Math::PI
# => 3.141592654