【TIC-80】가상의 게임기의 게임을 FantasyConsole에 이식한다(그 4)

"나라 도둑질"에는 피버 모드가되는 것이 있습니다.
  • 빛나는 지역에 군대를 떨어 뜨리고 모두 채우면 다음 영역이 빛납니다
  • 채울 때 한 번에 채우면 피버 모드가되어 모든 영역이 대상이된다



  • 이런 느낌이군요.

    하나의 영역을 빛내는 경우는 해당 위치의 참조 타일 ID를 바꿨습니다.
    갈색 타일에서 노란색 타일로 바꾸는 이미지군요.

    단지 피버 모드로 모든 타일을 바꾸는 것은 무거울까 생각 (HHEM),
    팔레트의 색 데이터를 쓰면 좋을까 생각 "TIC-80 wiki"를 들여다 보면
    팔레트의 교환(이라기보다 컬러 인덱스의 참조처만 변경?)의
    함수가 소개되고 있는 것 같다.

    오 이것을 사용하면 일정 간격으로 팔레트 교체 ⇔ 실행 취소 할 수 있습니까?

    단지, 현재 빛나고 있는지 어떤가? 라는 플래그? (상태?)는 어떤 데이터에 가질 수 있습니까?
    타당하다. 지정색은 모두 바뀐다는 것은 필드가 아닌 것 같은‥.

    아, 색을 바꾼다고 하는 조작(함수)에 갖게 하면 좋을까, Lua는 그것이 편하게 할 수 있다,
    같은 소개를 읽은 기억이.

    그런 코드를 참조하면서 구현
    (ON-OFF 플래그의 것이 있는지 찾았습니다만, 조사 방법이 나빴던지
    카운터 샘플이 대부분이었습니다)

    palette_toggle.lua
    do
    SEA_COL=13
    LAND_COL=4
    SHINE_COL=14
    end
    -- common function from TIC-80 wiki
    function pal(c0,c1)
        if(c0==nil and c1==nil)then for i=0,15 do poke4(0x3FF0*2+i,i)end
        else poke4(0x3FF0*2+c0,c1)end
    end
    
    pal_toggle=function(offcol,oncol)
        local ofc,onc=offcol or LAND_COL,oncol or SHINE_COL
        local onflag=false
        local f
        f=function()
            onflag=not onflag
            if onflag then pal(ofc,onc)
            else pal() end
        end
        return f
    end
    
    function test()
        landshine=pal_toggle()
        seashine=pal_toggle(SEA_COL)
    end
    
    test()
    
    function TIC()
        map()
        if btnp(0,1,30) then landshine() end
        if btnp(1,1,30) then seashine() end
    end
    




    대체로 예상대로입니까.
    다만 pal() 이 전색 리셋이므로, 양쪽 ON시에 한쪽을 해제하면 다른 한쪽도 해제되네요.
    ‥‥, 괜찮습니까?
    (게임 중에는 landshine() 만 일정 간격으로 부른다)

    그러고 보면, 영역이 연결되어 있는지, 의 판정 함수를 재귀로 호출하는 것 같은 것을
    할 때 이미 확인했는지라는 정보를 기록 할 때도 함수에 갖게하는 것이
    자연스럽게 쓸 수 있을까?
    느끼는‥하지만 느끼는 것만으로 실장 방법은 모르기 때문에 앞으로의 과제로 합니다.

    좋은 웹페이지 즐겨찾기