===== 시작하기 =====
테트리스 만들기를 시작하려고 한다.
아예 스크래치 상태부터 만들려고 한다.
따라서 아주 간단한 상태부터 시작할 예정이다. 조금씩 만들어 보자
===== 시작 파일 =====
==== 1. main.cpp ====
윈도우 창에 텍스트만 나오게 하는 간단한 Hello world 파일을 시작파일로 하자
Raylib에서 윈도우 창을 만들고 드로잉을 하는 간단한 보일러플레이트는 다음과 같다. 이를 시작파일로 할 것이다.
#include "raylib.h"
/* This is created by Dongkun Lee. Korean Attorney at Law.
First Created at 12/28/2025
*/
/* -------------------------------------------------------------
// Program main entry point
--------------------------------------------------------------- */
int main(void)
{
// Initialization
const int screenWidth = 500;
const int screenHeight = 600; // Cell Size is 30px. and There are 20 grid horizontally.
InitWindow(screenWidth, screenHeight, "Tetris - Hello!");
Image icon = LoadImage("icon/seodang.png");
SetWindowIcon(icon);
SetTargetFPS(60);
// Main game loop
while (WindowShouldClose() == false) // Detect window close button or ESC key
{
// Draw
//----------------------------------------
BeginDrawing();
ClearBackground(RAYWHITE);
DrawText("Hello There", 190, 200, 20, MAROON);
EndDrawing();
//---------------------------------------
}
// De-Initialization
CloseWindow(); // Close window and OpenGL context
//--------------------------------------------------------------------------------------
return 0;
}
==== 2. Makefile ====
Makefile은 다음과 같이 만들었다.
#Project Name
PROJECT ?= tetris
# Define required raylib variables
RAYLIB_PATH ?= ./lib
# Define include path
INCLUDE_PATH ?= ./include
# Define compiler path on Windows
COMPILER_PATH ?= C:/raylib/w64devkit/bin
# Build mode for project: DEBUG or RELEASE
BUILD_MODE ?= RELEASE
# Define default C compiler: gcc
# NOTE: define g++ compiler if using C++
CC = g++
# Define default make program: Mingw32-make
MAKE = mingw32-make $(PROJECT)
# Compile option
CFLAGS += -Wall -std=c++14 -D_DEFAULT_SOURCE -Wno-missing-braces
ifeq ($(BUILD_MODE),DEBUG)
CFLAGS += -g -O0
else
CFLAGS += -s -O1
endif
# Define include paths for required headers
# NOTE: Several external required libraries (stb and others)
INCLUDE_PATHS = -I. -I$(INCLUDE_PATH)
# Define library paths containing required libs.
LDFLAGS = -L. -L$(RAYLIB_PATH)
# Define any libraries required on linking
# if you want to link libraries (libname.so or libname.a), use the -lname
LDLIBS = -lraylib -lgdi32 -lwinmm
# Define all source files required
SRC_DIR = .
OBJ_DIR = obj
# Default target entry
# NOTE: We call this Makefile target or Makefile.Android target
all:
$(MAKE)
$(OBJ_DIR)/main.o : main.cpp
@mkdir -p obj
$(CC) -c main.cpp $(CFLAGS) $(INCLUDE_PATHS) -o $@
#Icon file path
ICON += icon/seodang_res.o
#목적 파일 만들기
OBJS = $(OBJ_DIR)/main.o
#컴파일
tetris : $(OBJS)
$(CC) $(CFLAGS) $(OBJS) -o $(PROJECT) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) $(ICON)
앞으로 배우면서 모든 의존성을 확인하기 위하여 라이브러리(lib)와 헤더파일(include)을 프로젝트 폴더 하단에 위치했음을 눈여겨 보자.
또한 [[:raylib:install:실행파일_아이콘_및_윈도우창_아이콘_설정하기|윈도우 실행파일의 아이콘]]도 같이 컴파일하게 했음을 눈여겨 보자.
다음 번에는 그리드 개념을 배우도록 할 것이다.
===== 참고 ======
==== 1. 시작 파일 ====
전체 시작파일은 다음 첨부파일과 같다.
{{ :raylib:tetris:tetris1_gettingstart.zip |Tetris Getting Started 파일}}
==== 2. 아이콘 만들기 ====
[[:raylib:install:실행파일_아이콘_및_윈도우창_아이콘_설정하기|실행파일 아이콘 만들기 및 윈도우 창 아이콘 설정하기]]도 읽어보자
==== 3. VS Code 설정파일 ====
너무 편하게 하면 코딩 실력이 늘지 않을 것이다. 또한 Makefile을 만드는데에 익숙해질 필요도 있다.
따라서 VS Code 설정파일은 위의 첨부파일에는 없다. VS Code 설정파일을 만드는 방법은 [[:raylib:raylib_를_cpp로_vs_code_에서_사용하기|Raylib를 위한 VS Code 설정하기]]를 참고하자