Skip to content

Repository files navigation

so_long

so_long은 간단한 2D 게임을 구현하는 프로젝트로, MiniLibX 라이브러리를 사용하여 캐릭터와 아이템을 화면에 렌더링하고, 캐릭터가 맵을 탐색하도록 설계되었습니다.

목차

프로젝트 개요

이 프로젝트는 간단한 미로 게임을 구현하여, MiniLibX 라이브러리를 사용한 그래픽 프로그래밍과 C 언어로 게임 로직을 설계하는 경험을 제공합니다. 플레이어는 제한된 공간에서 아이템을 수집하고 출구로 탈출해야 하며, 게임의 승패가 결정됩니다.

스크린샷 2024-11-06 오후 1 29 46

게임 규칙

  • 플레이어의 목표는 맵에 있는 모든 아이템을 수집하고, 출구를 통해 탈출하는 것입니다.
  • 플레이어는 W, A, S, D 키를 사용하여 상하좌우로 이동할 수 있습니다.
  • 모든 아이템을 수집하기 전에는 출구가 닫혀 있으며, 아이템을 모두 모은 후에만 출구를 통과할 수 있습니다.
  • 벽에는 충돌할 수 없으며, 캐릭터는 벽을 통과할 수 없습니다.

DFS 사용

이 프로젝트에서는 DFS(깊이 우선 탐색) 알고리즘을 사용하여 맵의 유효성을 검사하고, 플레이어가 모든 아이템과 출구에 도달할 수 있는지 확인합니다.

DFS 활용 이유

DFS는 다음과 같은 이유로 so_long 프로젝트에 적합합니다:

  • 경로 탐색: DFS는 복잡한 맵에서도 빠르게 경로를 탐색할 수 있어, 플레이어가 목적지에 도달할 수 있는지 확인하는 데 적합합니다.
  • 메모리 효율성: 재귀적 접근 방식을 사용해 메모리를 절약하고, 맵의 모든 경로를 효율적으로 탐색할 수 있습니다.
  • 유효성 검사: 맵에서 벽, 출구, 아이템이 모두 연결된 상태인지 확인하여, 게임 플레이에 적합한 맵인지 판단하는 데 유용합니다.

구현 세부 사항

  • 맵 파싱: 맵은 .ber 확장자를 가진 파일로 제공되며, 게임 로직을 위해 파일을 읽고 파싱해야 합니다. 맵 파일은 벽, 빈 공간, 플레이어의 시작 위치, 아이템, 출구 등의 요소를 포함합니다.
  • 그래픽 렌더링: MiniLibX 라이브러리를 사용하여 그래픽 요소를 화면에 렌더링합니다. 각 요소는 이미지로 표현되며, 맵 파일의 구조에 따라 화면에 배치됩니다.
  • 이벤트 처리: 키보드 입력을 통해 플레이어가 상하좌우로 이동할 수 있도록 이벤트를 처리합니다.
  • 게임 상태 업데이트: 아이템을 수집하거나 출구를 통과할 때 게임 상태를 업데이트하여 승리 조건을 확인합니다.
  • 에러 처리: 잘못된 맵 파일 형식, 올바르지 않은 경로 등 다양한 에러 상황에 대해 예외 처리를 합니다.

설치 방법

  1. 터미널에서 이 저장소를 클론합니다.

    git clone https://github.com/jmsmg/so_long.git
    cd so_long
  2. 프로젝트를 빌드합니다.

    make
  3. 컴파일이 완료되면, 실행 가능한 파일이 생성됩니다.

사용 방법

so_long을 실행하려면, 맵 파일을 인수로 제공하여 실행할 수 있습니다.

./so_long maps/map.ber
  • W: 위로 이동
  • A: 왼쪽으로 이동
  • S: 아래로 이동
  • D: 오른쪽으로 이동
  • ESC: 게임 종료

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages