티스토리 뷰

Game with Python

테트리스 제작 - (3)

Conkara 2017. 6. 26. 15:12

자 테트리스를 어떻게 짤지 고민을 좀 해보셨나요



필자는 낙하하는 블럭을 따로 관리하기로 했습니다



이것도 여러가지 방법이 있는데요, (x,y) 의 배열을 네개 생성해서 이것이 낙하한다고 봐도 되구요


필자는 메모리를 마구마구 쓰고싶어서.... 



이런식으로 블럭 셋을 정의했습니다


저걸 4*4 행렬이라고 생각하고 나열해보죠

2는 막대기 입니다



2, 2, 2,2     2,0,0,0   2,2,2,2    2,0,0,0

0,0,0,0     2,0,0,0,  0,0,0,0   2,0,0,0

0,0,0,0     2,0,0,0,  0,0,0,0   2,0,0,0

0,0,0,0     2,0,0,0,  0,0,0,0   2,0,0,0



의 모양이 됩니다


별로 안어렵죠? 저걸 그냥 일렬로 풀어놓은것에 불과해요.


이렇게 만들고 보니까. 아 블럭은 또 다른 객체 아니에요? 라고 하실 수 있습니다


네 그래서 블럭은 따로 클래스를 만들기로 했습니다.






x_position 과 y_position 은 블럭의 1,1 이 현재 어떤 위치에 있는가 나타내는 변수입니다. 실제로 이동하게 된다면 저 숫자도 증감 시켜주어야겠죠.



저 blockSet 변수에는 모든 블럭의 경우의 수가 들어있습니다. blockSet[블럭의 종류][현재 회전방향]


이 들어가게 되요. 이렇게 사용하게 되면 됩니다. 나머지 변수들의 의미도 이해하시겠지요?



자 초기화 구문을 썼는데요


숫자를 0부터 6까지 하나의 숫자를 랜덤하게 가져다 줍니다. 사실 문제가 있어요 이렇게 하면... 그 부분은 나중에 다루도록 하겠습니다.


생성한 블럭을 자신 클래스의 block 변수에 넣어주는것으로 초기화는 끝나게 됩니다.




 

마지막으로 block 객체는 여러가지 함수들을 가지고 있습니다


나머지는 보면 그냥 이해하실텐데 temp_rotate_block 은 무엇인가...? 라고 생각하실 수 있습니다.



이게 블럭의 다음 상태를 알아야 블럭이 이동할 지 안할 지 판단 할 수 있는데 rotate 를 쓰자니 rotate 는 실제로 회전을 시켜서 애매하더라구요


그래서 임시 블럭을 반환해서 그 블럭이 부딫히는지 안부딫히는지 검사하기 위함으로 만들었습니다.


나머지 부분은 그냥 보고 이해하시겠지요?



다음 포스팅에서는 게임 본체를 만들고 작동하도록 만들어보겠습니다.

'Game with Python' 카테고리의 다른 글

테트리스 제작 - (5)  (0) 2017.06.28
테트리스 제작 - (4)  (0) 2017.06.27
테트리스 제작 - (2)  (0) 2017.06.26
테트리스 제작 - (1)  (0) 2017.06.26
16퍼즐 제작 - (9)  (1) 2017.06.18
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함