본문 바로가기

Development/Tetris

(17)
Python - 테트리스(Tetris) 만들기 (7) - Drop Timer 이전 시간에는 mino를 경계선 안에서 자유자재로 움직일 수 있도록 했습니다. 하지만 다음 블럭이 나오는 일은 없었죠. 이번 글에서는, 블럭이 놓이는 조건을 작성하고, 블럭이 놓인 후 다음 블럭이 나올 수 있도록 해보겠습니다. 블럭이 놓이는 조건이 뭘까요? 문서를 찾아보니 Lock Delay라는 문서가 있습니다. 미노가 놓인다고 바로 멈추는 것이 아니라, 적절한 시간이 지나는 동안에도 움직임이 없으면 (보통은 0.5초) 멈춥니다. 이 동작을 만들기 위해서는 타이머를 동작시킬 조건 (더 이상 밑으로 내려가지 못함) 타이머가 필요 (0.5초를 재야 함) 타이머가 0.5초동안 움직인 후 다음 블럭 생성 위 3동작이 있어야 할 것입니다. 바로 작성해 봅시다. 1. 더 이상 밑으로 내려가지 못하는 조건 생성 먼저..
Python - 테트리스(Tetris) 만들기 (6) - Tetriminos 지난 시간에는 키보드에 따라 한 칸씩 움직이는 사각형을 만들었습니다. 이번에는 그 사각형을 Tetriminos(이하 미노라 하겠습니다)로 만들어보겠습니다. 오랜만에 공식 문서 https://tetris.fandom.com/wiki/Tetromino를 확인해 보겠습니다. 미노는 총 7가지가 있습니다. 이 미노를 어떻게 python에서 작성할 수 있을까요? 우선 간단하게 미노를 눈으로 보니 7개의 미노가 존재합니다. I, O, T, S, Z, J, L로 각각 이름이 있으며 모양과 색깔도 있습니다. 이 정보를 가지고 class로 작성해 보았습니다. Mino를 Class로 작성. name에는 string을 작성, blocks에는 x, y가 들어갈 좌표 list를 작성, rgb 숫자를 저장할 tuple를 작성합니..
Python - 테트리스(Tetris) 만들기 (5) - Event Event Handling Event란 무엇일까요? 다양한 뜻이 있지만, 보통은 사건 발생을 의미하며, 게임에서는 사용자의 입력을 의미하기도 합니다. 이런 Event 처리를 Event Handling이라 합니다. pygame에서는 어떤 식으로 event handling을 할지 살펴봅시다. def _event(self): for event in pg.event.get(): if event.type == pg.QUIT: ## Window 상단 X버튼 self._running = False 이전에 봤던 함수죠? pg.QUIT가 없으면 종료조차 못하는 pygame을 확인했던 그 함수입니다. 이 pg.event.get()을 통해, 움직이는 물체를 만들어 보겠습니다. 움직이는 물체를 만들기 위해선 다음과 같은 동작..
Python - 테트리스(Tetris) 만들기 (4) - Draw Rect 이전 글에서는, Tetris를 구동하기 위한 코드 초안을 작성했습니다. import pygame as pg class Tetris: def __init__(self, width: int, height: int): self._size = self.width, self.height = width, height self._display_surf = None self._running = False def _init(self): pg.init() self._display_surf = pg.display.set_mode(self._size) self._running = True def _event(self): for event in pg.event.get(): if event.type == pg.QUIT: ## W..
Python - 테트리스(Tetris) 만들기 (3) - Pygame Library Library 설치 우선 python을 화면에 띄우기 위해서는, library가 있어야 합니다. GUI모듈을 만드는 것은 매우 어려운 일이기 때문에...누군가 잘 만든 Tool, Library, Framework가 있다면 사용해야죠. 빌딩을 크레인 없이 삽질로만 만들 수는 없지 않겠습니까? 저는 GUI Tool로 Pygame을 선택했습니다. Library를 설치해 봅시다. pip install pygame 그러면 설치가 완료됩니다. Library 사용법 확인 pygame까지 설치한 것은 좋았는데, 이제 어떻게 할까요? 새로운 library를 봤으면 유튜브나, 구글 문서를 확인해 보는 것도 좋지만, 공식 Site에서 보여주는 Tutorial을 참조하는 것도 좋은 습관입니다. 여기서 Tutorials에 들어..
Python - 테트리스(Tetris) 만들기 (2) - 환경 설정 프로그래밍을 하기위한 환경 설정은 매우 중요합니다. python을 돌아갈 수 있는 환경을 만들기 위해, vscode를 설치 하도록 합시다. vscode python 환경설정 그리고 Tetris라는 폴더를 새로 만들었습니다. Terminal을 엽니다. 단축키는 ctrl + `(1 옆에 있는 물결 키) 입니다. vscode 설치가 완료되었습니다. 혹시 python이 설치 안되신 분들은 python도 설치하도록 합시다. python 설치 방법 저는 가상환경을 만들어서 작업을 하려 합니다. 아래와 같은 명령어를 입력하도록 합시다. python -m venv .venv 그러면 다음과 같은 폴더가 생성될 것입니다. 이 폴더 안에, python 가상환경이 설치된 것입니다. 가상환경을 활성화 합시다. (윈도우 기준) ..
Python - 테트리스(Tetris) 만들기 (1) - Intro Intro(소개) 테트리스란, 블럭 4개로 이루어진 도형(Mino)를 필드에 쌓아, 줄을 지워나가는 게임입니다. 간단한 규칙에 비해, 다양한 기술들(예 : T-spin)이 있어 인기가 많은 게임입니다. 이 게임을 Python으로 구현하고자 합니다. Purpose(목적) 이 블로그에서 python으로 테트리스를 만드는 목적이 무엇일까요? 이해하기 쉬운 게임을 통해 프로그래밍의 기본적인 흐름을 보여주는 것이 주된 목적입니다. 구현을 아래 6단계로 나눠서 진행합니다. 1단계. 요구사항 문서 분석 2단계. 요구사항에 따른 언어 선택 3단계. 요구사항의 기능을 상세 분석, 구현 4단계. 기능 Test 5단계. Bug fix, 기능 확장(구현 단계인 3으로 돌아감) 6단계. 완성 보통사람들은 막연한 요구사항을 머릿..