셸 정렬(Shell Sort)은? 단순 삽입 정렬의 장점은 살리고 단점은 보완한 정렬 알고리즘 도널드 셀(D.L.Shell)이 고안했다. 먼저 정렬할 배열의 요소를 그룹으로 나눠 각 그룹별로 단순 삽입정렬을 수행하고, 그 그룹을 합치면서 정렬을 반복하여 요소의 이동횟수를 줄이는 방법이다. 퀵정렬이 나오기 전까지는 가장 많이 쓰였다고 한다. 여기서 말하는 단순 삽입정렬의 장점과 단점은 장점 - 정렬을 마쳤거나 정렬을 마친 상태에 가까우면 정렬 속도가 매우 빨라진다. 단점 - 삽입할 위치가 멀리 떨어져 있으면 이동(대입)해야 하는 횟수가 많아진다. 셸정렬은 이 단점을 해결하고 장점을 이용하기 위해 만들어졌다. 코드로 만들어보기 //배열 a와 요소의 수 n void shell(int a[], int n) { ..

작년 초 쯤에 유니티에서 2D의 새로운 기능들을 포함한 2D샘플을 에셋스토어에 출시했다. 2D에서의 빛,쉐이더 처리들의 새로운 기능들을 담아 만들어 배포를 한 샘플이다. 옛날 버전으로는 자꾸 오류가뜨길래 최신버전으로 실행을 하니 됐다. 시작은 멋진 카메라 워크로 시작한다. 가까이 보이는 풀부터 그림자, 멀리보이는 배경, 흔들리는 나뭇잎과 반짝이는 벌레들까지 정말 예쁘다. 잠시 감상 타임 모래바람과 빛이 예쁘다. 쉐이더를 이용한 물과 물에 비춰지는 캐릭터 자연스럽게 낮배경에서 밤배경으로 바뀐다. 이펙트도 멋있다. 빛과 쉐이더를 이용한 효과 키자마자 너무 예뻐서 감탄이 나왔다. 포트폴리오를 3D로 결정해서 3D로 만들고있지만 .. 나중에라도 눈이 즐거운 이런 2D게임도 만들어보고 싶다. 안에는 유니티에서 소..

맵 제작 맵이 엄청 중요한 요소라고 생각은 하지 않는데 내 포폴을 마무리하려면 내 구상대로 맵을 만들고 배치하고 그에 맞는 기능들도 구현을 해야하기 때문에 생각이 많았다. 어느정도 구상이 끝나서 섬에다가 성을 하나 만들었다. 완성되어있는 성이 아니라 메쉬하나하나를 붙인거라 제작하는데 좀 걸렸다.. 행글라이더 애초에 처음 구상할때부터 행글라이더로 섬까지 날아가는 구상을 해놨었다. 당연히 알맞은 애니메이션을 구하기도 어려울것같아서 어울리게 제작을 좀 해볼까 했는데 리깅과 다르게 애니메이션은 3d제작을 배우지 않은 나한텐 좀 어려웠다. 그래서 믹사모에서 매달리는 애니메이션으로 대체해서 만들긴했는데 막상 만들고보니 괜히 만든거 같기도하고 좀 애매하다. 병사들의 시야각 원래는 콜라이더 범위 안에 들어오는 플레이어..
단순 선택 정렬(Straight Selection Sort) 가장 작은 요소부터 선택해 알맞은 위치로 옮겨서 순서대로 정렬하는 알고리즘 배열의 첫번째부터 검색하면서 더 작은수(큰 수를 찾는다면 큰 수)가 있다면 , 스왑을 해주어 정렬을 한다. 바로 코드로 보자. void Selection(int a[], int element) { int i, j; for (i = 0; i < element - 1; i++) { int min = i; for (j = i + 1; j < element; j++) { if (a[j] < a[min]){ min = j; } } int temp = a[i]; a[i] = a[min]; a[min] = temp; } 1. 첫번째 for문은 총 요소의 -1만큼 돌려준다. 버블정렬때..

오늘은 맵을 정확한 구상 없이 제작하려고 하니 좀 고민을 많이하다 늦어졌다. 아직 맵도 완성은 아닌데 계속 생각중이다.. 맵땜에 자꾸 늦어지는거 같아서 내일 후딱 끝내버려야겠다. 주인공 시작 지점 주인공은 이곳에서 시작 할 예정이다. 단촐하게 만들었다. 움직이는 돌다리? 재미 요소를 위해 건너갈때 움직이는 돌다리를 만들었다. 몰랐는데 움직이는 돌다리위에 캐릭터가 그냥 서있어도 따로 처리를 해주지 않으면 그대로 떨어져버린다. 난 당연히 돌을 따라갈줄 알았는데.. 처음알았다 그래서 처리를 후딱해주고 한손으로는 진행이 불가능하기 때문에 유니티 리모트를 켜서 건너봤다. 사다리로 올라가는 탑 사다리를 만들었으니 써먹어야 하기때문에 탑에 사다리를 넣었다. 쌍안경 기능 이건 그냥 갑자기 탑을 만들고보니 만들고싶어져서..

버블 정렬 알고리즘 버블 정렬은 이웃한 두 요소의 대소 관계를 비교하여 교환을 반복하는 정렬 알고리즘이다. 자료들이 정렬되는 모습이 마치 보글보글 거품처럼 올라오는 모습이라 버블 정렬이라고 한다는데 잘 모르겠다.. 이런식으로 붙어있는 요소들간의 비교를 해서 변경을 해야한다면 스왑을하고 그게 아니라면 비교만 하고 넘어간다. 코드로 한번 구현을 해보았다. void bubble(int a[], int element) { for (int i = 0; i a[j + 1]) { int temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; } } 1. 매개변..