목록Programing (92)
Prosto
재귀적 호출 함수를 이해하기 위해선사용자 정의 함수를 먼저 알고있어야 합니다.(잘 모르신다면 아래 글을 참고해주세요.) '사용자 정의 함수의 이해와 예제, 문제 -C언어' 이번에는 재귀적 호출 함수에 대하여 알아보도록 하겠습니다. 재귀적 호출 함수란 무엇일까요? 말그대로 재귀(再歸 : 원래의 자리로 되돌아가거나 되돌아옴) 함수입니다. 함수에서 다른 함수를 호출하는 게 가능하다는 걸 알고 계시죠? 여기서 달라지는 부분이 바로 다른 함수를 호출하는 것이 아닌 자기 자신을 다시 호출한다는 것입니다. Recursive라는 함수를 만들어 예를 들어볼까요? void Recursive(){ //내용 Recursive();} 같은 식으로 구성된 함수입니다. 이런 함수를 메인에서 ( int main(void) { Rec..
'사용자 정의 함수 - 이미 만들어진 함수를 사용하듯 직접 새로운 함수를 정의하여 사용하는 방법!' 프로그래밍을 하다보면 같은 작업을 변수 몇 가지만 바뀌어서 처리하거나,특정 기능을 만들어서 필요할 때마다 사용하고 싶은 경우가 있습니다.그런 때 사용할 수 있도록 해주는 게 사용자 정의 함수입니다. 지금까지 우리가 배웠던 것들을 그대로 함수로 만들 수 있습니다.예를 들면, 두 수를 전달해주면 더하기 기능을 해주는 함수를 만들 수도 있고, 구구단 중 특정 단을 출력해주는 기능을 하는 함수를 만들 수도 있습니다. 실제로 게임에서도 캐릭터가 이동하는 기능을 하는 함수, 공격을 하는 함수, 체력을 표시해주는 함수같이 여러 개의 함수를 만들어서 사용하게 됩니다. 함수에도 지금까지 했던 것처럼 일정한 규칙이 있지만,..
따라하는 유니티 2D 프로젝트ⓑ 강좌 아홉 번째(마지막) 시간입니다. 이번에 함께 할 작업은 지금까지 만들었던 게임을 안드로이드 어플(apk 파일)로 전환하는데 어떤 추가 작업이 필요한지 확인하고, 추가 작업을 해 안드로이드 기기(태블릿, 스마트폰 등)에서 동작이 잘 되는지 실행시켜 확인해보겠습니다. 그럼 시작하겠습니다. 가장 먼저 저번에 작업했던 프로젝트를 실행합니다. 그리고 순서대로 직접 따라하시면 됩니다. 먼저 이제부터 빌드할 안드로이드(Android)로 플랫폼을 전환하고 씬(Scene)도 등록해주고, 플레이어 셋팅(Player Setting)도 해주도록 합시다. 좌측 상단의 메뉴 중 File - Build Settings...를 선택해주세요. 이렇게 Build Settings 창이 뜨는 것을 확인..
유니티로 만든 게임을 특정 해상도로 지정해주고 싶을 때가 있습니다. 다양한 해상도가 있는 스마트 폰에 게임을 만들 때도 만들 때 특정 해상도가 있겠죠? (자동 해상도면 휴대폰에 따라 보이는 화면이 달라지고 그에 따라 설정도 모두 해줘야 할 테니까요...) 일단 해상도 지정에는 Screen.SetResolution(가로 픽셀, 세로 픽셀, full screen 유무); 가 사용됩니다. 예를 들어 720x1280으로 해상도를 고정시키고 싶다면 Screen.SetResolution(720, 1280, true); 이렇게 지정해주면 되겠죠? 또, 1280x720으로 해상도를 고정시키고 싶다면 Screen.SetResolution(1280, 720, true); 이렇게 되겠고요. (최초 실행 시 실행되는 스크립트..
유니티로 게임을 만들고, 어플(App)으로 전환하기 위해서는 별도로 설치가 필요한 게 있습니다.안드로이드(apk) 변환 시 필요한 게 바로 SDK, JDK, NDK죠. 그럼 어플을 만들기 전, 먼저 간단하게 준비를 해주도록 합시다. 좌측 상단에 메뉴가 있죠?Edit - Preferences...를 선택합니다. 그리고 External Tools에 들어가보면하단에 Android라고 있는 게 보일 겁니다.SDK, JDK, NDK가 비어있죠?우리는 이제부터 이 부분을 모두 채워줄 겁니다.(그래야 안드로이드 APK 파일로 빌드할 때 문제없이 잘 됩니다.) 가장먼저 SDK 옆의 Download 버튼을 눌러줍니다. 그러면 이렇게 Android Studio를 받을 수 있는 링크로 연결됩니다.버전이 달라 없다면https..
따라하는 유니티 2D 프로젝트ⓑ 강좌 여덟 번째 시간입니다. 이번에 함께 할 작업은 블록 위에선 볼이 생성되지 않도록 예외 처리 작업을 해주고,게임 클리어 조건을 만들고 클리어 시 게임 클리어 화면으로 전환하는 작업을 하겠습니다.추가로 시간을 측정하여 게임 클리어까지 걸리는 시간도 확인할 수 있도록 하겠습니다. 그럼 시작하겠습니다. 가장 먼저 저번에 작업했던 프로젝트를 실행합니다.그리고 순서대로 직접 따라하시면 됩니다. 블록 위에서도 볼이 생성되는 모습입니다. 이렇게 블록 위에서 볼이 생성되고블록 위에서 볼이 왔다갔다하면 안 되겠죠? 이 부분에 대한 예외 처리를 해보도록 하겠습니다. 볼 생성할 때와 관계가 있으니Scripts - Ball - BallManager 순으로 선택하여스크립트를 실행합니다. 새롭..
'빠르게 정렬하는 방법으로 가장 많이 사용되는 퀵정렬' 퀵 정렬은 빠른 정렬이나 퀵 소트(Quick Sort)라고도 부릅니다. 퀵 정렬(Qucik Sort)는 데이터를 정렬하는 방법 중 하나입니다. 데이터를 분할(Divide)하고 분할된 부분 별로 이동하는 정복(Conquer) 과정을 반복하여 거쳐 정렬하는 방법입니다. (지금까지의 정렬들과 달리 조금은 복잡합니다만 보고, 직접 해보며 이해할 수 있을 겁니다.) 성능을 Big O로 표기한다면 average, best = O(n log n)이고, worst = O(n^2)입니다. 일반적으로는 O(n log n)의 성능을 내주지만, 피봇(중심점이) 항상 최솟값이나 최댓값으로 잡힌다면 최악의 성능인 O(n^2)이 나옵니다. 참고로 지금까지 했던 (선택, 삽입,..
'검색할 범위를 반으로 줄여가며 찾아가는 이분 검색(Binary Search)' 이분 검색은 검색할 자료를 반씩 나누어 나머지 반만 검색하는 방식을 반복하여 자료를 찾는 검색(탐색) 방법입니다. 이 이분 검색을 이용하여 자료를 찾는다면 빠른 속도로 원하는 자료를 찾을 수 있습니다. (단, 이분 검색은 정렬되어있는 데이터에 사용할 수 있습니다.) (정렬 방법은 블로그 내의 다른 글을 참고하시면 도움이 될 것 같습니다.) 성능을 Big O로 표기한다면 O(log n)입니다. 자료가 2개라면 1번, 4개(2^2개)라면 2번, 8개(2^3개)라면 3번, 16개(2^4개)라면 4번, ... 1,024개(2^10개)라면 10번, 1,048,576개(2^19개)라면 최대 19번이면 찾습니다. 굉장히 빠르죠? 실제 배..
따라하는 유니티 2D 프로젝트ⓑ 강좌 일곱 번째 시간입니다. 이번에 함께 할 작업은 저번 시간에 만들어 두었던 체력바를 필요한 때만 보여줄 수 있도록 하겠습니다. (데미지를 받은 경우 3초 동안 보여주도록) 볼이 모두 없어지는 경우 게임오버, 즉 게임종료 화면으로 전환하도록 하겠습니다. 그때 Retry 버튼을 두고, 처음부터 다시 시작할 수 있도록 하겠습니다. 그럼 시작하겠습니다. 가장 먼저 저번에 작업했던 프로젝트를 실행합니다. 그리고 순서대로 직접 따라하시면 됩니다. 실행해보면 저번에 마지막 작업했던 부분이 정상적으로 나옵니다. 모든 블록에 대해서 체력 게이지를 보여주는 체력바를 생성해줬었죠? 먼저 체력바를 피해를 받은 경우에만 보여주도록 바꿔볼까요? Scripts - Block 폴더로 들어가서 Bl..
'맞는 위치에 삽입시켜가며 정렬하는 삽입정렬' 삽입정렬은 Insertion Sort라고도 부르며 데이터 정렬 방법 중 하나입니다. 키(key) 값을 가지고 정렬시키는 삽입 정렬은 두 번째 자료부터 시작하여 그 앞의 자료들과 비교하여 알맞은 위치로 삽입하는 형태의 정렬입니다. (배열로 보는 경우 삽입이라면 뒤의 자료들은 한 칸씩 밀리는 형태가 되겠죠?) (아래 데이터 이동 그림을 보시면 이해하시기 더 좋을 것이라 생각됩니다.) 여러 회전을 반복하여 정렬하는 방법입니다. 첫 번째 회전에서는 두 번째 자료를 키 값으로 가지고 앞의 자료들을 하나씩 비교합니다. 두 번째 자료의 앞 자료는 첫 번째 자료 하나밖에 없으니 하나만 확인하면 됩니다. 첫 번째 자료가 키 값보다 크다면 두 번째 자료를 첫 번째 자료로 바꿔..