[테트리스1] 개요, 설계, 화면구성
안녕하세요. 컴퓨터 못하는 컴퓨터공학생입니다.
델파이를 사용하여 테트리스 게임을 만들어보려 합니다.
첫 번째로 화면 구성 및 설계를 하려 합니다.
아래 플로우차트와 같이 테트리스의 전체적인 흐름이 흘러갑니다.
미리 설계를 해놓고 코드를 짜게되면 수월하게 코드를 짤 수 있습니다.
두 번째로 화면을 구성해보려 합니다.
아래 그림과 같이 게임 진행화면, 다음블럭표시 화면, 점수 표시화면으로 크게 3가지로 나누려 합니다.
세 번째로 테트리스 진행 화면에서 배경을 그려보려 합니다.
배경의 크기는 벽을 포함해서 가로 12, 세로 22인 직사각형으로 합니다.
그리고 벽의 색은 하늘색으로 설정합니다.
이 벽돌을 board라는 3차원 배열로 선언하겠습니다.
1 | board : array[0..11, 0..21, 0..1] of integer; // 0..2 0은 색 index, 1은 쌓여있는지 여부 | cs |
여기서 0..11은 총 12길이의 가로길이,
0..21은 총 22길이의 세로길이,
0..1은 첫 번째 [0]은 색깔 index, [1]은 블록 쌓여있는지 아닌지 여부를 나타냅니다.
board 3차원 배열을 다음과 같이 초기화 합니다.
끝 벽쪽은 2라는 임의값을 넣고 나머지는 0이라는 임의의 값을 넣습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | begin // 벽부분 board배열에 2넣기. for i := 0 to 11 do begin for j := 0 to 21 do begin if (j = 0) or (j = 21) or (i = 0) or (i = 11) then board[i][j][1] := 2 else begin board[i][j][0] := 0; board[i][j][1] := 0; end; end; end; end; | cs |
그리고 canvas를 이용하여 네모를 그립니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | for i := 0 to 11 do begin for j := 0 to 21 do begin if board[i][j][1] = 2 then BackColor := $E7D2A5 // 하늘색(BGR) else BackColor := clSilver; // 회색 MCanvas.brush.Color := BackColor; MCanvas.Pen.Style := psClear; MCanvas.Rectangle(i * cBrickSize, j * cBrickSize, (i+1) * cBrickSize, (j+1) * cBrickSize); end; end; | cs |
여기서 cBrickSize는 15입니다. 한변이 15인 정사각형을 그립니다.
왼쪽 위부터 오른쪽으로 가면서 정사각형을 그리고 다음줄로 내려와 다시 왼쪽부터 차례대로 정사각형을 그립니다.
다 그리면 다음 그림과 같이 테트리스 배경이 완성됩니다.
오늘은 여기까지 하겠습니다.
다음엔 블럭을 그리고 내려오는 기능에 대해 구현해보도록 하겠습니다.
감사합니다.
'IT > 프로젝트' 카테고리의 다른 글
[테트리스5] 테트리스 소스 (0) | 2016.11.02 |
---|---|
[테트리스4] 블럭 쌓기. 한줄 지우기 (0) | 2016.11.01 |
[테트리스3] 블럭 변경하기 (0) | 2016.11.01 |
[테트리스2] 블럭 그리기, 블럭 내리기 (0) | 2016.11.01 |