티스토리 뷰

Game with Python

테트리스 제작 - (6)

Conkara 2017. 7. 1. 15:11

네 돌아온 테트리스 제작입니다.






위와 같은 코드로 게임을 초기화 하고 판을 초기화 합시다.


위의 코드에 대한 설명은 딱히 필요 없을 것 같습니다. 그냥 초기화, 제목 변경, 이미지 로드, 시계 생성 밖에 없으니까요






네 별로 어렵지 않은 코드입니다.


게임오버가 되지 않은선에서 계속해서 루프를 실행합니다.


종료 처리가 들어오면 종료하라...


각 키에 따른 처리인데, 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
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2026/02   »
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
글 보관함