pyxel로 클릭 게임 만들기

16333 단어 Python3Pyxel
pyxel은 psyhon3에서 복고 게임을 간단하게 제작할 수 있는 게임 엔진이다.
readme의 샘플을 수정하는 형식으로 클릭 게임을 제작했습니다.

install


linux 버전이 개발 중이기 때문에 Mac에 설치되었습니다
brew install python3 glfw
pip3 install pyxel
샘플을 설치하여 테스트할 수도 있다
cd ~/src
install_pyxel_examples

cd pyxel_examples
python3 01_hello_pyxel.py

base


처음에는 정사각형만 옆으로 움직였다.
  • init 초기화 및 응용 실행
  • 업데이트 상태의 업데이트(좌표x의 업데이트)
  • draw 정사각형 그리기
  • import pyxel
    
    class App:
        def __init__(self):
            pyxel.init(160, 120)
            self.x = 0
            pyxel.run(self.update, self.draw)
    
        def update(self):
            self.x = (self.x + 1) % pyxel.width
    
        def draw(self):
            pyxel.cls(0)
            pyxel.rect(self.x, 0, self.x + 7, 7, 9)
    
    App()
    

    만들어진 물건


    이동할 색상, 크기가 다른 정사각형을 클릭하여 삭제하는 게임


    QuickTimePlayer+Gifted로 gif를 만들었는데 종횡비는 이상해졌어요 orz.

    code

    import pyxel
    import random
    
    SQUARE_INITIAL_COUNT = 10
    SCREEN_WIDTH = 120
    SCREEN_HEIGHT = 160
    
    class Square:
        def __init__(self):
            self.size = random.randint(8, 16)
            self.x = random.randint(0, SCREEN_WIDTH)
            self.y = random.randint(0, SCREEN_HEIGHT)
            self.x2 = self.x + self.size
            self.y2 = self.y + self.size
            self.color = random.randint(1,15)
            self.is_alive = True
    
    
        def update(self):
            self.x = (self.x + 0.5) % SCREEN_WIDTH
            self.y = (self.y + 0.5) % SCREEN_HEIGHT
            if self.y2 >= SCREEN_HEIGHT -10:
                self.y = 0
            self.x2 = self.x + self.size
            self.y2 = self.y + self.size
    
            if self.clicked() == True:
                self.remove()
    
    
        def clicked(self):
            if pyxel.mouse_x < self.x or pyxel.mouse_x > self.x2:
                return False
    
            if pyxel.mouse_y < self.y or pyxel.mouse_y > self.y2:
                return False
    
            return True
    
    
        def remove(self):
            if pyxel.btnp(pyxel.MOUSE_LEFT_BUTTON):
                self.is_alive = False
    
    
        def colorChange(self):
            if pyxel.btnp(pyxel.MOUSE_LEFT_BUTTON):
                self.color = random.randint(1,15)
    
    
    class App:
        def __init__(self):
            pyxel.init(SCREEN_WIDTH, SCREEN_HEIGHT)
            pyxel.mouse(True)
            self.squares = [Square() for _ in range(SQUARE_INITIAL_COUNT)]
            pyxel.run(self.update, self.draw)
    
    
        def update(self):
            if pyxel.btnp(pyxel.KEY_Q):
                pyxel.quit()
    
            for index, square in enumerate(self.squares):
                square.update()
                if not square.is_alive:
                    del self.squares[index]
    
    
        def draw(self):
            pyxel.cls(0)
            for square in self.squares:
                pyxel.rectb(square.x, square.y, square.x2, square.y2, square.color)
    
            # text表示 todo: 関数にしたい
            color = 3
            if len(self.squares) == 0:
                text = "Clear!"
                color = pyxel.frame_count % 15 + 1
            else:
                text = "counter: " + str(len(self.squares))
            return pyxel.text(0, SCREEN_HEIGHT -7, text, color)
    
    
    App()
    
    
    kitao/pyxel - GitHub

    좋은 웹페이지 즐겨찾기