목표는....! 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
- 인자 : *.ber 형식의 맵
- 사용 가능한 외부 함수
- open <unistd.h>
- close <unistd.h>
- read <unistd.h>
- write. <unistd.h>
- printf <stdio.h>
- malloc <stdlib.h>
- free <stdlib.h>
- perror <stdio.h>
- strerror <string.h>
- exit. <unistd.h>
- MinilibX 라이브러리의 모든 함수들
- 직접 만든 libft 사용 가능
- 게임 내용 : 주인공이 특정 수집품을 모은 뒤 공간을 떠나는 방식
- 반드시 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 |
댓글