250x250

Xtra의 그 무엇

블로그 이미지
욕심많아 진도 느린 Xtra입니다.
by Xtra
  • Total hit
  • Today hit
  • Yesterday hit

728x90
728x90

선 요약

후 사설

 

추가

 python의 for문의 대해서 조금 고민해 보았다. 그야 다른 문법의 for과 달라보였기 때문인데 요컨에 python의 for문은 단순히 숫자를 반복하는 것이 아니아. in에 해당하는 변수의 내용물을 그대로 반복하는 형태이기 때문에 만약 in의 내용이 리스트하면 그 안에 드어가 있는 내용이 그대로 하나씩 적용되서 번복 되는 형태였다.

 즉 아래의 자료가 수준이 좀 낮았다는 것을 알 수 있었다.

for e in my_profiles:
    self.i += 1
    if self.i <= (ev_page + 1) * ev_icons and self.i > ev_page * ev_icons:
    current_pic = "images/" + my_profiles[self.i-1].base + "_0.png"
    renpy.ui.imagebutton(idle=str(current_pic), hover=str(current_pic), action=[SetVariable("current", my_profiles[self.i-1].base), ShowMenu("cr_detail")])                

 

이 내용은 이렇게 길 필요가 없다.

my_profiles[self.i-1].base의 값이 이미 e에 할당 되기 때문에 필요가 없다. 또 어차피 반복 문이기 때문에 범위를 할당할 필요가 없다. 즉 if문도 필요가 없고 i도 사용하지 않으니 굳이 변수를 선언할 필요도 없다. 오히려 i가 있으면 이 변수를 함께 사용할 경우 매사용마다 i를 0으로 값을 초기화 해주어야 한다. 하지만 e를 정상적로 활용 하면 그럴 필요가 없다.

 for e in my_profiles:
    current_pic = "images/" + e.base + "_0.png"
    renpy.ui.imagebutton(idle=str(current_pic), hover=str(current_pic), action=[SetVariable("current", e.base), ShowMenu("cr_detail")])                   

이걸로 동일하게 작동한다. my_profiles내용이 모두 e에 동일하게 적용되니 당연한 결과이다. 이 내용을 아래 코드에도 적용해두겠다. 만약 단순하게 숫자가 필요한거라면 range (0, len(my_profiles))을 in하면 된다. 그러면 0 부터 len으로 얻게되는 크기의 숫자만큼 반복하는 과정에서 e는 숫자를 할당 받는다.

 

 

 

 

 

 

 

요약

Script.rpy

init python:
    Tucson = profile("Tucson", "tucson")
    my_profiles = [Tucson]
    Inven_num = 0 #선택한 아이템이 인벤의 몇번째에 해댕하는지 받아 적음

label start:
    screen evidence_menu:
        imagebutton auto "profile_button_sm_%s.png" action [SetVariable("Inven_num", 0), ShowMenu("ITEM_VIWE")]  xalign .90 yalign .02

    $my_profiles.append(Tucson) #아이템을 추가한다.
    call screen evidence_menu

 

court_record.rpy

#심각한 버그: hide해도 해당 버튼이 살아있기 때문에 계속 눌린다. 이거 뭐 어찌 해결함?
init python:
    class profile:
        def __init__(self, name, base):
            self.name = name
            self.base = base
    class courtRec:
        i = 0 #더이상 필요가 없다.
        def Inven_item_Button(self): #여기서 UI 버튼을 만들고 인벤토리 숫자 만큼 반복해서 Vpgrid를 채운다.
            for e in my_profiles:
                current_pic = "images/" + e.base + "_0.png"
                renpy.ui.imagebutton(idle=str(current_pic), hover=str(current_pic), action=[SetVariable("current", e.base), ShowMenu("cr_detail")]) #e.base), ShowMenu("cr_detail")])                    

screen ITEM_VIWE:
    $ records = courtRec() #courtRec안의 기능을 쓰기 위해서 이것은 필수이다. 즉 해당 기능을 모듈화 하면 아마도 필요 없다.
    frame:#
        xalign 0.9
        vpgrid:
            cols 1 #개인적으로 1이상 쓸 일이 없다.
            draggable True     #드레그 스크롤은 왜 안됨?
            mousewheel True    #마우스 스크롤 ok
            scrollbars "vertical"
            $ records.Inven_item_Button()
        vbox: #버튼을 지웠는데 배경이 변한것은 박스 기능에 기본으로 붙어 있는 배경 때문이다.
            imagebutton auto "close_%s.png" action [Hide('ITEM_VIWE'), Jump("start")]

screen ITEM_INFO: #상세 정보창
    frame:
#        xsize 1280        ysize 720
#        background Frame("evidence_detail_window.png")
        hbox:
            xalign 0.1 xsize 400
            $ current_pic = "/images/" + my_profiles[Inven_num].base + "_1.png"
            add current_pic
        vbox:
            xalign 0.8 yalign 0.1 ysize 200 xsize 300 #X크기가 크면 그만큼 위치가 밀림
            text "profiles Title" # 아이템 명칭
            vbox:
                ysize 120
                text "{b}Occupation: {/b} " + my_profiles[Inven_num].name
                text "Test is [Inven_num] "
        hbox:
            xalign 0.5 yalign 0.99
            imagebutton auto "profile_button_%s.png" action [Hide("ITEM_INFO"), SetVariable("Inven_num", 0), Show("ITEM_VIWE")]
            imagebutton auto "close_%s.png" action [Hide("ITEM_INFO"), Jump("start")]

   클래스 지식만 조금 있으면 이해하는데 문제가 없을것으로 생각한다. for는 자료 크기 만큼 반복한다.

 

'

 

 

사설

https://lemmasoft.renai.us/forums/viewtopic.php?f=51&t=53539#p503792

 

Ace Attorney style Court Record - Lemma Soft Forums

A place for Ren'Py tutorials and reusable Ren'Py code. Forum rules Do not post questions here! This forum is for example code you want to show other people. Ren'Py questions should be asked in the Ren'Py Questions and Announcements forum. Smaymay Regular P

lemmasoft.renai.us

 

 위 자료를 다이어트 시킨것이 요약 본이다.

 해당 자료와 많이 달라지기도 했는데 기능은 다음과 같다.

 - 위에서 아래로 세로 스크롤하는 가방

 - 가방을 닫을 때마다 목록을 하나씩 추가

 - 상세보기 후 가방으로 돌아가기와 가방 닫기 버튼

 

본래 자료에서 삭제한 기능은

 - 페이지를 넘기는 버튼 (상세, 목록 모두 삭제)

 - 시나리오 및 배경 이미지 삭제

 - 실제로 잔득 지웠는데 기능이 뭐였나 싶은것들이라 잘 떠오르지 않는다.

 

 자세하게는 어떻게 설명하면 좋을지 모르겠지만 위 요약만으로 충분히 앞으로 인벤토리를 어떻게 만들어야 할지 상상해볼 수 있을거라 생각한다. 가장 큰 문제가 vpgrid인데 이 녀석은 가로 세로가 1 이상이 되었을때 결코 빈 공간을 만들면 안되기 때문에 빈 값을 넣어서 매꿔야한다. 그 문제를 해결하지 않았기 때문에 내가 따라한 자료에서는 페이지를 넘길때 에러가 발생한다. 나는 이문제를 해결하기 위해서 1로 값을 고정했다. 아이템이 1열로 쭉 나열되 보여도 문제가 안되게 디자인 할것이다.

 

 또 눈에는 보이지 않지만 버튼은 살아있기 때문에 눈에 보이는 버튼 위치가 아닌 허공을 클릭해도 이전 버튼이 눌리는 버그가 발생한다. 이 문제를 해결하는 방법을 딱히 떠올리지 못했고 공부 생각이 없기 때문에 사실상 요약 중에서

screen ITEM_INFO: #상세 정보창
    frame:
#        xsize 1280        ysize 720
#        background Frame("evidence_detail_window.png")
        hbox:
            xalign 0.1 xsize 400
            $ current_pic = "/images/" + my_profiles[Inven_num].base + "_1.png"
            add current_pic
        vbox:
            xalign 0.8 yalign 0.1 ysize 200 xsize 300 #X크기가 크면 그만큼 위치가 밀림
            text "profiles Title" # 아이템 명칭
            vbox:
                ysize 120
                text "{b}Occupation: {/b} " + my_profiles[Inven_num].name
                text "Test is [Inven_num] "

 이 만큼이 필요 없다고 생각한다.

개인적으로 

        hbox:
            xalign 0.5 yalign 0.99
            imagebutton auto "profile_button_%s.png" action [Hide("ITEM_INFO"), SetVariable("Inven_num", 0), Show("ITEM_VIWE")]
            imagebutton auto "close_%s.png" action [Hide("ITEM_INFO"), Jump("start")]

이 부분은 사용 할거다. "가방으로 돌아가기"와 "가방 닫기"를 "아이템 사용 하기"또는 "않하기"로 변경하고 처음 부터 아이템 이미지에 아이템의 정보를 같이 보여줄 생각이다. 그러면 버그 문제도 해결하고 UI는 그에 맞게 이쁘게 만들 자신이 있다. 디자인도 함께하면서 프로그램의 문제도 해결하는 것이 빠른 결과물로 가는 지름길일것이다.

 

 아직까지 완성이라고 하나도 해본적이 없지만...

 

 

 

 

 

 

 

 

 

728x90
728x90
AND

ARTICLE CATEGORY

전체 카테고리 (943)
게임 개발 (10)
기획 파트 (23)
그래픽파트 (73)
思-네트워크 (112)
프로그래밍 (74)
2020 ~ 24 잡탕 (395)
2010 ~ 19 잡탕 (197)
만화 연재 (14)
소설 연재 (12)
기타 연재 (0)
네오스 VR (18)
그란 카 리버리 (15)

RECENT ARTICLE

RECENT COMMENT

RECENT TRACKBACK

CALENDAR

«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

ARCHIVE