본문 바로가기
42seoul/circle-2

[so_long] 0. 과제 이해하기

by saniii 2022. 3. 29.

목표는....! 4월 8일 안에 끝내기...! 할 수 있다...!

 

[ so_long ] : 그리고 모든 물고기들에게 감사를..! 

물고기에게 왜 감사한데..? 무슨 유머야? 나도 이해하고 싶다... :)

# Description
This project is a small 2D game with minilibx. You'll learn about textures, sprites and tiles.
이 프로젝트는 minilibx를 이용한 작은 2D게임입니다. 텍스처, 스프라이트 그리고 타일에 대해 배울 수 있어요.
# Keywords
- Applicative / 
# Skills
- Graphics
- Imperative / 명령형
- programming 

 

2D 게임을 만들기 위해서는 맵 타일, 타일셋, 스프라이트, 스프라이트 시트 등이 필요합니다. 

 

[GOALs]

- rigor

- C언어 (매력적으로) 사용

- 알고리즘 사용

 

 

# Common Instructions

더보기
  • norminette
  • 예기치 않게 프로그램이 중단되어서는 안됩니다. 
    • (segmentation fault, bus error, double free 등등등등ㄷ)
  • 메모리 누수 당연히 안됨
    • 할당한 메모리는 모두 해제하세영
  • -Wall -Wextra -Werror 플래그를 통해 컴파일 수행하기, 리링트는 당연히 안됩니다.
  • Makefile은 $(NAME), all, clean, fclean, re 규칙을 포함해야해요.
  • 보너스를 만들고자 할 때는 Makefile에 보너스 규칙을 포함해야합니다. 
    • 보너스 과제는 별도의 파일에 만드세요

 

 

# Mandatory part

 

  • 게임 내용 : 주인공이 특정 수집품을 모은 뒤 공간을 떠나는 방식
  • 반드시 miniLibX를 사용해야 한다. 
  • 작업창은 최소화, 다른 창으로의 전환등의 동작이 부드럽게 동작해야한다.
  • 지도에는 벽, 수집품, 그리고 빈 공간이 있다. 
  • 플레이어는 모든 수집품을 모으고, 최소한의 움직임으로 맵을 탈출하는 것을 목표로 한다. 
  • 각 움직임마다 현재까지 움직인 횟수가 쉘에 출력되어야한다. 
  • 플레이어는 상하좌우로 움직일 수 있다. 
  • 플레이어는 벽을 뚫고 지나갈 수 없다. 
  • 프로그램은 다음 룰을 따른다. 
    • W, A, S, D 키를 이용하여 캐릭터를 조작한다. 
    • ESC는 창을 닫고 게임을 정상종료한다. 
    • 창 좌상단의 빨간버튼(in mac)을 누르면 창을 닫고 게임을 정상종료한다. 
    • miniLibX의 images를 사용하는 것을 강력 추천
  • .ber 확장자의 파일을 첫번째 인자로 받는다. 
    • 지도의 구성 (문자열)
      • 0 : 빈 공간
      • 1 : 벽
      • C : 수집품
      • E : 맵의 출구
      • P : 주인공의 시작지점
    • 지도는 벽으로 둘러쌓여있다. 그렇지 않으면 에러
    • 지도는 최소한 하나의 출구, 하나의 수집품, 하나의 시작 지점을 가진다.
    • 지도에서 출구로 가는 길의 검증은 하지 않아도 된다. 
    • 지도는 반드시 직사각형 모양이다. 
    • 위의 규칙을 준수한 모든 종류의 지도를 파싱할 수 있어야 한다. 
    • 지도에서 어떤 허점이 발견된다면 Error\n와 설정한 에러 메서지를 출력한 후 제대로 종료되어야 한다. 

 

 

 

# Bonus

  • 적을 추가하기, 주인공이 적에게 닿으면 게임에서 패배
  • 스프라이트에 움직임을 주자
  • 쉘 대신, 화면 상에 현재까지 움직인 횟수를 출력할 수 있다. 

 

 

 

 

 

# translation에 번역본 올려주시는 cadet분들 감사합니다... ( _ _ )

'42seoul > circle-2' 카테고리의 다른 글

[so_long] 01. MiniLibX  (2) 2022.04.11
[so_long] 02. 텍스처, 스프라이트 그리고 .ber  (0) 2022.04.11
[push_swap] 0. 과제 이해하기  (0) 2022.03.05
[minitalk] 발전방향  (0) 2022.02.26
[ minitalk ] 구현과정  (0) 2022.02.25

댓글