티스토리 뷰
네 돌아온 테트리스 제작입니다.
위와 같은 코드로 게임을 초기화 하고 판을 초기화 합시다.
위의 코드에 대한 설명은 딱히 필요 없을 것 같습니다. 그냥 초기화, 제목 변경, 이미지 로드, 시계 생성 밖에 없으니까요
네 별로 어렵지 않은 코드입니다.
게임오버가 되지 않은선에서 계속해서 루프를 실행합니다.
종료 처리가 들어오면 종료하라...
각 키에 따른 처리인데, x_position 과 y_position 을 1빼고 1더하고 하는 식으로 위치를 조정합니다.
이때 spacebar 의 처리가 독특한데 조금만 생각해보면 쉽게 알 수 있습니다.
한칸 내렸을때 블럭이 충돌하지 않는다면 한칸 내리고, 또 충돌하지 않는다면 한칸 내리고, 또 충돌하지 않는다면 한칸 내리고....
하면서 충돌할때 그만하고 그곳에 블럭을 고정하라 입니다.
네 테트리스 용어로 이것을 하드드롭 이라고 합니다. 아래 방향키를 눌러서 내리는것을 소프트 드롭 이라고 하죠.
곁두리 이야기였습니다.
여기까지 이제 블럭의 이동처리를 완료하였습니다. 마지막으로 화면 갱신코드를 작성해서 넣어볼까요?
이 코드도 당연히 while 문 안에 들어가야합니다.
네 여기까지 하면 이제 게임은 실행이 됩니다.
딱 블럭이 움직이고 하드드랍 되는 것까지는 될텐데요.
뭔가 많이 부족합니다. 뭐가 부족할까요???
네 테트리스는 시간이 지나면 블럭이 떨어집니다. 지금 그게 없어요.
그 부분까지 구현하고 나서 다음 포스트로 넘어갑시다
우선 while 문 바깥에 변수를 하나 생성합시다.
이름은 temp_FPS 정도로 하겠습니다. 초기값은 0
다음과 같은 코드를 실행시킵니다. while 루프 한번에 Temp_FPS 가 1씩올라가고
만약 30이 넘는다면 Temp_FPS를 0으로 만듦과 동시에 블럭이 충돌하지 않는다면 한칸 내립니다.
이 코드를 넣으면 이제 블럭이 시간이 지남에 따라 내려 갈 것입니다.
아직도 부족한게 있죠
스페이스바를 누르지 않고 가만히 있으면 블럭이 영원히 고정되지 않습니다.
그부분도 고쳐보죠
또 while문 밖에 변수를 하나 지정하고
이름은 Fix_temp_FPS 정도로 하겠습니다
초기값은 0
만약에 충돌하고 있다면 Fix_temp_FPS를 증가시켜서 일정수가 된다면 고정, 충돌이 풀린다면 Fix_temp_FPS 를 0으로 다시 만들어 주면 됩니다
네 다음과 같은 코드가 되겠네요. 이제 블럭은 떨어져서 일정시간동안 충돌하고 있으면 고정되어버립니다.
이로써 게임으로써 작동하는 기능은 모두 갖추어졌습니다. 몇번 플레이 해보시면서 불편한점이 있으시면 다 기억해놓으셔요
불편함을 깨달아야 편하게 만들 수 있잖아요 ㅎㅎ 다음 시간에 뵙겠습니다.
'Game with Python' 카테고리의 다른 글
| 테트리스 만들기는 여기서 종료하도록 하겠습니다. (0) | 2017.10.08 |
|---|---|
| 테트리스 제작 - (7) (0) | 2017.07.07 |
| 테트리스 제작 - (5) (0) | 2017.06.28 |
| 테트리스 제작 - (4) (0) | 2017.06.27 |
| 테트리스 제작 - (3) (0) | 2017.06.26 |
