렌파이/게임 따라하기 세리리의 해피버스데이 따라하기_ 3 GUI - 날짜 창, 커맨드 입력창, 스탯창 백안시 2012. 2. 16. 01:09 스크립트는 작성/변경한 분량만큼만 적어놓겠습니다. ''ㅋ 꽤 많이 한 것 같지만 주석이 반이라 실제 만든 건 별로 없습니다. 스크립트 init python: # 게임 화면 위쪽에 표시할 날짜 정보 관련 변수 # screen date 에서 사용 dday = 365 month = 3 day = 12 season = 'Spring' # 능력치 변수 # screen status에서 사용 # 힘, 지능, 귀여움, 말빨;, 상냥함, 피로, 초기값은 모두 0 pow = wise = cute = gap = kind = stress = 0 # 힘은 str 변수에 저장하려고 했더니 세이브/로드 화면이랑 충돌하는지 # 저장화면 불러올때마다 에러납니다. 그 스크린에서 간접적으로 str함수를 쓰거든요. # 그래서 pow로 했습니다. 흑. # 위치 표시할 때 필요한 변수 # screen spot에서 사용 spot = '방' init: # 게임 화면 위쪽에 날짜 정보를 표시하는 스크린 screen date: frame: xfill True # 해상도 가로 길이만큼 늘어나는 frame hbox: xalign .5 spacing 20 # season 변수에 저장된 문자열을 글자로 표시 text season # month, day 변수에 저장된 정수값을 다른 문자와 같이 쓰려고 아래처럼 적었습니다. # 문자열 안에 변수를 대괄호 안에 쓰면 변수값이 문자열로 치환되지여 text '[month]월 [day]일' # 위와 마찬가지 text '[dday]/365' # 명령 입력창 screen command: # 입력한 명령에 따라 화면에 이런저런 스크린을 띄우니까 # 혹시라도 스크린이 겹쳐 표시되지 않도록 태그를 달아줍니다. # 같은 태그를 가진 스크린을 나중에 나타내면 이전에 나타났던 스크린은 알아서 사라지죠. tag command # 정렬용 2x2 격자판 위젯을 만듭니다. grid 2 2: xpos 0.1 ypos 0.4 # 스케쥴은 설명할 게 좀 있습니다. 일단 schedule 이라는 레이블로 점프하도록 만들어두었습니다. textbutton "스케쥴" action Jump("schedule") # "대화"는 일주일에 한 번씩 할 수 있는 이벤트입니다. # 이벤트 명령어로 처리할 거라서 레이블을 따로 띄우도록 만듭시다. # 이렇게 하면 conversation 레이블에 있는 내용을 불러올 때는 저장이 안 되지만 # 대화중일때는 저장을 못하도록 막아놓으면 되겠죠. textbutton "대화" action ui.callsinnewcontext("conversation") # 호감도, 달력, 예정, 상태를 볼 수 있는 화면. textbutton "정보" # 저장이나 환경설정 할 수 있는 메뉴입니다. # 본 게임에서 구현된 건 되게 후졌지만 # 환경설정 화면 꾸미기 연습용으로 따라 만들어볼 생각입니다. textbutton "시스템" action ShowMenu('save') # 스탯창입니다. # 직접 show screen 으로 부른다기 보다는 # 다른 스크린 블록에 use 명령어를 통해 보여주는 식이 될 겁니다. # UI는 다 하려면 멀었으니까 ... # 다 만들고나서 한 번 더 정리해줘야겠네요 screen status: frame: xpos 0.1 ypos 0.6 # 6 x 2 격자판을 만듭니다. # 사실 3x2로 하려고 했는데 앞에 능력치 이름 글자 수때문에 능력치 숫자 위치가 멋대로라서.. grid 6 2: spacing 10 # 능력치 숫자는 오른쪽 정렬하려고 xalign 1.0값을 줬습니다. text '힘' text '[pow]' xalign 1.0 text '지식' text '[wise]' xalign 1.0 text '귀여움' text '[cute]' xalign 1.0 text '이야기' text '[gap]' xalign 1.0 text '상냥함' text '[kind]' xalign 1.0 text '피로' text '[stress]' xalign 1.0 # 현재 이벤트가 일어나는 장소가 어디있는지 알려주는 ui입니다. screen spot: frame: xalign .1 yalign .15 text spot label start: # 아래는 시스템 구성을 제대로 짜놓지 않은 상태에서 # 만들어놓은 GUI확인차 임의로 적어넣은 스크립트입니다. # 후에 바뀔 가능성이 다분합니다. # 본편엔 게임을 맨 처음 시작할 때 튜토리얼 과정이 있는데 # 따라 넣는다고 해도 다 완성하고 나서 만들어야 할 것 같습니다. # 날짜 스크린을 띄우고.. show screen date # 스탯창도 띄우고.. show screen status # 위치 알려주는 spot 스크린도 띄웁니다. show screen spot # 그림도 넣어봅시다. # options.rpy 에 config.automatic_images 를 True로 설정해서 # 알아서 이미지를 찾아내도록 미리 설정해뒀습니다. show eileen happy at right call screen command label schedule: # 일단 만들어놓기만 했습니다. return 링크 ui.callsinnewcontext 사용시 주의할 점 변수에 저장한 값을 글자로 나타내기 스크린언어_ grid문 config.automatic_images 스크립트를 그림 한 장으로 요약접기 이번 스크립트를 그림 한 장으로 요약하면 이렇게 됩니다. ui만 있는건데도 뭔가 있어보이는군요; 원본은 대충 요렇습니다. 접기 공유하기 게시글 관리 백안시의 공방 - 소설형 게임 제작실 '렌파이/게임 따라하기' Related Articles 세리리의 해피버스데이 따라하기_ 5 달력 세리리의 해피버스데이 따라하기_ 4 호감도 창 세리리의 해피버스데이 따라하기_ 2 오프닝 세리리의 해피버스데이 따라하기 _1