프로젝트 개요
-
구현 목표
- 1. 총 20개의 스테이지를 개발하여 플레이어에게 다양한 경험을 제공한다.
- 2. 게임의 중간에 종료 시에도 이어하기 기능을 구현하여 사용자가 편리하게 게임을 이어나갈 수 있도록 한다.
- 3. 파일 입출력을 활용하여 스테이지 암호화 및 복호화를 구현하여 사용자가 스테이지를 조작하지 못하도록 보안성을 강화한다.
-
활동 내용
- 1. SDL2 라이브러리를 활용하여 게임의 기본 틀을 구축하고, 화면 회전 및 퍼즐 조작 기능을 구현한다.
- 2. 게임의 인터페이스를 개발하여 플레이어에게 게임 시작, 이어하기 등의 선택지를 제공하고, 선택에 따라 게임의 진행한다.
- 3. 긍정적인 메시지를 담아 플레이어에게 응원과 위로의 감정을 전달한다.
- Category
- Period
- Blog
- GitHub
퍼즐 게임 | |
2023.05.17.~2023.05.26. | |
C++언어와 SDL2 라이브러리로 만든 퍼즐 게임 A Word of Heart | |
https://github.com/Isaac-Seungwon/a-word-of-heart.git |
Game Stage Design
스테이지는 총 20개가 있으며, 모든 스테이지를 클리어하면 엔딩이 나타난다.
스테이지마다 벽, 가시, 열쇠, 자물쇠를 활용하여 플레이어가 한정된 공간에서 다양한 체험을 할 수 있도록 한다.
checkCollision
int checkCollision(SDL_Rect *a, SDL_Rect *b){
int t = 0, result = 0;
if ((a->x <= b->x && b->x <= a->x + a->w) || (a->x <= b->x + b->w && b->x + b->w <= a->x + a->w) || (b->x <= a->x && a->x <= b->x + b->w) || (b->x <= a->x + a->w && a->x + a->w <= b->x + b->w)) t++;
if ((a->y <= b->y && b->y <= a->y + a->h) || (a->y <= b->y + b->h && b->y + b->h <= a->y + a->h) || (b->y <= a->y && a->y <= b->y + b->h) || (b->y <= a->y + a->h && a->y + a->h <= b->y + b->h)) t++;
if (t == 2) result = 1;
return result;
}
사용자 누적 스테이지 불러오기
//사용자 누적 스테이지 불러오기
int loadstage()
{
int v;
//파일을 읽기 바이너리 모드로 불러옴
FILE *file = fopen("stage.txt", "rb");
if(file == NULL)
{
return 0;
}
fread((void*)&v, sizeof(int), 1, file);
v ^= 0xA361Ba3d; //암호 해독 0xA295fa3d
fclose(file);
return v;
}
사용자 누적 스테이지 저장
//사용자 누적 스테이지 저장
void savestage(int stage)
{
//파일을 쓰기 바이너리 모드로 불러움
FILE *file = fopen("stage.txt", "wb");
if(file == NULL)
{
return;
}
STAGE^=0xA361Ba3d; //스테이지 암호화
fwrite((void*)&stage, sizeof(int), 1, file);
fclose(file);
}
사용자가 진행한 게임의 스테이지는 암호화되어 알 수 없는 문자로 저장된다.