프로젝트 개요

  • 구현 목표
    • 1. 총 20개의 스테이지를 개발하여 플레이어에게 다양한 경험을 제공한다.
    • 2. 게임의 중간에 종료 시에도 이어하기 기능을 구현하여 사용자가 편리하게 게임을 이어나갈 수 있도록 한다.
    • 3. 파일 입출력을 활용하여 스테이지 암호화 및 복호화를 구현하여 사용자가 스테이지를 조작하지 못하도록 보안성을 강화한다.
  • 활동 내용
    • 1. SDL2 라이브러리를 활용하여 게임의 기본 틀을 구축하고, 화면 회전 및 퍼즐 조작 기능을 구현한다.
    • 2. 게임의 인터페이스를 개발하여 플레이어에게 게임 시작, 이어하기 등의 선택지를 제공하고, 선택에 따라 게임의 진행한다.
    • 3. 긍정적인 메시지를 담아 플레이어에게 응원과 위로의 감정을 전달한다.
  • Category
  • 퍼즐 게임
  • Period
  • 2023.05.17.~2023.05.26.
  • Blog
  • C++언어와 SDL2 라이브러리로 만든 퍼즐 게임 A Word of Heart
  • GitHub
  • https://github.com/Isaac-Seungwon/a-word-of-heart.git

Game Stage Design

game stage

스테이지는 총 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);
}
stage

사용자가 진행한 게임의 스테이지는 암호화되어 알 수 없는 문자로 저장된다.