본문 바로가기
코드

테트리스

by ehei 2006. 2. 13.

그 동안 공부한 것을 테스트해보기 위해 급히 만든 테트리스. 현재는 도스 용이다.

 

네트워크 모듈도 붙일 예정(이건 동훈이가 함)인데, 혼자하는 것보다 생각해야할 것들이 많다. 이래저래 많다. 코드가 조금 긴데, 나름대로 확장성(임의 개수의 블록, 임의 크기의 게임 판, 임의의 플레이어 수)을 생각하느냐 그런 듯 싶다. 별 기능도 없는데 코드가 길어져서 웬지 무안하다. 

 

1140500996_0.19i.zip

// 싱글, 멀티 플랫폼 분리. 자동 블록 떨어지기 추가. 완전 메시지 방식


1140004753_0.18.zip

// for network play test


 

그건 그렇고 메모리 누수는 없는지 걱정된다. 처음에 웬일인지 프로그램이 종료되기 위해 5초 이상 걸리는 일도 있어서(지금은 코드를 엎어서 다행히 해방), 가능한 메모리 관리를 적게 할 수 있는 STL을 적극 사용했다. 최적화도 해야 하나 일단 그래픽 라이브러리로 이걸 래핑하는 것이 더 급하다.

 

네트워크를 위해 필요한 메시지의 구조체는 다음과 같다.

 

struct Message

{

enum Message _message ;

int playerId ;

int blockId ; // 새로운 블록이 등장 시 어떤 것인지 확인

}

 

시작 시, 상대의 playId를 수신하여 초기화한다. 이후, 해당 playId의 메시지가 들어오면 버퍼에 쌓았다가 사용자 입력이 없으면 처리한다.

 

아래는 스크린샷: 눈에 안 띠는데 잘 보면 블록 모양이다... 2인 플레이 상태.



'코드' 카테고리의 다른 글

행렬 곱셈 계산기  (0) 2006.03.10
C++를 이용한 게임 상태 관리  (0) 2006.02.21
ACM 10050, Hartals  (0) 2006.01.26
ACM 105, The Skyline Problem  (0) 2006.01.24
ACM 10315, Poker Hands  (0) 2006.01.20