-
This project is a very small 2D game.
-
The playerโs goal is to collect every collectible present on the map, then escape
-
Library : MiniLibX (school graphical library)
- This library was developed internally and includes basic necessary tools to open a window, create images and deal with keyboard and mouse events.
-
Skills : window management, event handling, colors, textures, and so forth.
HOW TO USE ?
- git clone repository
- type this command in terminal :
make
- execute so_long file in terminal :
./so_long maps/valid_42.ber
- mainํจ์ ์คํ ์, argc argv๋ฅผ ํตํด map ํ์ผ๊ฒฝ๋ก ์ ๋ณด ์ฃผ๊ธฐ
./so_long maps/big_map.ber
- ๋งต ํ๋๋ง ์ ๋ ฅ ๋ฐ์๋์ง ํ์ธ (ac = 2)
- ํ์ฅ์ .ber์ธ์ง ํ์ธ (av[1] ํ์ธ)
- ์ฃผ์ด์ง ๊ฒฝ๋ก์ ์์นํ map ํ์ผ ์คํํด์ ์ค๋ฅ ์๋์ง ์ฒดํฌ
- fd๋ฅผ readํด์ 1์ฐจ์ ๋ฐฐ์ด ๋ง๋ค๊ธฐ
- ๋ง๋๋ ๋์ค, map์ ๋ํ ๊ท์น ์ด๊ธ๋๋ ๊ฒ ์๋์ง ํ์ธ
/* ์์ธ ์ฌํญ ์ฒ๋ฆฌ ํ ๊ฒ๋ค 1. ์ด์ํ ๋ฌธ์ ๋์ฌ ์ ์ฒ๋ฆฌ, 2. ์ถ๊ตฌ ํ๋์ธ์ง ํ์ธ, 3. ์์ ์ง์ ํ๋์ธ์ง ํ์ธ, 4. ์์งํ 0๊ฐ์ธ์ง ํ์ธ, 5. ์ง๋๊ฐ ์ง์ฌ๊ฐํ์ธ์ง ํ์ธ 6. ์ง๋๊ฐ ๋ฒฝ์ผ๋ก ๋๋ฌ์ธ์ฌ ์์ง ์์ ๊ฒฝ์ฐ 7. ์ง๋์ ์ ํจํ ๊ฒฝ๋ก๊ฐ ์๋ ๊ฒฝ์ฐ (์ ๊ตฌ -> ์์งํ ๋ชจ๋ GET -> ์ถ๊ตฌ)) */
- ๋ง๋ 1์ฐจ์ ๋ฐฐ์ด์ mlxํด์ map ๋ง๋ค๊ธฐ
- key ๋๋ฅผ ๋ ๋ง๋ค ๋ฐ๊ณ -> ๋ณ๊ฒฝ -> ๋ค์ ๊ทธ๋ฆฌ๊ธฐ
- int main(int ac, char **av)
- so_long ์ค๋น๋จ๊ณ
- int check_ac_av(int ac, char *av)
- void initialize_map_info(t_check_map *info)
- so_long ๋งต ์ฝ๊ธฐ๋จ๊ณ
- char *read_map(int fd, t_check_map *info)
- so_long ๋งต ์ฒดํฌ๋จ๊ณ
- int check_map_cnt(t_check_map *info)
- int check_map_wall(char *map, t_check_map info, int index)
- int check_map_dfs(char *map, t_check_map *info)
- so_long mlx ๋จ๊ณ
- void run_mlx(t_check_map *map)
- so_long ์ค๋น๋จ๊ณ
- int check_ac_av(int ac, char *av)
- ac, av ์๋ง๊ฒ ์๋์ง ์ฒดํฌํ๋ ํจ์
- void initialize_map_info(t_check_map *info)
- map_info ๊ตฌ์กฐ์ฒด ์ด๊ธฐํํ๋ ํจ์
- char *read_map(int fd, t_check_map *info)
- map์ readํด์ 1์ฐจ์ ๋ฐฐ์ด๋ก ๋ฆฌํดํ๋ ํจ์๋ก ์ ๋ฒ ๊ณผ์ ์์ ๋ง๋ GNL์ ํ์ฉ
- get_next_line.c / get_next_line_utils.c (GNL ์ฝ๋)
- map์ readํด์ 1์ฐจ์ ๋ฐฐ์ด๋ก ๋ฆฌํดํ๋ ํจ์๋ก ์ ๋ฒ ๊ณผ์ ์์ ๋ง๋ GNL์ ํ์ฉ
- int check_map_cnt(t_check_map *info)
- 'C' ์์งํ์ด 1๊ฐ ์ด์์ธ์ง, 'E' ์ถ๊ตฌ๊ฐ 1๊ฐ์ธ์ง, 'P' ์ถ๋ฐ์ ์ด 1๊ฐ์ธ์ง ํ์ธํ๋ ํจ์
- int check_map_wall(char *map, t_check_map info, int index)
- ์ง๋๊ฐ '1' ๋ฒฝ์ผ๋ก ๋๋ฌ์ธ์ฌ ์๋์ง ํ์ธ ํ๋ ํจ์
- int check_map_dfs(char *map, t_check_map *info)
- ['P' ์ถ๋ฐ -> 'C' ๋ชจ๋ ์์งํ -> 'E' ์ถ๊ตฌ] ๊ณผ์ ์ด ์ด๋ฃจ์ด์ง ์ ์๋์ง ํ์ธํ๋ ํจ์
- void run_mlx(t_check_map *map)
- mlx๋ฅผ ์คํ ๋ฐ ์ ์ง ์ํค๋ ํจ์
- ๊ฒ์ ์์ ๋ฐ ํ๋ฉด ๋์ฐ๋ ์ฝ๋ : so_long_screen.c ํ์ผ์ ๋ถ๋ฅ
- ๊ฒ์ ์คํ ์ค, ์ด๋ฒคํธ ๋ฐ์ ์ ์ฒ๋ฆฌํด์ผ ํ ์ฝ๋ : so_long_event.c ํ์ผ์ ๋ถ๋ฅ