raylib:tetris:테트리스_개념_및_준비
테트리스 개념 및 준비
차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판이전 판다음 판 | 이전 판 | ||
raylib:tetris:테트리스_개념_및_준비 [2023/11/24 00:48] – 이거니맨 | raylib:tetris:테트리스_개념_및_준비 [2023/12/24 12:46] (현재) – Drawbackground 이거니맨 | ||
---|---|---|---|
줄 7: | 줄 7: | ||
- | ===== 기초 개념 | + | ===== 그리드 만들기 ===== |
- | ==== 1. 그리드 | + | ==== 1. 기초 개념 |
테트리스는 가로 20열, 세로 40행 혹은 어느 임의의 수든 간에 그 정도의 배열을 가지고 그 안에 블록들이 어떻게 있는지를 판단한 후, 블록들이 한 줄에 있으면 그 한 줄을 지우는 게임이다. | 테트리스는 가로 20열, 세로 40행 혹은 어느 임의의 수든 간에 그 정도의 배열을 가지고 그 안에 블록들이 어떻게 있는지를 판단한 후, 블록들이 한 줄에 있으면 그 한 줄을 지우는 게임이다. | ||
줄 20: | 줄 20: | ||
+ | ==== 2. 멤버 변수 선언하기 ==== | ||
+ | |||
+ | game.h에 다음과 같이 멤버변수를 선언하자. | ||
+ | |||
+ | grid에 사용될 행의 갯수와 열의 갯수, 그리고 셀의 사이즈를 정하는 것이다. | ||
+ | |||
+ | 그리고 컬러 값도 배열로 만들어서 숫자를 통하여 컬러 값을 정할 것이다. | ||
+ | |||
+ | <code raylib> | ||
+ | private: | ||
+ | void Draw(); | ||
+ | void Update(); | ||
+ | void DrawBackground(); | ||
+ | |||
+ | // 게임 패드 | ||
+ | int gamepad = 0; // 제일 처음에 꽂은 게임패드만 사용하도록 하자. 제일 처음이므로 0이다. | ||
+ | |||
+ | // 테트리스 설정 | ||
+ | int numCols; // 컬럼 갯수 | ||
+ | int numRows; | ||
+ | int paddingX; // 화면 x 패딩 | ||
+ | int paddingY; // 화면 y 패딩 | ||
+ | int cellSize; // 셀의 크기 | ||
+ | |||
+ | int backGrid[20][10]; | ||
+ | |||
+ | // Color Pallette | ||
+ | Color colors[5] = {BLACK, RAYWHITE, DARKGREEN, YELLOW, RED}; | ||
+ | </ | ||
+ | |||
+ | |||
+ | 가로 20 세로 10의 그리드 행렬에는 숫자값(int)을 저장한다. 이 숫자에 따라 해당 셀의 색상이 바뀌는 것이다. | ||
+ | |||
+ | 0은 블랙, 1은 흰색, 2는 어두운녹색, | ||
+ | |||
+ | ==== 3. game.cpp에 그리드 그려보기 ==== | ||
+ | |||
+ | 먼저 game 클래스가 생성될 때 각 값들을 초기화해야 한다. | ||
+ | |||
+ | === 가. Game:: | ||
+ | |||
+ | <code raylib> | ||
+ | Game:: | ||
+ | { | ||
+ | numCols = 10; | ||
+ | numRows = 20; | ||
+ | paddingX = 100; | ||
+ | paddingY = 100; | ||
+ | cellSize = 30; | ||
+ | |||
+ | for (int i = 0; i < 20; i++) | ||
+ | { | ||
+ | for (int j =0; j < 10; j++) | ||
+ | { | ||
+ | backGrid[i][j] = 0; | ||
+ | } | ||
+ | } | ||
+ | | ||
+ | backGrid[18][2] = 3; | ||
+ | backGrid[18][3] = 3; | ||
+ | backGrid[19][3] = 3; | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | |||
+ | 그리드 전체를 0으로 하여 검은색으로 덮되, 맨 아래쪽 몇개는 노랑색이 나오게 해보았다. | ||
+ | |||
+ | |||
+ | === 나. Draw메서드 === | ||
+ | |||
+ | 따로 DrawBackground()함수를 호출하게 한 후에, 그 DrawBackground()함수를 다음과 같이 만들었다. | ||
+ | |||
+ | <code raylib> | ||
+ | void Game:: | ||
+ | { | ||
+ | ClearBackground(DARKBLUE); | ||
+ | |||
+ | |||
+ | for (int row = 0; row < numRows; row++) | ||
+ | { | ||
+ | for (int column = 0; column < numCols; column++) | ||
+ | { | ||
+ | int cellValue = backGrid[row][column]; | ||
+ | DrawRectangle(paddingX + column * cellSize, paddingY + row*cellSize, | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </ | ||
raylib/tetris/테트리스_개념_및_준비.1700754518.txt.gz · 마지막으로 수정됨: 2023/11/24 00:48 저자 이거니맨