본문 바로가기

X-dea

(120)
원 사각형 충돌체크 투영을 통한 체크Box-Circle Collision DetectionCollision with a circle may be one of the simpler ones. Because its projection is the same in all directions (it's simply the circle's radius), we can just do the following:010203040506070809101112131415161718192021222324private function refresh():void { //prepare the vectors var v:Vector2d; var current_box_corner:Point; var center_box:Point = box1.getDot(0..
API 하기전 알아야 할 것들 API 특징 및 장점1. 그래픽 기반(GUI)의 운영체제 2. 멀티 태스킹이 가능3. 메시지 구동 시스템4. 장치에 독립적5. 일관성6. 리소스와의 분리 변수 명명법윈도우즈 프로그래밍에서는 변수에 이름을 붙이는 방법이 도스와는 많이 다름.윈도우즈에서는 워낙 많은 변수가 사용되므로 대체로 변수 이름을 길게 쓰며 되도록 가독성이 좋게 하기 위해 대문자와 소문자를 적당히 혼합하여 사용함. 윈도우 프로그래밍에서 주로 사용되는 접두어 접두어 원래말 의미 cb Count of Bytes 바이트 수 dw double word 부호없는 long형 정수 h handle 윈도우, 비트맵, 파일 등의 핸들 sz Null Terminated NULL 종료 문자열 ch Character 문자형 a Array 배열 w Word ..
STL(Standard Template Library) STL이란?표준 템플릿 라이브러리(Standard Template Library: STL)는 C++에서 일반적인 자료 구조와 알고리즘을 구현해 놓은 라이브러리의 집합이다. 지원하는 자료구조에는 vector, map, set 등이 있으며, 여러 가지 탐색 변경 알고리즘을 지원해 주고 있다. vector와 같은 자료 구조에 삽입할 변수의 형이 정해지 있지 않고, 일반적인 형이라고 가정한 뒤 vector와 같은 컨테이너가 구현되어 있다. 즉 이 때는 C++언어의 템플릿 기능을 이용하고 있다. 이처럼 자료의 유형에 상관없이 구현되어 있기 때문에 generic이라고 말하기도 한다. 컨테이너?자료의 집합을 나타내는 클래스 템플릿이다. 각각의 컨테이너는 단위 작업에 필요한 시간복잡도에 의해 구분된다. 컨테이너 종류 ..
원형큐를 이용하는 이유 배열을 이용한 큐는 이미 사용한 영역인 front의 앞부분에 대해서 다시 활용을 못하기 때문에 메모리를 낭비하는 단점이 있음.이동 큐를 이용하여 큐가 다 찼을 경우 데이터를 앞쪽으로 이동시켜 사용하는 방법이 있지만 남아있는 모든 데이터를 모두 이동시켜야 한다는 불편한 작업을 수행해야 하기 때문에 비효율적임.원형 큐를 이용하게되면 이와 같은 단점을 보완하는 구조로 큐의 맨 끝과 맨 처음이 연결된 형태의 구조이기 때문에 이미 꺼내어 사용한 큐의 앞부분에 다시 데이터를 저장하여 재사용이 가능하기 때문에 선형큐보다 효율적임
template 사용할 때 C4042 error template 사용 중에 자꾸 맞는 문법인데 "C4042 저장소 클래스가 잘못되었습니다" 라는 오류가 나왔는데 알고봤더니 template 를 template로 썼던 것................. 아마 분명 이런 사람이 많을 것 같아 포스팅
함수 템플릿 C++은 여러 가지 개발 방법을 지원하는 멀티 패러다임 언어라고 하는데 적어도 다음 세 가지 방법으로 개발을 할 수 있다. ① 구조적 프로그래밍 : C언어에서와 마찬가지로 함수 위주로 프로그램을 작성할 수 있다. C++이 C언어의 계승자이므로 C언어의 개발 방법을 지원하는 것은 당연하다.② 객체 지향 프로그래밍 : 캡슐화, 추상화를 통해 현실 세계의 사물을 모델링할 수 있으며 상속과 다형성을 지원하기 위한 여러 가지 언어적 장치를 제공한다.③ 일반화 프로그래밍 : 임의 타입에 대해 동작하는 함수나 클래스를 작성할 수 있다. 객체 지향보다 재사용성과 편의성이 더 우수하다. 일반화 프로그래밍은 주로 C++ 템플릿에 의해 지원되며 C++ 표준 라이브러리가 일반화의 좋은 예이다. 템플릿은 C++이 일반화를 위해..
유닛 추상클래스 스타크래프트(StarCraft)라는 시뮬레이션 게임을 보면 아주 많은 유닛들이 등장한다. 갑자기 특정 게임 얘기를 꺼내 이 게임을 모르는 사람들은 당황스러울지도 모르겠지만 믿을만한 통계에 의하면 이 책을 읽는 사람의 96%는 스타크래프트를 해 본 적이 있고 나머지 3.8%는 해 보지는 않아도 게임을 알고는 있다고 하니 예를 들어도 무난할 것 같다. 게임에 등장하는 유닛들을 특성별로 클래스화한다면 아마 다음과 같은 계층이 만들어질 것이다. 실제로는 더 많은 중간 계층이 존재하겠지만 간단하게 개념적인 계층을 만들어 보자.모든 유닛들은 특징별로 뛰어 다니는 것들, 날아다니는 것들, 땅속으로 숨을 수 있는 것들로 일차 분류할 수 있다. Running 클래스에 속한 마린과 탱크는 땅 위를 아장 아장 걸어다니고 날..
추상클래스 하나 이상의 순수 가상 함수를 가지는 클래스를 추상 클래스(Abstract Class)라고 한다. 추상 클래스는 동작이 정의되지 않은 멤버 함수를 가지고 있기 때문에 이 상태로는 인스턴스를 생성할 수 없다. 추상 클래스를 사용하는 실제 프로젝트의 예를 들어 보자. 워드 프로세서의 문서를 분석하는 기능을 캡슐화하여 클래스로 만들고자 한다. 이 클래스는 문서를 순서대로 읽으면서 문서에 속한 문단, 도표, 그림 등등의 요소를 추출해 내며 이렇게 분석한 결과는 출력, 인쇄, 다른 문서 형식으로의 변환, 검색 등에 사용될 것이다. 많이 사용되는 아래한글과 워드 문서에 대한 분석 클래스를 작성한다면 아마도 다음과 같은 멤버 함수의 목록이 만들어질 것이다.문서라는 복잡한 대상을 분석하기 위해서는 메모리도 필요할 것이..