티스토리 뷰
자 테트리스를 어떻게 짤지 고민을 좀 해보셨나요
필자는 낙하하는 블럭을 따로 관리하기로 했습니다
이것도 여러가지 방법이 있는데요, (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 |