Basic

이 글은 PC 버전 TISTORY에 최적화 되어있습니다. 포스팅 순서1. 개념 및 구현2. 수도코드(pseudocode)3. 구현 및 최적화 서론 길찾기 알고리즘은 말 그대로 시작점과 목표점 사이의 최단 거리 길을 찾아주는 알고리즘입니다. RPG에서 벽 너머의 맵을 클릭했을 때 캐릭터가 최단거리로 파바박 움직이는 것이 바로 길찾기 알고리즘을 사용한 것이죠. 가장 많이 사용하는 A* (A star) 알고리즘을 알아보도록 하겠습니다. 이 알고리즘은 초보자들에게 좀 어려울 수 있죠. 인터넷에 있는 글들은 이미 A*에 대해서 기본 지식이 있는 사람들을 위한 글이 많지만 이 글은 초보자를 위한 글입니다. 또한 프로그래밍에 대한 것도 포함되어 있지 않습니다. (다음 포스팅에서 다루도록 하겠습니다.) 1. 탐색 영역..
이 글은 PC 버전 TISTORY에 최적화 되어있습니다. 타입 타입이란, 한글로 자료형입니다. int형, short형, float형, bool형, 객체 등이 있습니다.int a = 10;bool isKilled = false;Character human = new Character( ); 와 같이 변수를 선언할 때 앞에 붙여 사용합니다. 정적언어, 정적타입 모두 같은 의미로 쓰이고 있습니다. 쉬운 개념이므로 이 단어가 나왔을 때 쫄지 않기 위해 알아보도록 하겠습니다. ^^ 정적언어 정적언어라는 것은 위에서 언급한 '타입' 즉 자료형을 컴파일 시에 결정하는 것 입니다. 우리가 잘 아는('이름을 잘 아는') C, C#, C++, Java 등의 언어가 있습니다. 이들 언어는 변수에 들어갈 값의 형태에 따라 자..
· Basic/C#
이 글은 PC 버전 TISTORY에 최적화 되어있습니다. 이론 이전에 JAVA에서의 Static에 대해서 다뤘었습니다. C#도 같은 방식으로 통하니 Static에 대해 잘 모르신다면 먼저 보고 와주세요. 그럼 Static으로 어떻게 클래스 인스턴스를 의도적으로 한 개만 만들게 할 수 있을까요? 바로 생성자를 private로 선언하여 외부에서 new로 생성하지 못하게 하는 것 입니다. 실행코드 class Car { static public Car bumblebee = new Car("범블비"); // public 정적 필드 string _model; private Car(String model) { _model = model; } public void InformModel() { Console.WriteL..
본문의 내용을 토대로 이해한 것을 다시 작성 및 번역한 것입니다. 업데이트 패턴 1 의도 배열을 돌면서 객체 별로 한 프레임 단위의 일을 시키기 위함 2 동기 플레이어가 던전에 들어가 적들에게 다가갔다. 공격 받..지 않았다. 매 프레임마다 어떤 활동을 부여하지 않았기 때문입니다. 적을 좌, 우로 움직이는 간단한 코드를 보겠습니다. 1234567891011121314while (true){ // Patrol right. for (double x = 0; x 0; x--) { skeleton.setX(x); }} 위의 코드는 while문을 한 번 돌 때를 한 프레임이라고 치면 한 프레임에 좌, 우로 100번씩 200번을 움직이게 됩니다. 우리는 해골이 매 프레임 움직이며 유저 입력에 바로 바로 대응할 수 ..
· Basic/C++
이 글은 PC 버전 TISTORY에 최적화 되어있습니다. 서론 게임 프로그래밍 패턴 중 프로토타입패턴(정리해서 올려드리겠습니다. 불친절해서 죄송합니다.)을 공부하다 깊은 복사, 얕은 복사에 대한 개념이 부실하게 나와서 정리할 겸 글을 쓰게 됬습니다. 저한테는 생소한 개념이었던 C++에서의 복사 생성자, 얕은 복사와 깊은 복사에 대해서 알아보도록 하겠습니다. 1. 생성자2. 소멸자3. 복사 생성자4. 얕은 복사5. 깊은 복사 생성자 먼저 생성자가 없이 클래스를 초기화하는 방법을 아래의 코드를 예시로 보도록 하겠습니다. 간단하게 클래스 내의 private로 선언된 멤버변수들을 SetInfo() 메소드로 초기화를 하고 GetInfo() 메소드로 정보를 가져오는 것을 보실 수 있습니다. #include usin..
· Basic/Java
이 글은 PC 버전 TISTORY에 최적화 되어있습니다. 서론 이전에 안드로이드 메모리 관리 관련하여 Strong, Soft, Weak Reference에 대해 알아보면서 GC에 대해 살짝 언급한 적이 있습니다. Java의 가비지 컬렉터는 다양한 종류가 있지만 공통적으로 다음의 2가지 작업을 수행합니다.1. 힙(Heap) 내의 객체 중 Garbage를 찾아낸다.2. 찾아낸 Garbage 객체를 반환하여 메모리를 회수한다. 최초의 JAVA는 Garbage Collection 작업에 사용자가 관여하지 않도록 구현되었었지만, JDK 1.2 부터는 java.lang.ref 패키지를 통해서 GC와 어느정도 상호작용을 할 수 있도록 해주었습니다. 기존의 Strong reference 뿐 아니라 Soft, Weak,..
· Basic/Java
이 글은 PC 버전 TISTORY에 최적화 되어있습니다. 서론쉽게 이해할 수 있는 기본형(Primitive type) 데이터들의 형 변환처럼 객체 참조형(Object reference type)의 경우에도 형 변환이 이루어집니다. 서로 다른 클래스로부터 나온 인스턴스들의 형 변환의 규칙에 대해 공부해 보겠습니다. 객체 형 변환의 기초 Parent parent = new Child( ); 이 연산에서 왼쪽 항과 오른쪽의 객체의 유형이 서로 다른 경우, 두 유형이 상속 관계에 있고 Parent가 Child의 상위 클래스 인 경우에만 형 변환이 일어나게 됩니다. 즉, 하위 클래스에서 상위 클래스로 할당하는 것은 가능하나, 그 반대의 경우는 강제 형 변환을 해주어야 가능합니다. 이 경우에는 오류가 발생할 수 있..
· Basic/Java
이 글은 PC 버전 TISTORY에 최적화 되어있습니다. 서론 어디서든 편하게 공용으로 쓰는 변수를 Static으로 선언해서 사용하자. 라는 생각으로 간단하게 Static을 써왔던 분들이 많을 것 입니다. (필자도 마찬가지) 이번 편에서는 JVM과 관련지어서 Staic의 장, 단점을 알아보도록 하겠습니다. 인스턴스 변수와 클래스 변수와의 비교와도 상응하는 부분이겠죠. 자바의 변수 (클래스 변수, 인스턴스 변수, 지역 변수) JVM의 메모리 구조 Static의 장점[소스코드] class Work { static int CommonWork = 0; int SeveralWork =0; boolean isHwang = false; void doWork() { CommonWork++; SeveralWork++; ..
· Basic/Java
이 글은 PC 버전 TISTORY에 최적화 되어있습니다. 서론 자바 응용프로그램이 시작되면, 자바 가상 머신(Java Virtual Machine, JVM)은 프로그램 수행에 필요한 메모리를 할당 받고, 이 메모리를 관리합니다. 이에 대해 알아보도록 하겠습니다.자바의 변수 (클래스 변수, 인스턴스 변수, 지역 변수) JVM의 메모리 구조
· Basic/Java
이 글은 PC 버전 TISTORY에 최적화 되어있습니다. 선언 위치에 따른 변수의 종류 자바에서의 변수는 클래스 변수, 인스턴스 변수, 지역 변수가 있습니다. 변수의 종류를 결정짓는 것은 '변수가 선언된 위치' 입니다. 다음의 코드를 보면서 말씀드리겠습니다. 코드를 보시면서 어디가 클래스의 영역이고, 어디가 메서드 영역인지 구분하시길 바랍니다. public class test { int iv; // 인스턴스 변수 static int cv; // 클래스 변수 void method() { int lv; // 지역 변수 } } 위의 그림에는 모두 3개의 int 형 변수가 선언되어 있는데, iv와 cv는 클래스 내부에 선언되어 있으므로 멤버 변수입니다. 그 중 cv는 static으로 선언되었으니 클래스 변수이고..
에반황
'Basic' 카테고리의 글 목록 (3 Page)