Tag: <span>C# 소스</span>

프로젝트 다운로드

 안녕하세요. 언휴예요.

 이번 강의는 “[언제나 프로젝트] 테트리스 Part2″입니다.

 현재 작업한 내용은 다음과 같습니다.

  •  게임 공간 정의
  • 키보드로 도형 이동(좌, 우, 아래)
  • 타이머로 도형 내리기

 이번 강의에서 다룰 내용은 다음과 같습니다.

  • 테트리스 도형 모양 정의
  • 회전

테트리스 도형 모양 정의

  •  테트리스 벽돌은 모두 7가지 입니다. 
  •  테트리스 벽돌은 90도로 회전하여 4가지 형태로 모양이 변할 수 있습니다.
  •  테트리스 벽돌은 4X4 공간에 총 4개의 돌이 공간을 차지합니다.

 테트리스 벽돌 모양은 모두 7가지 종류로 변하는 값이 아닙니다. 이를 읽기 전용으로 정의할 거예요. 그리고 벽돌 모양 정의는 별도의 형식에서 정의할게요. 이는 개체를 만들기 위함이 아니라 벽돌 모양 정의만 담당합니다. 이러한 용도로 형식을 정의할 때 정적 클래스로 정의하는 것을 권합니다.

 먼저 테스트를 위해 한 가지 벽돌을 먼저 정의한 후에 맨 마지막에 7가지 벽돌을 정의합시다.

벽돌 형식 수정

 벽돌 형식에는 현재 어떤 모양의 벽돌인지 정보가 필요합니다. 그리고 여러 개의 벽돌 모양과 회전을 추가 구현할 것입니다. 따라서 벽돌 형식에는 현재 회전 정도를 기억하는 멤버를 요구합니다.

 도형 상태를 초기 상태로 만드는 Reset메서드에 회전 값을 랜덤으로 지정하는 코드와 도형 모양을 선택하는 코드를 작성합니다. 

현재 도형 모양은 1개만 정의하였습니다. 이에 맞게 정의하고 7개 모두 정의한 후에 수정하세요.

 회전을 위한 메서드를 정의합니다. 나머지 연산을 이용하면 원하는 범위 값에서 회전할 수 있어요.

 현재까지 작성한 벽돌 모양을 정의한 소스 코드입니다.

Game 형식 수정

  현재 벽돌의 종류와 회전 정도를 알 수 있게 속성을 정의합니다.

 회전에 관한 기능을 정의합니다. 앞에서 작성했던 MoveLeft, MoveRight, MoveTurn을 참고하세요.

 벽돌이 아래로 이동할 때 더 이상 이동하지 못하면 벽돌의 상태를 초기 상태로 설정합니다. 이 때 필요한 메서드를 제공합시다.

 현재까지 작성한 Game.cs 소스 코드입니다.

폼 수정

 이전 강의에서는 사각형 하나를 그렸습니다. 이제 벽돌 모양을 4X4 형태로 정의하였으니 이에 맞게 수정합시다.  현재 벽돌 모양 값과 회전 값도 얻어와야 현재 벽돌 값을 표현할 수 있어요.

 비어있었던 “회전(MoveTurn)” 기능을 구현하세요. 단지 회전을 시도한 후에 성공했으면 다시 그려줄 영역을 얻어와서 무효화 시키는 일입니다.

 MoveDown 메서드에서 이동하지 못하였을 때 벽돌의 상태를 다음으로 설정하는 코드를 추가합니다.

 회전할 때 다시 그려야 할 영역을 계산하는 알고리즘은 다른 이동과 약간의 차이가 있습니다. 좌표 변경 없이 도형 모양이 바뀌는 것이니 이를 고려하여 작성하세요. 이미 앞에서 작성한 메서드를 참고하세요.

 현재까지 작성한 Form1.cs 소스 코드입니다.