python으로 게임 만들기/테트리스

[테트리스] 7. 게임 필드 표현하기

bay07 2024. 2. 22. 22:38

 

▶ 미션  _ 완성해야 할 함수 

1. FIELD = []  

pygame.draw.rect  

array.insert(i,x)  

2. set_game_field()  

3. draw_game_field()  

 

책의 가이드를 따라, 하나씩 미션을 수행해봅시다. set_game_field()에서 전체적인 맵 값을 입력하고, draw_game_field()에서 입력한 필드값을 출력해보겠습니다. 


 

1. FIELD = []

우선, 일단 정보가 없어서 좀 막막하긴 한데... 일단은 pygame 라이브러리 설명서 좀 읽어보기로 했다. 여기서는 pygame.draw.rect를 사용한다고 하니 한번 찾아보자.

 

pygame.draw.rect

https://www.pygame.org/docs/ref/draw.html#pygame.draw.rect

 

 대충 설명을 읽어보니, rect는 직사각형을 만드는 함수라고 한다.

rect(surface, color, rect)

안에 매개변수가 3개 들어가는데, parameter값이 surface, color, rect 이렇게 3개이다.

surface는 내가 그림을 그릴 배경이 되는 공간이고, color는 색인데 아마 RGB 3개를 튜플로 받나보다.

rect는 우리가 그릴 직사각형이고, 위치와 차원에 대해서 나타내고 있다. 

 

 

 

깃허브에서 사용예시를 보는데, 아래 2가지가 직관적이어서 가장 이해하기 쉬웠다. 근데 surface랑 color는 이해가 되는데 (color를 그냥 튜플로 안하고 BLACK이라는 단어로 써도 되나보네.) rect는 아직 와닿지가 않아서 몇 개 써보면서 익혀봐야겠다. 

https://github.com/search?q=pygame.draw.rect+language%3APython&type=Code&l=Python

더보기
    def draw_wkey(self, k, c):
        "Draw white key"
        # 코드를 보니까 앞에 BLACK = (0,0,0) 이라고 정의되어 있었땅
        pygame.draw.rect(self.win, BLACK, (100 * k, 0, 100, H))
        pygame.draw.rect(self.win, c, (int(100 * k + LW / 2), LW, 100 - LW, H - 2 * LW))
    def draw_bkey(self, k, c):

더보기
		pygame.draw.rect(ThisSurface, self.ColourFill, (xOffset + self.xPos, yOffset + self.yPos, self.xLen, self.yLen), 0)
			pygame.draw.rect(ThisSurface, self.ColourBorder, (xOffset + self.xPos, yOffset + self.yPos, self.xLen, self.yLen), 1)

 

 

array.insert(i, x) 함수 

원하는 위치의 인덱스 값인 i 앞에 추가할 값 x를 삽입할 수 있다. 만약 음수를 입력한다면 배열의 끝을 기준으로 처리된다. 

# 0번째 인덱스에 값'A'추가
lst = [0,1,2,3]
lst.insert(0,'A')
print(lst)

# 0번째 인덱스에 값['A','B','C','D','E']추가
lst = [0,1,2,3]
lst.insert(0,['A','B','C','D','E'])
print(lst)

 


2. set_game_field()

 

 

 

 


3. draw_game_field()