Pyxel의 애니메이션 예약 관리를 위해 편리한 반을 만들었다
개시하다
이 글은 SFC Advent Calendar 2020 첫날의 글이다.
처음 뵙겠습니다. SFC 부가 달력 2020을 만드는 환경 1년차우랄입니다.있는 줄도 모르고2019년 버전 2020을 만들었어요.작년에는 상당히 떠들썩했던 것 같았지만 올해는 수업 일수도 빡빡해서 어쩔 수 없었다.자기도 그날 4시 반에 이걸 썼어요.
그렇다면 SFC에는 정보기초2라는 과목이 있는데, 2020년에는 현재 파이톤의 프로그램 라이브러리'Pyxel'를 이용해 게임 제작을 하고 있으며, 이런 수업이 진행된다.
▲ Pyxel의 README이상
Pyxel은 레트로 게임을 만들기 쉬운 Python용 프로그램 라이브러리다.쓰기pyxel.run(update, draw)
를 하면 프레임이 업데이트될 때 사용자 정의 함수'update()'가 그릴 때'draw()'라는 사용자 정의 함수를 실행합니다.업데이트와 드로잉이 다르기 때문에 드로잉이 지연되더라도 프레임 업데이트는 시간에 따라 수행됩니다.
이런 Pyxel은 그림에도 편리한 함수 등을 갖추어 점, 직선, 원, 직사각형, 삼각형 등을 그릴 수 있는 것 외에 이미지 은행에서 점화를 꺼내 사용하거나 음악을 만들어 울릴 수 있다.유색수 제한 때문에 SFC(슈퍼홈 전자계산기)와 차이가 별로 없다고 할 수는 없지만, 홈컴퓨터보다 더 풍부하고 자유롭게 표현할 수 있다.
하지만 그릴 때까지 파이톤이 조합되어 있기 때문에 복잡하면 구성 프로그램이 어려워진다.특히 어려운 것은 애니메이션이어서 관리할 시간이 필요하다.몇 프레임 뒤에 ○○을 만들려면 매번 카운터 변수를 준비해 시간을 측정해야 한다. 또'버튼 누를 때 홀수 번 누르면 10초 뒤에 비가 오고, 짝수 번 누르면 15초 뒤에 눈이 온다'는 복잡한 행사 예약이 있는 경우연타하면 불규칙한 예약이 많다는 점을 고려하면 매우 어려운 절차를 써야 한다.
그래서 (원래는 자기가 쓰던)'부커'라는 학급을 만들었기 때문에 공개적으로 다른 사람도 쓸 수 있었다.부커는 예약된 동사 북에 er를 붙인 물건이다.
부커 클래스
Pyxel에는 예약 관리 활동을 간편하게 할 수 있는 자체 제작반이 공개됐다.미래치 변화를 예약하거나 4가지 수치 변화 방법 중 선택할 수 있다.복잡한 애니메이션을 하고 싶은 사람에게 추천https://t.co/KiWPf88SsV-우랄(@barley ural)pic.twitter.com/XADI7xDl4J
Pyxel에는 예약 관리 활동을 간편하게 할 수 있는 자체 제작반이 공개됐다.미래치 변화를 예약하거나 4가지 수치 변화 방법 중 선택할 수 있다.복잡한 애니메이션을 하고 싶은 사람에게 추천https://t.co/KiWPf88SsV-우랄(@barley ural)pic.twitter.com/XADI7xDl4J
자세한 사용 방법은 https://github.com/namosuke/pyxel_class_booker
여기에 포함된 클라스 부커가 해당 레벨인 README의 코드가 공개됐다.복사 사용br/>
book_example.py를 실행한 후 다음과 같다br/>
booker_example.py
엔화 4개가 일정 시간 이동하는 거 아세요?사실 Pyxel도 이런 규칙적인 동작을 잘하지 못한다.저장 상태의 변수를 하나씩 만들어야 하기 때문에 (프레임 수 등을 거쳐) 각각 증가합니다.br/>
부커 클래스에는 이러한 변수가 필요하지 않습니다.이 예시의 연속 재생 중
self.flag = 0
Booker.add(self, 'flag', 1, 80, 1)
에서 보듯이 80 프레임 지시 후 표지 1개 추가br/>
세 번째 파라미터는 증가할 수량을 표시하고 네 번째 파라미터가 몇 프레임 뒤에 있고 다섯 번째 파라미터는 몇 프레임의 변천을 거쳐야 한다는 것을 나타낸다.이게 훨씬 편해요.br/>
대량의 변수 가산을 프레임 수로 처리하는 데 필요하지 않습니까?필요 없습니다.
업데이트()의 마지막 한 번Booker.do()
만 쓰면 Booker.add()
의 모든 예약을 정확하게 관리할 수 있습니다.p>
네 개의 원이 각각 다른 이동 방법을 가지고 있다."이를""Eding""이라고 하는데, 수치의 변화 방식이 다르다."br/>
지정된 시간 동안 지정된 값까지 반드시 증가한 것은linear
, 일정한 가속된 것은ease in
, 일정한 감속된 것은ease out
, 앞부분은 ease in, 뒷부분은 ease outease in out
br/>
출구는
Booker.add(self, 'ball2', 160, 10, 60, 'ease in')
에서 보듯이 여섯 번째 변수에 문자열로 지정합니다.linear는 기본값입니다.
실제로 Pyxel은 일정 속도를 늦추려면 매우 번거로운 절차가 필요하다.직선이동에 지친 분들은 활용해보세요.br/>
이외에도 소스 추가 옵션을 참고해 맞춤형으로 만드는 방법도 있다.의 33~48줄은 수출 처리 부분이다p>
참, 방금 GIF 이미지가 조금 있으면 마우스가 나올 거예요. 핑크색 원이 마우스를 쫓고 있는 거 알아요?여기 있습니다
self.x = self.y = 0
Booker.add(self, 'x', pyxel.mouse_x, 5, 1)
Booker.add(self, 'y', pyxel.mouse_y, 5, 1)
이 코드로 5 프레임 후self.x
와 self.y
에 마우스 좌표를 반영합니다.(변환은 0이 아닌 프레임으로 지정되지만 0을 지정하면 제거 오류가 발생합니다. 삼라만상은 0초로 이동할 수 없습니다.)
마우스의 움직임을 이렇게 뒤에서 쫓아다니면서 보통 조립을 하려면 상상하기 힘들죠.부커 클래스를 사용하면 3줄만 있으면 가능합니다.나는 연기도 괜찮다고 생각한다.
미래 값의 변화라는 점에서 Booker 레벨은 애니메이션에서 이벤트에 이르기까지 사용 범위가 넓다는 것을 고려할 수 있다br/>
고생해서 하는 거니까 꼭 써주시면 감사하겠습니다.궁금한 점이 있으면 여기 댓글이나 트위터로 올려주세요.기능이 부족하면 스스로 처리할 수 있지만 답장을 보내면 내용에 따라 기능이 추가될 수 있다p>
namosuke/pyxel_class_booker
booker_example.py
끝까지 읽어주셔서 감사합니다
Reference
이 문제에 관하여(Pyxel의 애니메이션 예약 관리를 위해 편리한 반을 만들었다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/namosuke/items/f5f48ef3ef0287f08b22텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)