조회 수 635 추천 수 5 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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


1탄에 뒤이어 2탄을 씁니다.
그런데 2탄이 나오기 까지 시간이 좀(조금 너무 지나치게 많이) 걸렸군요.
열심히 썼는데 처음 2일 동안 댓글도, 추천도, 조회도 너무 낮아서 시무룩 하는 바람에....
그럼 하지메(시작).


class Window_SP < Window_Base
  def initialize
    super(0, 0, 160, 64)
  end
end

1탄을 보신 분들은 위의 것을 완벽하게 파악하셨을 것입니다.
그럼 여기에 텍스트를 넣어야 하죠.

참고로, Ruby에선 (≒프로그래밍) 텍스트=스트링 입니다.

self.contents = Bitmap.new(width - 32, height - 32)
refresh

이 두가지를 super 아래에 추가해 봅시다.
윈도우 구성 설정에 contents(즉, 어떠한 것)를 추가 합니다.
contents 들은 스트링이 될수도 있고, 그외 그래픽이 될수도 있습니다.
이 contents 를 super에서 설정한 윈도우 사이즈에 맞게 거리를 두도록
설정 하는게 (width - 32, height - 32) 입니다. 원래 제작 되어 있던
윈도우를 보시면, 윈도우의 변(그러니까, 3D에선 모서리) 과
그 윈도우의 내용들(contents)과의 거리가 꽤 있다는것을 보실 겁니다.
여기서 윈도우의 변은 테두리가 아니고, 테두리 중에서도 가장 바깥에
있는 선을 예기하는 겁니다.


그리고 refresh. 아무것도 없고, 변수도 아니고 아무것도 아닌데 왜 나왔을까요.
사실 refresh 라는 이름은 별 의미가 없습니다. text 라고 지어도 되고,
chodingzul 이라고 지어도 됩니다. 하지만 이게 뭘 의미 하는 걸까요?
바로 메소드를 불러 오는 것입니다. 하지만 메소드가 없지요?
그래서 만드는 것입니다. 사실 initialize 메소드 내에 첨가 해도 되나,
initialize와 refresh를 분리하는 이유는, 다른 사람들이 조작 하기 편하게,
그리고 자기 자신도 다루기 편하게 하기 위해서 입니다.
분류해 두면 윈도우 조작 따로, 텍스트(위치, 스트링)조작 따로할수 있으니까요.

class Window_SP < Window_Base
  def initialize
    super(0, 0, 160, 64)
    self.contents = Bitmap.new(width - 32, height - 32)
    refresh
  end
  def refresh
  end
end

def가 메소드를 의미하는건 다 아시죠?
refresh 라는 메소드를 def로 지정 했습니다.

def refresh

모든 명령어(변수, 오브젝트 등등 제외)에는 end가 필요하죠.

end

그런데 정작 만들고 나면 아무것도 안뜰것입니다.

왜?

그야 당연하죠. 텍스트를 아직 안 넣었으니까요.

    self.contents.clear
    self.contents.font.color = system_color
    self.contents.draw_text(4, 0, 120, 32, "연금술사")

라고 refresh 메소드에 넣어 봅시다.
그러면 윈도우에 '연금술사'라고 텍스트가 나올것입니다.

그럼 설명

self.contents.clear

잡 컨텐츠가 있으면 안되죠. 일단 전부다 클리어 해야 합니다. 그것이 바로
위에 있는 clear 명령

self.contents.font.color = system_color

x = y일때, x 부분은 '텍스트 색깔 뭐?'라는 부분 이고, y는 '이거'라는 부분입니다.
system_color 라는 것은 기본 색이죠. 이것은 window_base를 참조 하시거나,
개인적으로 바꿀수 있습니다.

self.contents.draw_text(x, y, w, h, t, a)

draw_text 라는 것은, 제 추측에 의하면 아마 Ruby에 몇 안되는 상위 클래스중 하나,
window 클래스에 속하는 메소드(=명령어) 일것입니다. window 클래스는
window_base의 슈퍼 클래스이기도 합니다.
아무튼, 본론으로 돌아와서, 다시 설명

x = 텍스트 x
y = 텍스트 y
w = 글자란 폭
h = 글자란 높이
t = 선정할 텍스트
a = 정렬(align 을 기초로, 0, 1, 2 로 나눕니다. 정렬은 이 숫자들 순서)

대체 적으로, x 나 y 는 0으로 둡니다. 위에 있던 예제는 RXP 기본에서 퍼왔기
때문에 x 부분이 4인것입니다. 이건 개인 취향입니다.
그리고 w는 원하시는 만큼, 개인적으론 160-32(=128) 또는 160-64(96)을 추천합니다.
그리고 글자 크기가 보통이고 한줄인 이상, h 부분은 32정도로 해두세요.
그리고 중요한것은 t !
스트링은 "과 " 사이에 쓰셔야 합니다. 그 외에 방법은 다음 탄에 자세하게 설명할 것입니다.
여기선 일반 적인 텍스트를 썼지만, 특이하게 변수를 스트링으로 옮기거나(.to_s 를 사용하면
가능합니다), 아니면 언제든지 변경되는 텍스를 사용하는 경우가 있기에(예 : 시간), 그걸
3탄에서 설명하려 합니다.

어쨋든! 그리고 a는 0이나 1로 두세요. 이건 정렬입니다.


아마 이정도면 텍스트가 있는 윈도우는 다 만드실수 있을겁니다.
윈도우에 특이한 능력을 부여하고 싶다구요? 그건 4탄에서 기대하시기 바랍니다.




1탄 - 윈도우 제작
2탄 - 텍스트 삽입
3탄 - 특이한 텍스트들
4탄 - 윈도우의 특수 능력
5탄 - 윈도우의 활용

1탄 - 윈도우의 크기등을 조절할수 있다.
2탄 - 텍스트가 있는 윈도우를 만들수 있다.
3탄 - 바뀌는 텍스트, 수치변수 스트링을 사용할수 있다.
4탄 - 윈도우를 커맨드나 셀렉트 형식으로 만들수 있다.
5탄 - 윈도우를 다 만들었다. 그럼 실제 상황에서 써먹자.
?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
1004 언어/기타 목에 좋은것들.... 1 켄타 2005.05.17 2070
1003 RPG Maker 좌표대입(ARPG) 사고실험.[이론편] 늑대소년 2005.05.18 1509
1002 언어/기타 스킬데미지를 10000이상 뜨게해보자.(턴알,액알 둘다) Dship 2005.05.18 1888
1001 언어/기타 Fruity Loops에서 FX탭 사용방법 (1) Mr^Lee 2005.05.18 1709
1000 RPG Maker RPG XP 배워보기 <변수를 마스터하자 상편> 1 덩키동크 2005.05.18 2206
999 언어/기타 100%고수강의!(변수이론) 늑대소년 2005.05.18 2470
998 언어/기타 나름대로 - 변수강좌 켈리시 2005.05.18 1624
997 언어/기타 변수(變數)의 기초 바람을 가르는 자 2005.05.19 1270
996 언어/기타 이번에는 오프닝을! 장아찌 2005.05.20 2635
995 RPG Maker 액션RPG 속성무기를 만들어보자!! 천룡수 2005.05.20 1538
994 RPG Maker 아르바이트를 만들자 . - 1 Norid 2005.05.20 1739
993 언어/기타 플레이어가 자기의 이름을 정한다 . [영어] file Norid 2005.05.21 1780
992 언어/기타 레벨업을 하라 . 그리하면 살것이니.. 1 file Norid 2005.05.22 1574
991 [RPG2000] 가이드북 -7- 창조도시 2005.05.22 11106
990 언어/기타 나라의 PHP 초보탈출 - 1편 나라 2005.05.22 1732
989 RPG Maker 경영 RPG만들기[콤플리트판] 늑대소년 2005.05.24 2039
988 [RPG2000] 가이드북 -1- (표지내용무) 창조도시 2005.05.25 14508
987 언어/기타 [c++] 생성자,파괴자 챔피온 2005.05.26 1668
986 언어/기타 《완벽하게 현실적인 게임을 만들려면 해야되는 조작 몇 가지》-[上편] 자이크로 2005.05.27 1852
985 언어/기타 [R2000] 초간단 단거리액알 2 비밀소년 2005.05.27 2521
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 51 Next
/ 51


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

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