So_long

이민규·2023년 6월 9일
0

42seoul

목록 보기
7/24

so_long과제는 외부 그래픽 라이브러리를 이용하여 간단한 2D게임을 만들어 보는 과제입니다 수집품을 모아서 포탈로 탈출하면되는 간단한 게임이죠 !


MinilibX

minilibx는 과제에서 주어지는 그래픽관련 함수들이 모아져있는 라이브러리이다

mlx_init()

void *mlx_init();

디스플레이 장치와 연결하여 연결에 대한 식별자를 void *타입의 포인터로 반환한다 (디스플레이 장치와의 연결에 실패하게 되면 NULL을 반환한다)

mlx_new_window

void *mlx_new_window(void *mlx_ptr, int size_x, int size_y, char *title);

window의 width 값 height값을 받아서 새로운 window를 만들어준다

  • mlx_ptr : 디스플레이 장치와 연결된 *mlx_ptr을 인자로 받는다
  • size_x : 화면에 표시될 window의 width 값을 의미한다
  • size_y : 화면에 표시될 window의 height 값을 의미한다
  • title : 화면에 표시될 window의 이름을 의미한다
  • 반환값 : window에 대한 식별자를 void *타입의 포인터로 반환한다

mlx_clear_window

int mlx_clear_window(void *mlx_ptr, void *win_ptr);

window의 화면을 초기화해준다.

  • mlx_ptr : 디스플레이 장치와 연결된 *mlx_ptr을 매개변수로 받는다
  • win_ptr : window와 연결된 *win_ptr을 매개변수로 받는다
  • 반환값 : 함수원형에는 반환값이 int형으로 표시되어있지만 실제로는 반환되는값이 존재하지않는다

mlx_new_image

void *mlx_new_image(void *mlx_ptr, int width, int height);

image의 width와 height를 받아 image를 생성하고 void *형으로 반환해준다

  • mlx_ptr : 디스플레이 장치와 연결된 *mlx_ptr을 매개변수로 받는다
  • width : image의 width size를 지정해준다
  • height : image의 height size를 지정해준다
  • 반환값 : image에 대한 식별자를 void *타입의 포인터로 반환해준다 (Image 생성에 실패하면 NULL포인터를 반환한다)

mlx_put_image_to_window

int mlx_put_image_to_window(void *mlx_ptr, void *win_ptr, void *img_ptr, int x, int y);
  • mlx_ptr : 디스플레이 장치와 연결된 *mlx_ptr을 매개변수로 받는다
  • win_ptr : window와 연결된 *win_ptr을 매개변수로 받는다
  • img_ptr : image와 연결된 *img_ptr을 매개변수로 받는다
  • x : image를 window에 표시할 width좌표를 입력 받는다
  • y : image 를 window에 표시할 height좌표를 입력 받는다
  • 반환값 : 함수의 원형에서는 반환값이 int형으로 표시되어있지만 실제로는 반환되는 값이 존재하지 않는다

mlx_xpm_file_to_image

void * mlx_xpm_file_to_image(void *mlx_ptr, char *filename, int *width, int *height);

mlx_new_image 함수를 호출하여 image공간을 만들고 filename(xpm 이미지)를 이용하여 그 공간을 채워준다

  • mlx_ptr : 디스플레이 장치와 연결된 *mlx_ptr을 매개변수로 받는다
  • filename : xpm file의 이름을 매개변수로 받는다
  • width : width size를 image의 width size만큼 초기화해준다
  • height : height size를 image의 height size만큼 초기화해준다
  • 반환값 : image에 대한 식별자를 void *타입의 포인터로 반환해준다 (image 생성에 실패하게 되면 NULL을 반환한다)

mlx_loop

int mlx_loop(void *mlx_ptr);

무한히반복되는 loop를 시작한다 loop진행 중에는 Event에 따른hook함수들이 호출되며 그외 함수들은 동작하지 않는다

  • mlx_ptr : 디스플레이 장치와 연결된 *mlx_ptr을 매개변수로 받는다
  • 반환값 : 함수의 원형에서는 반환값이 int형으로 표시되어있지만 실제로는 반환되는 값이 존재하지 않는다

mlx_key_hook

int mlx_key_hook(void *win_ptr, int (*funct_ptr)(), void *param);

키보드 버튼에 대한 Event가 발생했을 때 콜백함수를 호출하는 hook함수이다
👀콜백함수 : 다른 함수의 인자로서 넘겨진 후 특정 이벤트에 의해 호출되는 함수를 의미한다

  • win_ptr : window와 연결된 *win_ptr을 매개변수로 받는다
  • funct_ptr : Event가 발생했을 때 호출할 콜백함수를 함수포인터로 받는다
    • 내부적으로 콜백함수를 호출할때 아래와 같은 형태로 호출하기 때문에 funct_ptr은 아래와 같은 형태의 함수로 만들어져야한다
int key_hook(int keycode, void *param);

keycode는 X11의 keysymdef.h에 정의된 값을 따르며 해당 이미지를 참고하자

  • param : 콜백함수 내에서 사용할 인자를 매개변수로 넣어준다

mlx_hook

int mlx_hook(void *win_ptr, int x_event, int x_mask, int (*funct)(), void *param);

x_event에 해당하는 event가 발생했을시 콜백함수를 호출하는 hook함수이다

  • win_ptr : window와 연결된 *win_ptr을 매개변수로 받는다
  • x_event : x11의 x.h안에 각각의 event들에 대해서 정의되어져 있다
    링크 : X11/X.h
  • x_mask : mac_os에서는 mask값이 사용되지 않기 때문에 0을 지정하여 사용하지 않는 인자임을 암시한다
  • funct_ptr : Event가 발생했을 때 호출할 콜백함수를 함수포인터로 받는다
  • param : 콜백함수 내에서 사용할 인자를 매개변수로 넣어준다

mlx_loop_hook

int mlx_loop_hook(void *mlx_ptr, int (*funct_ptr)(), void *param);

loop가 반복되어질 때 마다 event가 발생하지 않았으면 호출되는 함수이다

  • mlx_ptr : 디스플레이 장치와 연결된 *mlx_ptr을 매개변수로 받는다 다른 hook함수와 다르게 mlx_ptr을 인자로 받아 window단위로 실행되는 것이 아닌 screen단위로 동작하는것을 알 수 있다
  • funct_ptr : loop_hook함수가 호출될때 동작할 콜백함수를 지정해준다
    • 콜백함수는 아래와 같은 형식으로 작성하면 된다
int loop_hook(void *param);
  • param : 콜백함수 내에서 사용할 인자를 매개변수로 넣어준다

참고링크 팔만코딩경 mlx.h

profile
프로그래머 희망자(휴직중)

0개의 댓글