본문 바로가기

42seoul/circle-212

[so_long] 04. so_long 회고 # 어려웠던 점 1. 크기가 다 똑같은 이미지를 구하기가 어려웠다. 과제에서 알려주는 사이트로 들어가면 16, 6, 32 제각각이다. 그래서 원하는 이미지만 골라서 넣고자 할 때도 전부 같은 크기로 맞추기 어려웠다. 제발 고생하지 말고 이거 써서 크기 맞추세여!!!!!!! https://www.resizepixel.com/ko 2. 구조체안에 구조체를 두었다. 좀 갈끔하게, 변수를 덕지덕지 넣지 않고 분류되듯이 하려고 구조체안에 캐릭터에 대한 정보를 담는 구조체, 맵에 대한 정보를 담는 구조체, 이미지에 대한 정보를 담는 구조체를 넣었는데 typedef struct s_map { introw; intcol; }t_map; typedef struct s_img { void*mermaid; void*shoe.. 2022. 4. 27.
[so_long] 03. 창 만들어서 키보드 입력받기 https://github.com/terry-yes/mlx_example 의 자료를 해석했습니다. 1. mlx_init() 소프트웨어와 화면을 연결 mlx 라이브러리 초기화 2. mlx_new_window(mlx, width, height, "SO_LONG"); SO_LONG 이라는 이름을 가지고 너비가 width, 높이가 height인 창 띄우기 3. 키보드와 연결하기 (MAC ver) #define X_EVENT_KEY_PRESS2 #define X_EVENT_KEY_release3 #define X_EVENT_KEY_EXIT17 //exit key code //Mac key code example //All the key code example other than below is described .. 2022. 4. 20.
[so_long] 01. MiniLibX https://harm-smits.github.io/42docs/libs/minilibx/prototypes.html#initialization-functions Prototypes Find code examples, optimization tricks, and much more. harm-smits.github.io 이 분의 정리를 제 나름대로 번역...이라기보다는 독해했습니다.... # MiniLibX X-Window, Cocoa 프로그래밍 지식없이, 그래픽 소프트웨어를 생성할 수 있는 쉬운 방법으로 간단한 윈도우 상성, 드로잉 툴, 이미지, 기본 이벤트 관리를 제공한다. MiniLibX의 API를 올바르게 사용하기 위해서는 mlx.h를 인클루드해야한다. mlx.h는 함수들의 프로토타입만을 포함하고 .. 2022. 4. 11.
[so_long] 02. 텍스처, 스프라이트 그리고 .ber # 스프라이트 , Sprites sprites : 2D 그래픽 오브젝트, 한장씩 독립된 이미지의 단위 ex) 게임을 구성할 때 필요한 블록이나, 캐릭터, 아이템등을 스프라이트로 만들어두면 계속해서 재사용하여 편하게 게임을 구성할 수 있다. # 텍스처 , Textures 게임 오브젝트를 덮거나, 랩핑하는 이미지, 또는 동영상 파일로 시각적 효과를 만들어낸다. 2D에서는 스프라이트로 저장되고 3D에서는 사물을 감싸서 질감을 표현한다. (게임 속 캐릭터, 사물등을 좀 더 사실감있게 표현) - 텍스처는 GPU에 2^n 크기로 저장된다. - 스프라이트는 한 장의 텍스처에 여러 개를 모아 놓을 수 있다. >>> 메모리 절약을 위해 텍스처 아틀라스 방법을 사용할 수 있음. # ber 파일 음... 이건 찾아도 뭐가 .. 2022. 4. 11.
[so_long] 0. 과제 이해하기 목표는....! 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 게임을 만들기 위해서는 맵 타일, 타일셋, 스프라.. 2022. 3. 29.
[push_swap] 0. 과제 이해하기 Description This project involves sorting data on a stack, with a limited set of instructions, and the smallest number of moves. To make this happen, you will have to manipulate various sorting algorithms and choose the most appropriate solution(s) for optimized data sorting. 이 프로젝트는 제한된 명령어 집합과 가장 적은 수의 이동으로 스택의 데이터를 정렬하는 것을 포함한다. 이를 위해서는 다양한 정렬 알고리즘을 조작하고 최적화된 데이터 정렬에 가장 적합한 솔루션을 선택해야 합니다. #ke.. 2022. 3. 5.
[minitalk] 발전방향 평가는 통과했지만 나도 내 코드가 더 발전해야할 부분이 있음을 이미 알고 있었기 때문에 평가를 통해 얻은 피드백을 잊어버리기전에 기록해두려한다. - static 에 대해 정확히 공부할 것 static을 사용했을때 언제 불러오는지 알고 있다면 초기화가 언제되는지, 자동으로 되는지 혹은 내가 직접해야하는지도 알 수 있었을 것이다. 그랬다면 server.c의 핸들러 함수를 쓸데없이 전역변수 쓰지않고, 더 간결한 코드로 구현할 수 있었을 것 같다. - 산술 연산 줄인다고 했음에도 나는 산술연산을 아직 쓰고 있다. 나의 로직이 애초에 이진수로 변환하여 시그널을 보내는 것이기에 애초에 client에서 server로 시그널을 보낼때 비트 연산자를 이용해서 전달하면 비트 연산만 사용하게되어 시간이 더 단축될 수 있다... 2022. 2. 26.
[ minitalk ] 구현과정 두개의 시그널, SIGUSR1와 SIGUSR2만을 이용해서 서버 프로그램에 데이터를 보내야한다. 사전지식에 대한 이야기는 앞의 게시글에서 가득 했으니 넘어가고 과제를 풀어나가는 생각의 흐름만 기록해보자. + 두가지의 신호만 사용할 수 있다. 우선 통신하는데 단지 2가지의 시그널만을 이용해야한다는 점을 통해서 이진법을 떠올릴 수 있다. 우리는 C언어 공부를 통해 각 데이터형이 몇바이트로 이루어지는지, 한 바이트는 몇 비트인지를 공부하면서 이진법으로 왠만한 문자열(아스키코드값내의 문자)을 모두 표기할 수 있음을 알고 있다. 따라서 문자열을 문자로, 문자를 비트로 쪼개어 1(SIGUSR1)과 0(SIGUSR2)로 표현 및, 시그널을 보내면 된다. 각 문자는 아스키코드값에 따라 숫자로 나타낼 수 있으며 8자리의.. 2022. 2. 25.
[ minitalk ] getpid() | pause() | sleep() | usleep() | exit() getpid 실행 중인 프로세스 ID를 구하는 함수 #include pid_t getpid(void); 이 함수는 언제나 successful (https://man7.org/linux/man-pages/man2/getpid.2.html glibc 버전 2.25부터 ID 캐시가 제거됨: getpid ()에 대한 호출은 항상 캐시된 값을 반환하는 대신 실제 시스템 호출 ) (** getppid() : 부모 프로세스 ID를 구하는 함수) pause 시그널을 기다리는 함수 #include int pause(void); 시그널을 잡으면 -1을 반환하고, 실패하면 EINTR sleep 초단위로 지정한 만큼 혹은 지정한 시간 안에 시그널이 올 때까지 프로세스를 멈추는 함수 #include unsigned int sl.. 2022. 2. 24.